Subject:
interpreting pikdev crash handler output
From:
"Maxim Wexler" ####@####.####
Date:
4 Sep 2006 01:25:17 +0100
Message-Id: <a0811460609031724q63193672j7c9f322164a43f2d@mail.gmail.com>
Hi group,
pikdev is still crashing. This time I got as far as loading a file, this
one:
; *******************************************
; This program for the PIC16F874 solves the following program
; specification:
; 1. Have the processor toggle Port A <4> repeatedly.
; *******************************************
;
; Filename: Toggle.asm
; Date: 31 January 2005
; File Version: 1
;
; Author: CDR Charles B. Cameron, USN
; Company: United States Naval Academy
;
;
; *******************************************
;
; Files required
;
; p16f874.inc
;
; *******************************************
; Notes:
; This program initializes PORT A <4> to 0. It then enters
; a perpetual loop, toggling the value of A<4> each time.
; *******************************************
list p=16f876 ; list directive to define processor
#include <p16f876.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC &
_WRT_ENABLE_ON & _LVP_ON & _CPD_OFF
; '__CONFIG' directive is used to embed configuration data within the .asm
file.
; The labels following the directive are defined in the 16f874.inc file.
; See the data sheet for additional information on the configuration word.
; The particular choice given above turns code protection off, watch dog
timer off,
; brown-out reset disabled, power-up timer enabled, HS oscillator mode
selected,
; flash program memory write disabled, low-voltage in-circuit serial
programming
; disabled, and data EE memory code protrection off. Other choices
; might be useful in certain circumstances. For example, if the watchdog
timer
; were in use, replacting _WDT_OFF with _WDT_ON would be appropriate.
;***** VARIABLE DEFINITIONS
; Bits within PORTA
ToggleBit equ B'00010000' ; Designates bit 4 of Port A.
; This is an open-drain output bit, so
; a pull-up resistor is needed.
TRISAMask equ B'11101111' ; Make bit 4 of PORT A an output.
; Leave the rest as input bits.
ADCON1InitMask equ B'00000110' ; Make all PORT A bits digital, not
analog
; *******************************************
ORG 0x000 ; Start with the processor's reset vector
clrf PCLATH ; Ensure page 0 is used
goto main ; Go to beginning of program
main
; *******************************************
; Initialize registers as required
; *******************************************
bcf STATUS,RP0 ; Select Bank 0
bcf STATUS,RP1
clrf PORTA ; Initialize Port A by clearing the output
latches.
; *******************************************
; Switch to Bank 1 and continue doing initializations.
; *******************************************
bsf STATUS,RP0 ; Select Bank 1
movlw TRISAMask ; Initialize direction pins for Port A
using TRISA.
movwf TRISA
movlw ADCON1InitMask ; Initialize the ADCON1 register to
control which
; Port A pins use analog inputs.
movwf ADCON1
bcf STATUS,RP0 ; Revert to Bank 0
;main()
; This is the main program. It does only one thing: toggle
PORTA<togglebit>
loop
movlw ToggleBit
xorwf PORTA,f
goto loop ; Repeat ad infinitum
; *******************************************
END ; directive to assembler: this is the end of
the program
And generating a hex file. Please note I'm using a *876.
When I click 'Program' pikdev crashes with this crash handler message:
Using host libthread_db library "/lib/libthread_db.so.1".
`system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols.
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 7869)]
[KCrash handler]
#6 0xb6b79bf9 in __gnu_cxx::__exchange_and_add ()
from /usr/lib/gcc/i686-pc-linux-gnu/3.4.6/libstdc++.so.6
#7 0x080803af in PicFactory::getPic (this=0x85af298,
picname=0x846fa50 "p12c508") at basic_string.h:219
#8 0x080739bd in PikMain::burnChipFile (this=0x823cdb0) at PikMain.cpp:826
#9 0x0807433a in PikMain::burnChip (this=0x823cdb0) at PikMain.cpp:739
#10 0x0809f553 in PikMain::qt_invoke (this=0x823cdb0, _id=79, _o=0xbfb13250)
at PikMain.moc.cc:251
#11 0xb64b467c in QObject::activate_signal (this=0x821cb40, clist=0x8241990,
o=0xbfb13250) at qobject.cpp:2355
#12 0xb64b44d4 in QObject::activate_signal (this=0x821cb40, signal=2)
at qobject.cpp:2324
#13 0xb70a890e in KAction::activated (this=0xffffffff) at kaction.moc:176
#14 0xb70a940a in KAction::slotActivated (this=0x821cb40) at kaction.cpp
:1102
#15 0xb70a8ac5 in KAction::slotButtonClicked (this=0x821cb40,
state=LeftButton)
at kaction.cpp:1147
#16 0xb70ac72d in KAction::qt_invoke (this=0x821cb40, _id=-1078905800,
_o=0xbfb133d0) at kaction.moc:220
#17 0xb64b467c in QObject::activate_signal (this=0x81ecc88, clist=0x81ed570,
o=0xbfb133d0) at qobject.cpp:2355
#18 0xb7171c35 in KToolBarButton::buttonClicked (this=0x81ecc88, t0=-1,
t1=LeftButton) at ktoolbarbutton.moc:154
#19 0xb7171df5 in KToolBarButton::mouseReleaseEvent (this=0x81ecc88,
e=0xbfb138f0) at ktoolbarbutton.cpp:479
#20 0xb64f7b05 in QWidget::event (this=0x81ecc88, e=0xbfb138f0)
at qwidget.cpp:4676
#21 0xb7171366 in KToolBarButton::event (this=0x81ecc88, e=0xbfb138f0)
at ktoolbarbutton.cpp:651
#22 0xb6444205 in QApplication::internalNotify (this=0xbfb13e10,
receiver=0x81ecc88, e=0xbfb138f0) at qapplication.cpp:2635
#23 0xb6443738 in QApplication::notify (this=0xbfb13e10, receiver=0x81ecc88,
e=0xbfb138f0) at qapplication.cpp:2421
#24 0xb6dcb035 in KApplication::notify (this=0xbfb13e10, receiver=0x81ecc88,
event=0xbfb138f0) at kapplication.cpp:550
#25 0xb63cbd0e in QApplication::sendSpontaneousEvent (receiver=0x81ecc88,
event=0xbfb138f0) at qapplication.h:494
#26 0xb63c3a50 in QETWidget::translateMouseEvent (this=0x81ecc88,
event=0xbfb13cb0) at qapplication_x11.cpp:4291
#27 0xb63c1318 in QApplication::x11ProcessEvent (this=0xbfb13e10,
event=0xbfb13cb0) at qapplication_x11.cpp:3442
#28 0xb63df295 in QEventLoop::processEvents (this=0x818b0a8, flags=4)
at qeventloop_x11.cpp:192
#29 0xb645b7a9 in QEventLoop::enterLoop (this=0x818b0a8) at qeventloop.cpp
:198
#30 0xb645b6c2 in QEventLoop::exec (this=0x818b0a8) at qeventloop.cpp:145
#31 0xb64443a7 in QApplication::exec (this=0xbfb13e10) at qapplication.cpp
:2758
#32 0x0807fd22 in main (argc=-1, argv=0xffffffff) at pikdev.cpp:87
I'm curious about "#7 0x080803af in PicFactory::getPic (this=0x85af298,
picname=0x846fa50 "p12c508") at basic_string.h:219"
According to
http://pikdev.free.fr/pikdev-api/html/d6/d9/classPicFactory.html the 12c508
is just an example they use but here it seems like a mistake and the program
was actually looking for a non-existent chip.
I note F1 comes up empty and there is no man pikdev. Are these add-ons?
Is it the __CONFIG line?
I'm trying to use Byron Jeff's "Trivial" programmer. But I couldn't find a
1uF cap for the RC terminator. Is there another RC combo I can use.
The smallest I've got is a 10uF e-lytic. (A long shot <gulp>)
-Maxim