Watchdog lehetőségek/hiba?

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Watchdog a szimulátorban

Hozzászólás Szerző: winnerbt »

Na, asszem megen belefutottam valamibe:
T45 Watchdog van használva timernek, mert elfogyott a többi.
A programszimulátorban mindig RESET-et ad a WD :(
1.11.9.8. ver, íme a tesztprogram:

Kód: Egész kijelölése

$regfile = "atTiny45.dat"
$crystal = 8000000

Config Watchdog = 2048
Start Watchdog
On Watchdog Wd_int
Wdtcr = &B01001000 'Hogy INTet adjon

Wait 1
Semmi:
Goto Semmi


Wd_int:
Set Wdtcr.6                                                 'WDIE=ENABLE, mindig INT legyen WD lejártakor
Return

End
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A WD az nem resetet hív automatikusan és időzítésre nem használható?
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Wdtcr.6 mondja meg, hogy mit tegyen. Ha ez=1, akkor WD leteltekor INT-re megy, ott azonnal ez a bit törlődik is, így a 2. WD idő már RESET-et csinál, ha nem írod újra 1-be. Így használom timernek. A ketyere működik is, de úgy látszik, a szimulátor ezt figyelmen kívül hagyja, de lehet, hogy javították már, vagy megen beletenyreltem egy bugba.
JAni
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Opsz, lehet hogy én ebbe futottam bele, csak a másik oldalról?

Na kipróbálom.....

Az újabb chipekben van ilyen... na jól szét is kutyultam bascom alatt a M168-as chipet....
Az arduino Bootloader bekavar, es a Watchdog indítása után, amikor leketyeg - a RESETre sem reagál! Na ilyet se láttam még..... Belekerül valami végtelen ciklusba, és úgymarad....
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A RESET kifagyasztása lehet watchdoggal?

ATMega168/328p-vel is kipróbálva.
Bootloader 16 MHz-s Arduino bootloader.
A beégetett program:

Kód: Egész kijelölése

$crystal = 16000000                                         'orajel
$regfile = "m168def.dat"                                    'chip
$baud = 9600

Wdtcsr = 0

Mcusr.wdrf = 0

Config Watchdog = 4096                                      '2 sec

Start Watchdog

Reset Watchdog

'Wdtcsr.wde = 1
'Wdtcsr.wdie = 0

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.7 , Db6 = Portb.0 , Db7 = Portb.1 , E = Portd.5 , Rs = Portd.4

Led Alias Portb.5
Config Led = Output
Reset Led

Speaker Alias Portb.2
Config Speaker = Output                                     'Hangszoro
Reset Speaker
On Wdt Wdtreset
Enable Wdt
Enable Interrupts

Dim Temp1b As Byte

   Initlcd
   Cls
   Print
   Sound Speaker , 100 , 1400                               'make some noice

   If Mcusr.0 = 1 Then Print "PowerOn reset"
   If Mcusr.1 = 1 Then Print "External reset"
   If Mcusr.2 = 1 Then Print "BrownOut reset"
   If Mcusr.3 = 1 Then Print "WatchDog reset"
   Mcucsr = 0

   Sound Speaker , 100 , 1400                               'make some noice
   Cls
   Set Led
   Lcd "WDStat..."
   Start Watchdog
   Locate 2 , 1
   For Temp1b = 1 To 10
      Lcd Temp1b
      Waitms 250
      Sound Speaker , 100 , 700                             'make some noice
   Next Temp1b

   End

   Wdtreset:
   Do
      Print "a"
   Loop
   Return
Ha nem piszkálom a chip WD regisztereit, akkor is ez az eredmény...
boot lemegy, főprogram elindul.
2sec letelik, és a chip végtelen ciklusba kerül, és a portb.5 LED vibrál (bootloader visszajelző).

Mit lessek meg - hibafelderítésnek?
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Véletlenül nem íródik át a WD osztója valami alacsony értékre és nagyon gyorsan ad reseteket? Vagy a WDTint nem állítja be a WDTint bitet és azonnal resetre fut, nem az INTre. Én lassan már mindent el tudok képzelni, csak már nagyon sok idő megy el a szívásokra...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Megfejtve!

Az Arduino Bootloadere figyeli a WatchDog jeleket és az őrül meg tőle. Bootloader nélkül gyönyörűen megy a program:).
Szóval a hiba nem a Bascomban, hanem az Arduino bootladerében van (M168 ill M328p chipek esetén teszteltem).
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A WatchDog mint időzítő tetszik:)

Kód: Egész kijelölése

$crystal = 16000000                                         'orajel
$regfile = "m168def.dat"                                    'chip
$baud = 9600

Config Watchdog = 512
On Watchdog Wd_int
Enable Interrupts
Enable Wdt

Start Watchdog

Print "mcusr" ; Bin(mcusr)
Print "wdtcsr" ; Bin(wdtcsr)
'WDIE - Watchdog INT: Enable
'WDE - Watchdog Reset Enable

Led Alias Portb.5
Config Led = Output
Reset Led

Do
   nop
Loop

Wd_int:
'Set Wdtcr.6
'WDIE=ENABLE, mindig INT legyen WD lejártakor
'ha ez nincs: a 2. leketyegés esetén RESET
Toggle Led
Return

End
Avatar
muszer
Biztosítékgyilkos
Hozzászólások: 50
Csatlakozott: 2009. december 28. hétfő, 7:00

Hozzászólás Szerző: muszer »

Sziasztok!

Lenne egy kérdésem, idevág a WatchDog témához.
A végével kezdem. Atmeg88-ról van szó és elkezdett melegedni, de rendesen ám.
Írtam egy akkutöltő programot. Gondoltam bekapcsolom a WD-t, hogy biztos ami biztos nehogy túltöltés legyen a vége, valami kósza akármitől.
WD-t beállítottam 2048ms-ra, és 10ms-onként reszeteltem, vagyis akartam....
Még a biztositékbiteknél is bekapcsoltam a WD-t. (lehet nem kellett volna?)
Majd ki is kapcsoltam...
Ezek után a procin tojást lehet sütni, de működik. Lehet írni, olvasni, fut rajta amit rátöltök.
El lehet rontani a WD-gal egy processzort??
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A WD-vel elvileg nem.
A 2helyen bekapcsolás sem lehet gond....


Más gond lesz ott....
Avatar
muszer
Biztosítékgyilkos
Hozzászólások: 50
Csatlakozott: 2009. december 28. hétfő, 7:00

Hozzászólás Szerző: muszer »

igen én is így gondoltam.
de semmi sem történt, a chip bent a helyén, működik a program, majd szoftverfrissítés wd bekapocsolásosra, és jött a melegedés.
egy dolog volt ami nem szokványos, program feltöltés alatt az int0-ra mentek megszakítások, mert menet közben frissítettem....
lehet itt rontottam el...
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Az INT0=PorD.2 ezen a Procin. A Programozás pedig a PortB.3-5 + Reset lábakon történik.
És olyankor a megszakítások le vannak tiltva.

Valahol máshól lehet a hiba!

:?:
Avatar
muszer
Biztosítékgyilkos
Hozzászólások: 50
Csatlakozott: 2009. december 28. hétfő, 7:00

Hozzászólás Szerző: muszer »

ez így van ahogy írod.
itt megállt az én tudásom. :)
a melegedő atmegát kivettem a helyéről, kicseréltem egy másikra, tökéletesen működik a szoftver (wd nélkül) és a töltőm is.
a hibás atmega kivéve, magában tesztelve is melegszik, amellett, hogy írható,olvasható, és tesztprogram rátöltve működik.

gyűjtök egy kis bátorságot, és ismét nekiállok a wd-nek. :)

tudna valaki mellékelni egy kis mintaprogramot, amiben látható
a wd kezelése? (konfigolás, indítás, reset, leállítás)

nagyon köszönöm a hozzászólásokat!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Válasz küldése