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



Teraz jest 29 mar 2024, o 01:23


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