Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Sre Jul 11, 2012 7:17 pm Naslov sporočila: Mega32 in Watchdog |
|
|
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 |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.38 Kraj: Ljubljana
|
Objavljeno: Sre Jul 11, 2012 7:34 pm Naslov sporočila: |
|
|
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 |
|
 |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Sre Jul 11, 2012 8:02 pm Naslov sporočila: |
|
|
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 |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.68 Kraj: KOPER
|
Objavljeno: Sre Jul 11, 2012 8:45 pm Naslov sporočila: |
|
|
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 |
|
 |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Sre Jul 11, 2012 10:11 pm Naslov sporočila: |
|
|
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 |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.68 Kraj: KOPER
|
Objavljeno: Čet Jul 12, 2012 7:58 am Naslov sporočila: |
|
|
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 |
|
 |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Čet Jul 12, 2012 10:29 am Naslov sporočila: |
|
|
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 |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Jul 12, 2012 12:30 pm Naslov sporočila: |
|
|
Na interne bite s posebnimi funkcijami se sicer ne spoznam, a morda bi pomagal
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 |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.38 Kraj: Ljubljana
|
Objavljeno: Čet Jul 12, 2012 1:18 pm Naslov sporočila: |
|
|
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 |
|
 |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Čet Jul 12, 2012 2:06 pm Naslov sporočila: |
|
|
Vlado, bom preizkusil. Hvala!
Nazadnje urejal/a ssdzkrez Čet Jul 12, 2012 2:27 pm; skupaj popravljeno 2 krat |
|
Nazaj na vrh |
|
 |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Čet Jul 12, 2012 2:10 pm Naslov sporočila: |
|
|
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 |
|
 |
rudiP Član

Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 5.68 Kraj: KOPER
|
Objavljeno: Čet Jul 12, 2012 8:43 pm Naslov sporočila: |
|
|
Ponujena koda sigurno dela. Menjaj AVR z drugim tipom pa probaj. _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
 |
ssdzkrez Član



Pridružen-a: Sre 12 Jan 2011 15:13 Prispevkov: 401 Aktiv.: 2.28 Kraj: Hrastnik
|
Objavljeno: Pet Jul 13, 2012 9:35 am Naslov sporočila: |
|
|
Hvala vsem za odgovore ... jutri letim po novo mego. |
|
Nazaj na vrh |
|
 |
|