PIC problem

Jeg roder med et program på en pic16f628. Desværre virker det som om den til tider resetter sig selv.

Det kan være efter 20 programgennemløb eller efter 20 cycles - det varierer. Det ene øjeblik kører programmet fejlfrit, så ændrer jeg lidt i det (totalt simpelt, fex tilføjer movlw 0x10, movwf TMP) og det går totalt i coma!

Jeg er nybegynder med PIC så lidt hints om hvilke åbenlyse fælder der findes vil blive påskønnet :)

Jeg kører den med den interne 4Mhz oscillator, intern _mclear pull-up (bruger porten) og bruger hverken interrupts eller timere (endnu).

Mvh Roberto

Reply to
Roberto Saldo
Loading thread data ...

Kender den desværre ikke. Men indtil der kommer mere kvalificerede forslag:

Check evt. reset pin: Er den korrekt pullet? Check forsyning/afkobling er den OK? Har du styr på en evt watchdog?

/Anders

Reply to
Anders F

"Roberto Saldo" skrev i en meddelelse news:42ac511f$0$199$ snipped-for-privacy@dread12.news.tele.dk...

Det kunne være et WATCHDOG-problem - jeg lavede selv denne "fejl" ved mit første program - slå den fra, hvis du ikke skal bruge den.

Mvh KS

Reply to
KS

Nope :)

Mange tak!

Reply to
Roberto Saldo

Jeg har ikke styr på om der er en watchdog. Skal se efter.

Mange tak.

Reply to
Roberto Saldo

Okay, har tilføjet '& _WDT_OFF' til mit CONFIG ord og håber det bedste :)

Mvh Roberto

Reply to
Roberto Saldo

Og det havde desværre ingen effekt.

Mvh Roberto

Reply to
Roberto Saldo

Kender ikke lige den PIC, men alligevel... At det nogle gange virker, kan godt være et støj/afkoblingsproblem. Er din forsyning afkoblet? (Både en stor lyt og små kodensatorer mellem Vdd og Vss helt oppe ved benene).

Virker det hvis du indsætter NOP's (No OPerations) i koden? Eller kan du singlesteppe dig igennem programmet? Hvis det får programmet til at virke, kan det meget vel være et støjproblem.

/Simon

Reply to
Simon Børresen

Det lyder meget plausibelt.

10uF før regulatoren og 470nF efter. Jeg har 100nF direkte imellem Vdd og Vss.

Det ændrer på symptomerne.

Det vil jeg undersøge, der er jo heller ikke nogen der siger det skal være nemt :)

Mvh Roberto

Reply to
Roberto Saldo

Jeg har oplevet noget tilsvarende hvis mit program har en størrelse tæt på max.

Reply to
FK

Virker dit program i software simulatoren ?

Mvh Per Hansen

Reply to
Per Kofod Hansen

...

Der bruges under 400 words, der er plads til 2048 i en 16f628.

Mvh Roberto

Reply to
Roberto Saldo

Hmmm, jeg bruger gputils og picprog (linux), kender ikke til nogen simulator :)

Mvh Roberto (livet er for kort til windows)

Reply to
Roberto Saldo

Livet er for kort til IKKE at bruge simulator:

formatting link

Bo //

Reply to
Bo Bjerre

Du har sikkert ret.

Glimrende, vil afprøve den ved først kommende lejlighed, mange tak.

Mvh Roberto

Reply to
Roberto Saldo

gpsim har jeg selv brugt med success på linux. Det kan ikke betale sig kun at bruge lysdiodder til debug. MPlabs ICD er også ganske nyttig, men den virker kun i mplab til windows.

Mvh Per Hansen

Reply to
Per Kofod Hansen

"Roberto Saldo" skrev i news:42ac511f$0$199$ snipped-for-privacy@dread12.news.tele.dk

Der kan være mange årsager til den fejl. Som andre også nævner er en mulighed WDT. en anden fejl som jeg ofte har set er stackpointer overflow (der er kun plads til 8 hop) , så hvis du har mange call samt int. rutiner er det en oplagt fejl mulighed. Der er også rig mulighed for forkert opsatte porte.

Prøv at poste din program kode.

-- Hilsen Peter N Petersen

formatting link
Privat
formatting link
Firma

Reply to
15kw

Helt sikkert

Jeg har (tror jeg) lukket for wdt, med '& _WDT_OFF'

Ingen int, få kald, men det er da muligt jeg selv har lavet en fejl.

Jeps

Åh det er jo ret intimt, jeg har den ikke her så det bliver senere.

Mvh Roberto

Reply to
Roberto Saldo

"Roberto Saldo" skrev i en meddelelse news:d8jkq0$es5$ snipped-for-privacy@news.net.uni-c.dk...

Det burde du også have. Jeg tror dog godt du kan enable WDT igen fra assembler, hvis du ikke har helt styr på opsætning af registerne. Prøv evt. at tilføje en linie med assemblerkoden clrwdt i din hoved programløkke. Så er du i hvertfald sikker på at få "klappet hunden".

Reply to
Allan Soerensen

Jeg kunne også lave en handler og enable wdt'en. Hvordan gør man det? Er det som en interruptrutine?

Mvh Roberto

Reply to
Roberto Saldo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.