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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 lip 2025, o 10:53


    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 ] [ Zaznacz wszystko ]
    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

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

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    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: 27415
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 9 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