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 w 2025? 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 23 maja 2025, o 02:45


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
    Autor Wiadomość
    PostNapisane: 6 sty 2023, o 23:36 
    Offline
    Nowy

    Dołączył(a): 20 mar 2018
    Posty: 6
    Pomógł: 0

    Dzień dobry.

    Na mikrokontrolerze ATtiny13 robię taką małą zabawkę, symulację świateł drogowych. Zasilam wszystko z baterii 3V dlatego potrzebuję ograniczyć pobór prądu. Problem mam z Wybudzaniem procka, przerwanie mam podłączone do INT0 i wzbudzanie przerwania zboczem narastającym działa, ale już przy wybudzaniu procesora z uśpienia już nie działa. Czytałem gdzieś, że aby wybudzić procka zbocze musi być odpowiednio długie. Natomiast wybudzanie procka przez ciągły stan niski działa jak trzeba, procek się wybudza, ale działa na poziom niski a ja fizycznie podłączyłem guzik tak, że aktywacją przepuszcza stan wysoki.

    Pytanie moje jest takie: jak to zrobić żeby działało? Jak zrobić żeby zbocze narastające działało albo jak zrobić żeby przerwanie reagowało na stan wysoki?

    A kod wygląda tak:

    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.


    Pozdrawiam Kacper



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 sty 2023, o 01:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1034
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Zgodnie z notą:

    Obrazek

    Wybudzenie procka może być tylko poziomem logicznym "0" (ISC01 i ISC00 = 00 w rejestrze MCUCR) lub dowolną logiczną zmianą poziomu logicznego na tym wejściu (ISC01 i ISC00 = 01)


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 sty 2023, o 12:19 
    Offline
    Nowy

    Dołączył(a): 20 mar 2018
    Posty: 6
    Pomógł: 0

    Zmiana poziomu logicznego też nie działa. W trakcie migania czerwoną diodą zapala zieloną ale nie wybudza procesora ze stanu uśpienia.

    Zastanawiam się teraz tylko nad jednym, bo przerwanie stanem niskim wybudzają procka a ja potrzebuję żeby działały na stanie wysokim. Czy negacja stanu niskiego zadziała czy może będzie tak, że najpierw procesor się wybudzi stanem niskim a dopiero po wybudzeniu będzie negował działanie przycisku na stan wysoki. Jeśli tak to procek będzie się cały czas wybudzał i nie będzie żadnej oszczędności energii.

    W przypadku gdy jestem skazany na stan niski do wybudzania procka to jedyne wyjście to chyba fizyczne przerobienie płytki w taki sposób żeby przycisk przepuszczał stan niski. Mam rację?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 sty 2023, o 15:38 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1034
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Atmel trochę niejednoznacznie to napisał w nocie więc może faktycznie tylko stan niski potrafi wybudzić procka ze stanu PowerDown, ale z tego co tutaj jest napisane:
    Obrazek
    Jeszcze powinno zadziałać przerwanie PCINT więc do samego wybudzania możesz spróbować tego...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 sty 2023, o 20:06 
    Offline
    Użytkownik

    Dołączył(a): 13 lut 2012
    Posty: 174
    Pomógł: 10

    Nie mam wolnego attiny13.
    A co się stanie jeśli w ISR wpisze się tylko:
    {
    cli();
    sleep_disable();
    LEDG_TOG;
    }
    a w pętli while dopisze sie np. przed LEDR_OFF;

    sei();



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2023, o 14:12 
    Offline
    Nowy

    Dołączył(a): 20 mar 2018
    Posty: 6
    Pomógł: 0

    Z PCINT mam znowu inny problem. ISR (PCINT_vect) wywala mi warning w eclipsie "warning: 'PCINT_vect' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr]" Pisze ten program na podstawie poradnika Mirka "AVR Przerwania dla początkujących" z tym, że on pisał pod atmege328. Attiny13 ma inne nazwy rejestrów i i zastanawiam się czy dobieram dobre odpowiedniki tych rejestrów ale wygląda jak dla mnie wszystko ok. Obecnie program z przerwaniem PCINT działa dziwnie, tak jak by się wszystko resetowało. Po uśpieniu procek się wybudza, ale nie zapala diody zielonej. Tak samo w trakcie migania czerwonej diody widać, że resetuje jej miganie i także nie zapala zielonej diody.

    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.


    W komentarzach zostawiłem zwykłą obsługę przycisku żeby sprawdzić czy działa i tak działa.[/syntax]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2023, o 14:32 
    Offline
    Moderator
    Avatar użytkownika

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

    kacperos_89 napisał(a):
    Attiny13 ma inne nazwy rejestrów

    Przecież w Eclipse masz AVR Device explorer - wystarczy wybrać attiny13 i podejrzeć jak nazywają się wektory przerwań - pokazuję to w wielu poradnikach


    Autor postu otrzymał pochwałę

    _________________
    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: 8 sty 2023, o 14:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1973
    Lokalizacja: Lipsko
    Pomógł: 125

    O ile dobrze pamiętam tylko zbocze opadające bez problemu wybudza procka na int0. Robiłem kilka projektów z usypianiem i wybudzanie zawsze robiłem guzikirm do masy. Zawsze działało :)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2023, o 14:42 
    Offline
    Użytkownik

    Dołączył(a): 13 lut 2012
    Posty: 174
    Pomógł: 10

    Jeśli używasz MkClispe to trzeba znać nazwę pliku nagłówkowego procka i sprawdzić w
    wybierz katalog "Dokumenty" a następnie:
    MkClipse\AVR Toolchain\avr\include\avr
    dla ATtiny13a jest to "iotn13a.h"
    a w nim:
    /* Interrupt vectors */
    .....
    #define PCINT0_vect _VECTOR(2) /* External Interrupt Request 0 */
    .....

    czyli PCINT0_vect powinno być właściwym wpisem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2023, o 15:02 
    Offline
    Nowy

    Dołączył(a): 20 mar 2018
    Posty: 6
    Pomógł: 0

    @mirekk36
    No tak. A najlepsze jest to, że mam to okienko cały czas po prawej stronie jak polecałeś :) w ISR (PCINT_vect) trzeba dopisać 0 żeby było ISR (PCINT0_vect) i nagle brak warningów. Zielona dioda się zapala jak powinna i przerwanie ładnie wybudza procka :)

    Dziękuję za pomoc :)

    @SylwekK
    Jeśli chodzi o INT0 to zbocza nie działają do wybudzania procka, tylko stan LOW czyli (0<<ISC01)|(0<<ISC00). Testowałem już zbocza i jeśli chodzi o INT0 to nic nie budziło procka po za stanem LOW

    @JarekK
    Używał eclipsa wedle porad ;P. Wskazówka z AVR Device Explorer wyjaśniła mi wszystko.

    Jeszcze raz dziękuję za pomoc.
    Następnym razem postaram się lepiej przemyśleć, które piny w jakim kierunku i w jaki sposób użyć zanim złoże jakiś układ :) Na swoją obronę dodam, że miałem to zaprogramować w Arduino ale nie poszło.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sty 2023, o 20:10 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1973
    Lokalizacja: Lipsko
    Pomógł: 125

    Stanem wysokim nie wybudzisz. Jak chcesz możesz się posiłkować moim rozwiązaniem, które działa niezawodnie. Baterie raz włożyłem i jeszcze działa - parę km już zrobiła :)

    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.

    _________________
    http://www.sylwekkuna.com



    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 25 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO