Tezke zacatky s PIC, debugging

Milan Cizek cizek.milan@seznam.cz
Sobota Srpen 29 14:48:10 CEST 2009


Ahoj,
snazim se vymyslet nejaky uzitecny program s PIC16F627 a teplotnim cidlem
DS1820, pro zacatek. Mam tam i nejake další věci, seriovou komunikaci RS232,
moznost posilat prikazy z terminalu, jejich identifikaci podle tabulky v
EEPROM a nasledne akce. Tohle mi uz funguje velmi dobře, problem mam ale s
tou teplotou (ostatne jako spousta lidi). :-) Zacal jsem to tedy nejak ladit
a mam zajimave poznatky a spoustu dotazu, asi i dost obecnych...

Napred se mi to chovalo dost divne, při pousu cist teplotu mi program
nejspis zatuhl, LED indikujici stav na 1wire zustala svitit (normalne ji po
par ms schazuje TMR0 v preruseni). Trochu jsem tedy program doupravil podle
inspirace z internetu a uz to nedela. Souvislost ale nechapu, jelikoz jsem
doplnil pouze master reset pulse na konec rutiny cteni teploty.

Chtel jsem se pokusit v MPLABu nejak podivat, co se tam vlastne deje. Prisel
jsem na to jak poslat v simulaci znaky na UART, ale nedokazu uz nasimulovat
provoz na 1-wire. Lze to nejak přes stimulus? Neexistuje třeba nejaky
generator/plugin?

Vratil jsem se tedy k ladeni "naostro" a do programu si doplnil debug
hlasky, které se mi posilaji po RS232 do PC. Nechapu, proc se mi krom mych
hlasek posilaji další odpovedi, ja si posilam byte, ale jakoby se vždy ještě
zavolal 16x jiny podprogram, který mi 16x posle odpoved. Znaky posilam přes
makro, preruseni jsem povypinal co slo. Dela to jen z toho podprogramu na
teplotu, posilani z jiné casti progamu je ok. Uz si s tim nevim rady, je to
magie. :-( Na konci mi sice prijde LSB a MSB byte, oba ale vzdy stejne.

Banky se snazim prepinat prehledne, vse jede v BANK0 a pokud potrebuji,
prehodim do BANK1 ale hned jak to jde vracim na vychozi BANK0. Tady by snad
problem byt nemel.

Premyslel jsem, jak je to vlastne s volanim/vnorovanim podprogramu. Lze
zavolat (call) podprogram, který zavola (call) další podprogram? Pokud by se
navratove adresy ukladaly do stejneho registru, problem by to byl. Zadny
takovy pripad ale ve svém kodu nevidim.

Existuje nejaky free, nejlepe pascal compiler? Nasel jsem mikroPascal, ale
tam je limit na hex 2kB, coz uz prekracuji.

Dekuji za cenne rady.
Pokud by se někdo chtel třeba podivat primo na zdrojak, samozrejme poskytnu.

Milan




Další informace o konferenci Hw-list