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 5 maja 2025, o 10:11


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 12 gru 2012, o 08:15 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    Witajcie.
    Muszę pod atmegę 162 podłączyć wyjście impulsowe z licznika energii elektrycznej oraz hallotron od podajnika pieca
    Chyba najlepszym rozwiązaniem będzie wykorzystanie przerwań PCINT0 na halotron i PCINT1 do licznika energii, ponieważ sprzętowe są już zajęte.
    Niestety nie wiem jak skonfigurować te przerwania , bo dotychczas korzystałem tylko z sprzętowych.
    Próbowałem tak
    Kod:
    //konfiguracja przerwania PCINT
       PCMSK0 |= (1<<PCINT0);
       GICR |= (1<<PCIE0);

    ale eclipse krzyczy
    Obrazek

    Możecie czy podpowiedzieć :
    - czy dobrze się zabieram za konfigurowanie przerwań,
    - dlaczego edytor eclipse krzyczy o błędach

    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 gru 2012, o 09:33 
    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

    Dobrze robisz. Co do ostrzeżeń to zrób Project Clean i potem Build.
    Jeśli chodzi o te przerwania to ponieważ są zgrupowane po 8 to najlepiej użyć po jednym z każdej grupy, wtedy mają osobny wektor przerwania PCINT0_vect (PCINT0...PCINT7) i PCINT1_vect(PCINT8...PCINT15) i wówczas nie trzeba badać który z pinów jest źródłem przerwania. Te przerwania są wywoływane przy obydwu zboczach sygnału.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 gru 2012, o 14:52 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    czyli jeżeli dobrze to rozumiem, to w PCMSK0 i PCMSK1 przestawiam odpowiednie nóżki na przerwania
    Następnie w GICR włączam reagowanie na te przerwania
    i na koniec do SREG |= 0x80 ?
    Kod:
    PCMSK0 |= (1<<PCINT7);
    PCMSK1 |= (1<<PCINT15);
    GICR |= (1<<PCIE0);
    GICR |= (1<<PCIE1);
    SREG |= 0x80;


    To pozwoli mi na obsługę przerwań tak abym nie musiał się martwic o detekcję konkretnej nóżki z przerwaniem ?
    Kod:
    ISR( PCINT0_vect ) {
       //obsługa dla nóżki 32 (PA7)
    }

    ISR( PCINT1_vect ) {
       //obsługa dla nóżki 28 (PC7)
    }

    czy powyższa konfiguracja będzie działać ?

    Co do eclipse, to niesttety clean nie pomogło.
    Nie mam pomysłu co może być przyczyną.
    Wygląda tak, jakby definicje tych rejestrów nie były znane



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 gru 2012, o 15:00 
    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

    Powyższa konfiguracja będzie działać.
    Co do Eclipse to zmień procesor na inny i z powrotem na atmega162.


    Autor postu otrzymał pochwałę

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 gru 2012, o 15:08 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    porada z zmiana procesora rozwiązała problem :)

    co do konfiguracji przerwań , to po testach dam znać co i jak



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 11:20 
    Offline
    Użytkownik

    Dołączył(a): 02 sie 2012
    Posty: 43
    Lokalizacja: Jabłonna
    Pomógł: 0

    po wstepnych testach dzialaja ( bo czemu niby nie mialyby dzialac) przerwania tak jak chcialem.
    Zmodyfikowalem tylko nieco zapis
    Kod:
    PCMSK0 |= (1<<PCINT7); //pin32
    PCMSK1 |= (1<<PCINT15);//pin28
    GICR |= (1<<PCIE0) | (1<<PCIE1);

    oraz zamiast ustawiania SREG wywołuje w kodzie sei() czyli właczenie przerwań.

    dziekuje wszystkim za pomoc.

    Pozdr



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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