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



Teraz jest 21 mar 2026, o 15:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 3 lis 2015, o 09:39 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Dzień dobry.
Mam taki problem - otóż chcę za pomocą Atmegi8 sterować mostkiem H i silnikami DC. Chcę to zrobić przy pomocy zwykłego pilota z odbiornikiem. Pilot ma 4 przyciski i każdemu przyciskowi odpowiada jeden pin na odbiorniku pilota. Po wciśnięciu przycisku A na pilocie, na pinie A pojawia się stan wysoki, jak puszczam przycisk to pojawia się stan niski, itd. dla każdego przycisku. Odbiornik zasilany z 5V. Na początku, do celów testowych, korzystam z jednego przycisku pilota
Algorytm jest prosty - odbiornik wysyła stan wysoki na pin PB0 to silnik ma zacząć się kręcić. Pojawia się stan niski - silnik przestaje się kręcić.
Kiedy obsługuję to wydarzenie poprzez najprostsze podanie na pin PB0 stanu wysokiego to działa jak należy. Silniki obsługiwane przy pomocy mostka L293DNE i z jego obsługą nie ma żadnego problemu. Oto kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Program zrobiony jak powyżej działa dobrze, silniki się kręcą. Ale chciałbym to umieścić w przerwaniu. Algorytm również prosty: wysyłam pilotem stan wysoki na pin PB0 -> przerwanie od zbocza narastającego -> włączenie/wyłączenie silników -> zmiana zbocza wywołującego przerwania. Jednak tu mam problem, bo atmega w ogóle nie reaguje mi na podanie zbocza narastającego. Oto kod:

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

No i powyższy kod nie działa, zero reakcji. Gdzie może być błąd?
Proszę uprzejmie o wskazówki i pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2015, o 18:06 
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

Używasz ICR1 jako maksymalną wartość timera, a to powoduje, że funkcja ICP1 jest odłączona i nie wywoła przerwania. Masz do dyspozycji INT0 i INT1 spróbuj z nich skorzystać.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2015, o 20:52 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Aa, no tak. Na INT0 działa elegancko.
Mam jednak jeszcze jedno pytanie - jeśli spróbuję użyć dwóch przerwań, które korzystają z tych samych rejestrów (tak jak próbowałem z PWM i ICP1) to ZAWSZE jedno przerwanie po prostu nie zostanie włączone?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2015, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Przerwania zewnętrzne INT0 i INT1 mogą działać jednocześnie. INT0 i INT1 to dwa osobne moduły, a nie tak jak w przypadku Timera1 - jeden timer, kilka trybów pracy, które to tryby nie zawsze mogą działać jednocześnie. A to, że bity konfiguracyjne obu przerwań leżą w tych samych rejestrach nie ma żadnego znaczenia.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2015, o 19:37 
Offline
Użytkownik

Dołączył(a): 07 paź 2015
Posty: 79
Pomógł: 0

Teraz rozumiem :) Dziękuję uprzejmie za odpowiedź i pozdrawiam.



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 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