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



Teraz jest 27 lis 2024, o 20:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 30 mar 2014, o 16:56 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 16 kwi 2013
Posty: 3
Pomógł: 0

Witam, mam problem z poprawnym działaniem Timera1 w mikrokontrolerze ATmega16 8Mhz.
Przejrzałem kilka wątków na forum z podobnym problemem, Timer i Przerwanie wygląda na dobrze skonfigurowane, mimo to, Dioda zamiast zmieniać stan co 1s, zmienia go co około 8s w dodatku zmiana wartość OCR1A nie wpływa na częstotliwość przełączania.

Poniżej zamieszczam Kod, bardzo proszę o sprawdzenie. Dziękuję.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 17:11 
Offline
Użytkownik
Avatar użytkownika

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

Bit WGM12 znajduje się w rejestrze TCCR1B a nie w TCCR1A.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2014, o 18:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Poza tym co powiedział kolega wyżej, nie zapisuj tak :

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


gdyż jeżeli projekt byłby większy, to miałbyś kłopot. Zapis powinien wyglądać tak:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2014, o 17:00 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 16 kwi 2013
Posty: 3
Pomógł: 0

Bardzo dziękuję,
Mam jeszcze jedno pytanie odnośnie przerwań i timerów. Piszę program sterownika silnika krokowego.
Posiadam obecnie dwa wektory przerwań, jedno odpowiada ze regularne przełączanie kroków silnika TIMER1 . Drugie jest odpowiedzialne za obsługę enkodera/impulsatora TIMER0. Przy dużej częstotliwości przełączania kroków czasami przy kręceniu impulsatorem silnik na chwile zatrzymuje się, wraca do normalnej pracy po około 2 sekundach. Wygląda to tak jakby przerwanie od impulsatora kolidowało z tym odpowiedzialnym za przełączanie kroków i kolejne przerwanie występuje dopiero po przepełnieniu licznika TIMERa1. Próbowałem z tym walczyć blokując przerwania funkcją cli(); a na jego końcu znowu je odblokowywać funkcją sei(); niczego to jednak nie zmieniło. Czy jest jakaś możliwość ustawienia priorytetów przerwań?
Dziękuję i Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2014, o 20:13 
Offline
Użytkownik
Avatar użytkownika

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

Pokaż kod bo tak to trudno cokolwiek wywróżyć.



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