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



Teraz jest 15 kwi 2026, o 21:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 29 lip 2014, o 19:49 
Offline
Użytkownik

Dołączył(a): 17 mar 2013
Posty: 143
Lokalizacja: Bydgoszcz
Pomógł: 2

Witam.

Mam problem z kodem programu. Do pinu F5 XMegi128A3U mam podpięty przycisk wywołujący przerwanie INT0. O tak:

Obrazek

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


I kod po wywołaniu przerwania:

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


Problem polega na tym, że gdy przyciskam przycisk to wszystko jest ok. Wywołuje się raz przerwanie i na terminualu wyświetla się napis "on".
Natomiast, gdy puszczam przycisk coś jest nie tak ponieważ przerwanie wywołuje się 2 razy. 2 razy wyświetla się napis "off".
I nie chodzi tu raczej o drgania styków ponieważ nawet jak dam opóźnienie _delay_ms(1000) to i tak "off" wyświetli się zawsze 2 razy.

Obrazek

Pytanie: gdzie zrobiłem babola ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2014, o 20:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Może to kwestia ustalenia poziomu (PORT_ISC_LEVEL_gc), a nie zbocza (PORT_ISC_FALLING_gc) jako zdarzenia (nie chodzi mi tu o Event'y ;)) generującego przerwanie...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2014, o 20:11 
Offline
Użytkownik

Dołączył(a): 17 mar 2013
Posty: 143
Lokalizacja: Bydgoszcz
Pomógł: 2

PORT_ISC_LEVEL_gc używam ze względu na to, że domyślnym stanem przycisku jest "wciśnięty" a domyślnym stanem uC uśpiony. Po zwolnieniu przycisku uC będzie się budził. A z tego co wiem budzenie możliwe jest to tylko stanem niskim. Oczywiście zmiana na PORT_ISC_FALLING_gc by pomogła. Ale nie mogę jej użyć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2014, o 20:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Zgadza się asynchronicznie może wybudzić jedynie poziom sygnału.
Nie mam w takim razie niestety innego pomysłu czym to może być spowodowane... :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lip 2014, o 20:21 
Offline
Użytkownik

Dołączył(a): 17 mar 2013
Posty: 143
Lokalizacja: Bydgoszcz
Pomógł: 2

atmel napisał(a):
Zgadza się asynchronicznie może wybudzić jedynie poziom sygnału.
Nie mam w takim razie niestety innego pomysłu czym to może być spowodowane... :(


Tak czy inaczej dziękuję za pomoc bo to pozwala posunąć się o krok naprzód i zadać kolejne pytanie "dlaczego z PORT_ISC_FALLING_gc działa poprawnie a z PORT_ISC_LEVEL_gc nie działa poprawnie.

Poniżej screen po użyciu PORT_ISC_FALLING_gc. Niestety jak pisałem ze względu na budzenie nie mogę go użyć i używam PORT_ISC_LEVEL_gc :(

Obrazek



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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