www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Mega32 in Watchdog

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Sre Jul 11, 2012 7:17 pm    Naslov sporočila:  Mega32 in Watchdog Odgovori s citatom

Pozdrav vsem!

Težavo imam pri ohranitvi WDRF bita po izvedenem resetu watchdoga. Ko se AVR resetira se WDRF zastavica ne pstavi na 1. Poizkusil sem oba ukaza bascomovega "Wdt_bit = Peek(0)" in ASM "sts {wdt_bit},r0". Program v osnovi deluje ... ko se zažene WDT ga v času 2s resetiram s tipko. Kakšna ideja kje ga lomim?

Primer programa:

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Dim Wdt_bit As Byte

'sts {wdt_bit},r0
Wdt_bit = Peek(0)

Config Watchdog = 2048
Start Watchdog

Print "WDT test Mega32"

If Wdt_bit.wdrf = 1 Then
Print "WDT reset!!!"
Wait 2
End If

Do
Debounce Pind.7 , 0 , Resetwdt , Sub
Loop

End

Resetwdt:
Reset Watchdog
Print "Reset Watchdog"
Return
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 563
Aktiv.: 2.38
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jul 11, 2012 7:34 pm    Naslov sporočila:   Odgovori s citatom

Hmm,
tako kot imaš v programu ti vedno ostane na razpolago manj kot 48ms za reset watchdog-a.
Citiram:
If Wdt_bit.wdrf = 1 Then
Print "WDT reset!!!"
Wait 2
End If

odstrani Wait 2, za reset watchdog-a pa uporabi ukaz Reset Watchdog.

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Sre Jul 11, 2012 8:02 pm    Naslov sporočila:   Odgovori s citatom

Sem v zanko "If Wdt_bit.wdrf = 1" dodal "Stop watchdog" in zbrisal Wait 2. Zadeva deluje enako. WDRF zastavica se po resetu ne ohrani. Študiram pdf.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.68
Kraj: KOPER

PrispevekObjavljeno: Sre Jul 11, 2012 8:45 pm    Naslov sporočila:   Odgovori s citatom

Meni dela tako:


Koda:

Dim Bwd As Byte
Dim Wdbit As Bit
Bwd = Peek(0)
If Bwd.3 = 1 Then             ' there was a WD overflow
   Set Wdbit                  'store the flag
End If


To imam napisano takoj po deklaracijah !

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Sre Jul 11, 2012 10:11 pm    Naslov sporočila:   Odgovori s citatom

Hmn ... in še vedno ne deluje. Ima mogoče kakšno vezo s tem, da delam prek Bootloaderja? V pdf nikjer ne piše nič o tem ... oz. ne najdem.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.68
Kraj: KOPER

PrispevekObjavljeno: Čet Jul 12, 2012 7:58 am    Naslov sporočila:   Odgovori s citatom

Probaj tako:

Koda:

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Dim Bwd As Byte
Dim Wdbit As Bit
Bwd = Peek(0)

If Bwd.3 = 1 Then             ' there was a WD overflow
   Set Wdbit                  'store the flag
End If

Config Watchdog = 2048
Start Watchdog

Print "WDT test Mega32"

If Wdbit = 1 Then Print "WDT reset!!!"

'-------------------------------------------------------------------------------

Do
   Reset Watchdog
   Debounce Pind.7 , 0 , Setwdt , Sub
Loop

'-------------------------------------------------------------------------------

Setwdt:
    Print "Set Watchdog"
    Wait 3
Return

End

_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Čet Jul 12, 2012 10:29 am    Naslov sporočila:   Odgovori s citatom

Rudi hvala za pomoč, ampak meni še vedno ne deluje. Tudi tvoja koda ne. Watchdog deluje normalno, po dveh sekundah se izvede reset, razen, če ne resetiram WDT. Ne vem zakaj si kontroler ne zapomni WDRF bita po izvedenem resetu. Zadevo testiram na Minipinu. Našel sem tudi primer na spletni strani Sveta elektronike, ampak zadeva tudi ne deluje. Pred časom sem WDT že uporabljal na kašen način pri 2313, tam nisem imel težav. Iščem naprej ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Jul 12, 2012 12:30 pm    Naslov sporočila:   Odgovori s citatom

Na interne bite s posebnimi funkcijami se sicer ne spoznam, a morda bi pomagal
Koda:
$noramclear

v programu

_________________
Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 563
Aktiv.: 2.38
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jul 12, 2012 1:18 pm    Naslov sporočila:   Odgovori s citatom

Preizkusil sem program, pri meni BWD.3 postavi na 1 po WDT resetu.
V kodo sem dodal še izpis bin vrednosti BWD.
Izpis iz terminala:
Citiram:
BWD=00000011
WDT test Mega32
HARD RESEST!!
Set Watchdog
BWD=00001011
WDT test Mega32
WDT reset!!!
Set Watchdog
BWD=00001011
WDT test Mega32
WDT reset!!!


Koda:
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

Dim Bwd As Byte
Dim Wdbit As Bit
Bwd = Peek(0)
 Print "BWD=" ; Bin(bwd)

If Bwd.3 = 1 Then             ' there was a WD overflow
   Set Wdbit                                                'store the flag
   Else
   Reset Wdbit
End If

Config Watchdog = 2048
Start Watchdog

Print "WDT test Mega32"

If Wdbit = 1 Then Print "WDT reset!!!"

If Wdbit = 0 Then Print "HARD RESEST!!"

'-------------------------------------------------------------------------------

Do
   Reset Watchdog
   Debounce Pind.7 , 0 , Setwdt , Sub
Loop

'-------------------------------------------------------------------------------

Setwdt:
    Print "Set Watchdog"
    Wait 3
Return

End
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Čet Jul 12, 2012 2:06 pm    Naslov sporočila:   Odgovori s citatom

Vlado, bom preizkusil. Hvala!

Nazadnje urejal/a ssdzkrez Čet Jul 12, 2012 2:27 pm; skupaj popravljeno 2 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Čet Jul 12, 2012 2:10 pm    Naslov sporočila:   Odgovori s citatom

Hmm, izgleda, da ima Bootloader vendarle nekaj pri tem. Jaz sem pa na terminalu dpbil tole:

Citiram:

BWD=00000010
WDT test Mega32
HARD RESEST!!
Set Watchdog
ţBWD=00000010
WDT test Mega32
HARD RESEST!!
BWD=00000010
WDT test Mega32
HARD RESEST!!


BWD.3 bit je postavljen še vedno na 0.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rudiP
Član
Član



Pridružen-a: Tor 07 Avg 2007 15:30
Prispevkov: 1234
Aktiv.: 5.68
Kraj: KOPER

PrispevekObjavljeno: Čet Jul 12, 2012 8:43 pm    Naslov sporočila:   Odgovori s citatom

Ponujena koda sigurno dela. Menjaj AVR z drugim tipom pa probaj.
_________________
Lep pozdrav iz Kopra Rudi
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ssdzkrez
Član
Član



Pridružen-a: Sre 12 Jan 2011 15:13
Prispevkov: 401
Aktiv.: 2.28
Kraj: Hrastnik

PrispevekObjavljeno: Pet Jul 13, 2012 9:35 am    Naslov sporočila:   Odgovori s citatom

Hvala vsem za odgovore ... jutri letim po novo mego.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group