Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 16 gru 2025, o 19:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 1 cze 2013, o 13:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Witam. Próbuję zrobić usypianie i wybudzanie atmega16.
Usypianie wygląda na to że działa ale wybudzanie nie bardzo. opierałem się na kodzie z programu ale nie bardzo wiem jak się za te wybudzanie zabrać. Wydaje mi się że przerwanie wybudza atmege ale się tak nie dzieje. Do INT2 mam podłączone bezpośrednio VCC.

Taki krótki programik mam w tej chwili:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 15:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27445
Lokalizacja: Szczecin
Pomógł: 1045

Jeżyk-1 napisał(a):
opierałem się na kodzie z programu


no no po takim zdaniu wszyscy do okoła radośnie wiedzą na jakim programie opierałeś swoje doświadczenia ;) nie obrażaj się - ale to już jest szczyt skrótowego pisania na forum ;)

Druga sprawa, nie opieraj się na jakichś tam (nie wiemy jakich nawet programach) tylko na nocie PDF procesora ... a tam jest WYRAŹNIE jak BYK napisane że wybudzanie z najgłębszego uśpienia zapewnia tylko i wyłącznie przerwanie ustawione do sterowania POZIOMEM (niskim zresztą) .... tymczasem zajrzyj w tą samą notę PDF i sprawdź czy INT2 daje ci taką możliwość.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 20:12 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nie zgodzę się z Mirkiem. INT2 jest w stanie wybudzić procesor z PowerDown. A co do programu to w funkcji obsługi przerwania kasowanie flagi nie jest potrzebne, bo w momencie wywołania procedury obsługi przerwania flaga jest sprzętowo zerowana. Proponuje za to wstawić tam tymczasowo mignięcie LEDem.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 20:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Opierałem się na programie z projektu pilota na podczerwień.
Zaglądałem do noty katalogowej na stronie 33 jest opis trybu uśpienia dla atmegi16.
Taka jest jego treść:
Cytuj:
When the SM2..0 bits are written to 010, the SLEEP instruction makes the MCU enter Powerdown
mode. In this mode, the External Oscillator is stopped, while the External interrupts, the
Two-wire Serial Interface address watch, and the Watchdog continue operating (if enabled).
Only an External Reset, a Watchdog Reset, a Brown-out Reset, a Two-wire Serial Interface
address match interrupt, an External level interrupt on INT0 or INT1, or an External interrupt on
INT2 can wake up the MCU. This sleep mode basically halts all generated clocks, allowing operation
of asynchronous modules only.
Note that if a level triggered interrupt is used for wake-up from Power-down mode, the changed
level must be held for some time to wake up the MCU. Refer to “External Interrupts” on page 68
for details.
When waking up from Power-down mode, there is a delay from the wake-up condition occurs
until the wake-up becomes effective. This allows the clock to restart and become stable after
having been stopped. The wake-up period is defined by the same CKSEL Fuses that define the
reset time-out period, as described in “Clock Sources” on page 25.


I tu nie widzę że wybudzanie jest poziomem niskim. Jedynie INT0 i INT1 zewnętrznym poziomem przerwania (co do końca nie wiem o co tu chodzi) lub zewnętrznym przerwaniem INT2.

Krauser napisał(a):
Nie zgodzę się z Mirkiem. INT2 jest w stanie wybudzić procesor z PowerDown. A co do programu to w funkcji obsługi przerwania kasowanie flagi nie jest potrzebne, bo w momencie wywołania procedury obsługi przerwania flaga jest sprzętowo zerowana. Proponuje za to wstawić tam tymczasowo mignięcie LEDem.


Jeżeli jest taka możliwość to gdzie zrobiłem błąd że nie wybudza mi?
W układzie nie mam możliwości w tej chwili podłączyć diody LED spróbuję mrugnąć podświetleniem LCD, efekt powinien być ten sam?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 20:49 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27445
Lokalizacja: Szczecin
Pomógł: 1045

Krauser napisał(a):
Nie zgodzę się z Mirkiem. INT2 jest w stanie wybudzić procesor z PowerDown


No i dobrze się kolega ze mną nie zgodzi .... ja wprawdzie zawsze używałem INT0 lub INT1 mają na uwadze możliwość wybudzania poziomem niskim (a przecież INT2) nie ma takiej możliwości .... i być może dlatego nawet nie zerknąłem do noty PDF a tam jest jak BYK napisane pod tabelką, że:

Cytuj:
3. Only INT2 or level interrupt INT1 and INT0.


aż sobie to zaraz przetestuję i dzięki Krauser za tą uwagę.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 21:03 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Cytuj:
W układzie nie mam możliwości w tej chwili podłączyć diody LED spróbuję mrugnąć podświetleniem LCD, efekt powinien być ten sam?

Druga opcja testu to znaczne uproszczenie pętli głównej. Umieść tam tylko mignięcie i uśpienie. Po każdym wybudzeniu będzie od razu widać.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 21:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Doczytałem w nocie na stronie 69 odnoście reakcji na zboczeprzerwanie. I domyślnie jest reakcja na zboczę opadające. Więc zmieniłem na zbocze narastające :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I to chyba wystarczyło bo zadziałało :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 21:17 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27445
Lokalizacja: Szczecin
Pomógł: 1045

taki prosty kod działa, nie trzeba nawet zmieniać domyślnego stanu zbocza INT2

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 1 minucie ]

oczywiście jak już usypiasz procka to warto wyłączyć komparator analogowy żeby nie podżerał prądu ;)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A jakiego procesora używasz ? Bo u mnie taka konfiguracja jest dla trybu power save?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2013, o 22:22 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27445
Lokalizacja: Szczecin
Pomógł: 1045

Jeżyk-1 napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A jakiego procesora używasz ? Bo u mnie taka konfiguracja jest dla trybu power save?


ok no wiadomo to ustaw po swojemu dla swojego procka - ja mam ATmega32 pod ręką (jak zwykle najczęściej)

------------------------ [ Dodano po: 2 minutach ]

ale żeby się nie bawić w pojedyncze ustawianie bitów lepiej korzystać z makr zdefiniowanych w sleep.h czyli np

set_sleep_mode(SLEEP_MODE_PWR_DOWN);

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2013, o 07:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 306
Pomógł: 0

Ja mimo wszystko i tak skonfigurowałem go do trybu power-save bo mi zegar nie działał w tym trybie P.D.
Tylko że w moim przypadku z power-down nie wybudzę go bez ustawienie bitu ISC2 w rejestrze MCUCSR, Gdy jest ustawiony to działa tylko jak pisałem wcześniej zegarek się zatrzymuje w tym trybie. A w Pover-save rzeczywiście nie istotne jest czy go ustawię czy nie działa dla obu konfiguracji :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO