Atmega8 i tryb uspienia

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
solar1
-
Posty: 14
Rejestracja: 27 kwie 2008, 8:05
Lokalizacja: Banino

Atmega8 i tryb uspienia

Post autor: solar1 » 24 cze 2008, 14:16

W jaki sposob mam uspic atmege8l tak aby co np 1/2 sekundy watchog wybudzala ja z trybu uspienia nie resetujac jej oczywiscie?
Chce zrobic urzadzenie zasilane bateryjnie.. a jak wiadomo maly pobor pradu jest tu konieczny...
Staram sie pisac w c. :) z tym ze jak juz nie raz zaznaczalem - raczkuje w tym temacie

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Re: Atmega8 i tryb uspienia

Post autor: RcTomek » 24 cze 2008, 20:12

solar1 pisze:W jaki sposob mam uspic atmege8l tak aby co np 1/2 sekundy watchog wybudzala ja z trybu uspienia nie resetujac jej oczywiscie?
To jest niemożliwe; watchdog właśnie służy do tego, aby resetować mikrokontroler.
Możesz wprowadzić ATmegę w tryb Idle i co poł sekundy budzić ją przerwaniem od któregoś timera/licznika. Zobacz do karty katalogowej, rozdział "Power Managment and Sleep Modes".

solar1
-
Posty: 14
Rejestracja: 27 kwie 2008, 8:05
Lokalizacja: Banino

Post autor: solar1 » 25 cze 2008, 6:00

Nie masz racji - jest to mozliwe..
przewertowalem note katalogowa i jedyne co sie zgadza to to ze dla atmegi8l wtd nie generuje przerwania.... ale juz w nowszych atmegach wtd generuje przerwanie - musze przesiasc sie na atmege88 czy 48... z tym ze nadal nie wiem jak poprawnie posutawiac bity w wdt

Awatar użytkownika
RcTomek
Moderator
Posty: 243
Rejestracja: 27 wrz 2007, 21:15
Lokalizacja: Głogów / Wrocław

Post autor: RcTomek » 25 cze 2008, 11:04

solar1 pisze:Nie masz racji - jest to mozliwe..
przewertowalem note katalogowa i jedyne co sie zgadza to to ze dla atmegi8l wtd nie generuje przerwania.... ale juz w nowszych atmegach wtd generuje przerwanie - musze przesiasc sie na atmege88 czy 48... z tym ze nadal nie wiem jak poprawnie posutawiac bity w wdt
Wiem, ale pisałeś o m8, dlatego stwierdziłem, że nie ma takiej możliwości :)
Chociaż możesz spróbować rozwiązać problem w inny sposób. ATmega8 posiada rejestr MCUCSR, który zawiera informację o tym, co spowodowało reset mikrokontrolera. Na początku kodu, przed inicjalizacją, trzeba by było badać stan flagi WDRF w MCUCSR i na podstawie tego wykonać ewentualny skok do programu głównego omijając inicjalizację. Dlatego też można wprowadzić uC w tryb Power-Down i budzić go przy pomocy WDT nie resetując mikrokontrolera.

ODPOWIEDZ