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



Teraz jest 29 mar 2026, o 20:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 15 lis 2014, o 19:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 maja 2013
Posty: 562
Lokalizacja: Bydgoszcz
Pomógł: 23

Mam sobie ustawione przerwanie zewnętrzne od czujnika na INT1 wyzwalane zboczem narastającym, wszystko elegancko się wykonuje ikramentując mi zmienią, której to wartość sobie procesor odpowiednio zlicza, a następnie prezentuje to wyświetlaczu.

Chciałbym jednak np. uzyskać informacje kiedy czujnik przestaje "nadawać" przez co przerwanie się nie wykonuje i wówczas miała by się np. zapalić dioda, czy wyświetlić napis itp. Wiadomo wspomniany licznik przestanie liczyć i się zatrzyma jednak bym chciał mieć dodatkową informacje. Nie mam po prostu pomysłu jak to w kodzie opisać, jakie warunki zrobić w związku z czym zwracam się do was z prośbą o radę.

Używam procesora Atmega 644. Załączam fragment programu dotyczący ustawienia przerwania.

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


Robiłem już różne swoje pomysły, powołując dodatkowe zmienne typu flaga zwiększając je w przerwaniu a resetując w pętli głównej itp. lecz coś mi nie wychodzi. Wiem że jest też coś takiego jak sprzętowa flaga "EIFR –External Interrupt Flag Register" ale w sumie nie wiem czy to może służyć do tego celu, a jak tak to jak z niej skorzystać w programie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 19:26 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Chyba powinieneś zastosować coś w rodzaju watchdoga
Może na innym timerze?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 19:28 
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

Dodaj timer0, który sobie zlicza do maksimum lub wartości w OCR0, ale nim to nastąpi to funkcja obsługi przerwania INT1 wyzeruje mu licznik w normalnym przypadku. Jak impulsy przestaną dochodzić to timer wygeneruje przerwanie od przepełnienia lub zrównania i tam możesz zapalić LED.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2014, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 27 maja 2013
Posty: 562
Lokalizacja: Bydgoszcz
Pomógł: 23

Krauser rewelacja dziękuje :) działa super ;) proste i funkcjonalne oto mi własnie chodziło. Temat do zamknięcia.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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