Stänga av shadow under alla calls och return, PIC18F442?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
nanopile
Inlägg: 312
Blev medlem: 9 april 2006, 17:06:50
Ort: Stockholm

Stänga av shadow under alla calls och return, PIC18F442?

Inlägg av nanopile »

Skulle vilja att shadowregistren i PIC18F442 inte påverkas alls när man gör en call.
Man kan ju skriva ", 0" på slutet av varje rad i programmet men jag har ju redan gjort runt 500 rader innehållande call och hittar inget sätt att göra det automatiskt så man inte missar någon enda liten rad.
Ideer?
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Såhär kan du finna call-raderna som saknar ett komma:

Kod: Markera allt

>grep -n -H call main.c | grep -v ,
Det ger detta svar:

Kod: Markera allt

main.c:7:call label4
main.c:9:call label5
Om det körs på en main.c som ser ut såhär:

Kod: Markera allt

call label1, 0
nop
call label2, 0
nop
call label3, 0
nop
call label4
nop
call label5
nop
call label6, 0
nop
(Om du vill göra sökningen på alla filer i mappen kan du byta ut main.c mot en asterisk. Lägg till -r så söks rekursivt i alla filer i undermapparna.)

Det går säkert att fixa så att ", 0" läggs till på raderna som saknar men det vet jag inte hur man gör.
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Det går att göra med texteditorer som kan spela in macron, t.ex. Crimson Editor. Sök först efter 'call' och gå till början av den raden. Spela sedan in: <F3> <end> <,> < > <0>. Håll in ALT+1 (som är snabbtangenterna för det första inspelade macrot) tills ", 0" är tillagt i hela filen.
nanopile
Inlägg: 312
Blev medlem: 9 april 2006, 17:06:50
Ort: Stockholm

Inlägg av nanopile »

Tackar, den där Crimson Editor var en bra sak.
Lyfter på hatten :)

Blev lite förvånad när du skrev om C eftersom jag programmerar i assembler men jag kan ju inte gärna förvänta mig att folk ska vara tankeläsare hehe.
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Ojdå =) c-filen innehöll dock assemblersyntax... =) Varsågod.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Man kan ju skriva ", 0" på slutet av varje rad...

Eller inget alls. "0" är default.
Vad är det för problem du försöker fixa ?
nanopile
Inlägg: 312
Blev medlem: 9 april 2006, 17:06:50
Ort: Stockholm

Inlägg av nanopile »

Oj, jag läste fel i databladet.
Kunde ha svurit på att det stod 1=default.

Case closed, problemet löst.

Det jag försökte göra var att lista ut var i programet jag har felet som gör att programräknaren hamnar fel och börjar från 0x0000 igen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK. :-)

Att du hamnar på h'0000' igen kan bero på olika saker.
- En RESET instruktion i koden (inte sannolikt).
- Watchdog timeout. Inte troligt om WDT inte är "på".
- Runaway code, d.v.s att din kod snurrar iväg tills PC "slår runt" till h'0000'.
- BOR. Finns STATUS flaggor som talar om ifall det var det.
- Extern MCLR reset. Finns STATUS flaggor för det också.

Finns säkert några orsaker till...
Skriv svar