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



Teraz jest 28 lut 2026, o 20:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 31 sty 2016, o 19:10 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Robię sobie taki układzik na avr Atmega 644. Chciałem w nim wykorzystać tryb oszczędzania energii Power Down.Ale mam problem gdy procesor z tego trybu się wybudza. Generalnie jest tak że po włączeniu zasilania dla AVR program zaczyna się wykonywać od funkcji inicjalizacyjnej zawartej w:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


potem przechodzi do nieskończonej pętli i wykonuje program właściwy:

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

Problem pojawia się gdy AVR wybudzę ze stanu uśpienia ponieważ zaczyna on ponownie wykonywać najpierw funkcję inicjalizujacą i potem znowu dalej właściwy program. Problem w tym że ja chce aby funkcja inicjalizacyjna została wykonana tylko po załączeniu zasilania a nie po wyjściu z uśpienia.Chciałbym mieć też zachowane wartości zmiennych z pamięci. Nie wiem może powinienem zastosować inny tryb uśpienia. Możecie mi podpowiedzieć jak to rozwiązać.

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 19:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Zrób flagę która nie będzie kasowana przez power down i sprawdzaj jej stan przed pętlą nieskończoną.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




Pamiętaj o wyłączaniu peryferiów!!!



Ostatnio edytowano 31 sty 2016, o 19:44 przez icer_cmg, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 19:41 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Tak myślałem ale normalne flagi sie kasują a tak ja ty napisałeś ta deklaracje flagi to nie kumam jak ją użyć potem w warunku możesz mi napisać jak to użyć w warunku IF().

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Raz kiedyś używałem takiej procedury, troszkę już nie pamiętam. Dodatek noinit powoduje zachowanie wartości zmiennej podczas wybudzania. Potam ją sprawdzasz i albo masz 0 czyli zwykłe włączenie albo 1 i wybudzenie. Powiem tak - gotowca nie podam bo nie pamiętam, ale dałem trop - na pewno znajdziesz odpowiedź.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 20:27 
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

To co powyżej jest w porządku, gdy wybudzasz za pomocą resetu procesora. A przecież można wybudzać przy pomocy przerwania i wtedy cała pamięć jest zachowana. Power down to zatrzymanie taktowania procesora i dopóki jest napięcie zasilania zawartość RAM nie jest tracona. Dla procesora ATMEGA644PA mogą to być przerwania od INT0, INT1, INT2, zmiany stanu dowolnego pinu(PIN Change), odebrania adresu gdy procesor jest układem slave I2C i od watchdoga.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 20:56 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Kolego Krauser ja wybudzam własnie przerwaniem int2 i nie wiem dlaczego układ zachowuje sie tak jak opisalem czyli tak jak bym mu zasilanie odłączył czyli wykonuje ta funkcje inicjalizacja i potem leci dalej. Pewnie coś źle robię ale to pierwszy projekt z użyciem uśpienia.

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 21:35 
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

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


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2016, o 22:40 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Sprawdziłem Twój przykładowy programik.Działa prawidłowo.Ja mam programik trochę bardziej rozbudowany i muszę go jeszcze po analizować bo pewnie gdzieś mam byka.Dzięki.

_________________
http://mojekonstrukcje.pl/



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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