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



Teraz jest 24 kwi 2024, o 23:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 18 mar 2017, o 16:30 
Offline
Nowy

Dołączył(a): 18 mar 2017
Posty: 3
Pomógł: 0

Cześć,

Mam mały problem z obsługa przerwania wywołanego przez Timer. Napisałem wszystko zgodnie z instrukcją z podręcznika, a samo przerwanie jakby nie wykonywało się. Dla pewności dodałem tam inkrementację zmiennej i IF'a w pętli głównej.

Atmega 168, taktowanie w eclipse 1MHz (w MkAvrCalculator mam ustawione fuse bity uproszczone na 8MHz i nie mogę tego zmienić, może to ma wpływ na odliczanie czasu przez timer?)
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.

Czy ma ktoś pomysł, co tu może być źle? Juz próbowałem zamieniać wektory przerwań i zero efektu. Z moich wyliczeń przerwanie powinno odbywać się jakieś 10 razy na sekundę...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2017, o 16:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

Rafal_3695 napisał(a):
może to ma wpływ na odliczanie czasu przez timer?)

No nie może a na pewno ma wpływ na odmierzany czas, Przecież sam preskaler timera jest napędzany tym samym zegarem co sam procek...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2017, o 16:55 
Offline
Nowy

Dołączył(a): 18 mar 2017
Posty: 3
Pomógł: 0

Tylko mam problem, ponieważ ustawiając w eclipsie taktowanie 8MHz mam błąd przy wgrywaniu programu na mikrokontroler. Jeśli za to dodam w zakładce OTHER -B375 (jak przy taktowaniu 1MHz) to problem znika, ale procesor zachowuje się 8 razy wolniej. Nie działa mi taktowanie 8MHz tak, jak pokazał to Mirekk na filmie. Czy ktoś się z tym spotkał? Fusy uproszczone wgrałem jak w instrukcji...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2017, o 17:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1021
Lokalizacja: Trójmiasto
Pomógł: 189

Odpal MkAvrCalcculator i kilkniuj w przycisk "Sprawdź podłączony AVR", a następnie przejdź do zakładki fusy uproszczone i sprawdź jaki ustawiony jest zegar. Bo mi to wygląda na 1Mhz a nie 8Mhz.
Nad opcjami wewnętrznego oscylatora masz opcję CKDIV8 - wyłącz ją! (jest to opcja która dodatkowo dzieli częstotliwość wewnętrznego oscylatora przez 8 co przy ustawieniu 8Mhz daje właśnie 1Mhz)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2017, o 17:14 
Offline
Użytkownik

Dołączył(a): 31 lip 2016
Posty: 154
Pomógł: 4

Rafal_3695 napisał(a):
Tylko mam problem, ponieważ ustawiając w eclipsie taktowanie 8MHz mam błąd przy wgrywaniu programu na mikrokontroler. Jeśli za to dodam w zakładce OTHER -B375 (jak przy taktowaniu 1MHz) to problem znika, ale procesor zachowuje się 8 razy wolniej. Nie działa mi taktowanie 8MHz tak, jak pokazał to Mirekk na filmie. Czy ktoś się z tym spotkał? Fusy uproszczone wgrałem jak w instrukcji...


W zakładce masz jeszcze bit CKDIV8 usuń tego ptaszka.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2017, o 17:34 
Offline
Nowy

Dołączył(a): 18 mar 2017
Posty: 3
Pomógł: 0

Dzięki wielkie, pomogło. Ciągle mam jednak problem z tym timerem. Ustawiłem go nawet jak w książce na 200Hz, a moja zmienna ani drgnie w instrukcji przerwania. Podmieniałem nawet timery i dalej to samo. Z noty katalogowej korzystam zgodnej. Czy ma ktoś jakiś pomysł? Czy podczas przejrzenia mojego kodu Waszym, doświadczonym okiem coś ewidentnie kuje w oczy?

EDIT:

Problem rozwiązany!

Otóż w Atmedze 168/328, aby ustawić preskaler trzeba użyć takiej komendy:

TCCR0A |= (1<<WGM01); //ustawienie timera w tryb CTC
TCCR0B |= (1<<CS02) | (1<<CS00); //preskaler 1024

Jeśli przy wyborze tego zegara ustawiam bit WGM01 (tryb CTC) w rejestrze TCCR0A, to ustawienie bitów preskalera musi się odbyć w rejestrze B.
Takie info znalazłem na zagranicznym forum i zresztą zgadza się to z notą, której jak widać super szczegółowo nie przejrzałem... mój błąd.

Dziękuję za pomoc raz jeszcze!



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 1 gość


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