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



Teraz jest 21 mar 2026, o 14:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
 Tytuł: Przerwania
PostNapisane: 16 lip 2015, o 20:11 
Offline
Nowy

Dołączył(a): 06 cze 2015
Posty: 22
Pomógł: 0

Witam, morduje już przerwania prawie tydzień czasu. Rozdział w BB z timerami znam już prawie na pamięć jednak nie mogę czegoś zrozumieć. Mianowicie według AVR Timer Kalkulatora takie ustawienie Timera powinno wywoływać przerwanie co 1ms. Wiec napisałem taki kod. Jednak dioda miga co 10 s nie co 1s . Proszę o pomoc.
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  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 20:32 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

A jakie taktowanie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 20:38 
Offline
Nowy

Dołączył(a): 06 cze 2015
Posty: 22
Pomógł: 0

8 Mhz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 20:39 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Zapomniałeś o TCNT0 = 226 w obsłudze przerwania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 20:40 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

8000000/256/256=122Hz czyli 0,008s * 1000 = 8s - z grubsza



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 20:51 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Możesz ładowanie rejestru zmniejszyć do 225 bo:
8000000/256/30 = 1041,66666666667
8000000/256/31 = 1008,06451612903



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 20:57 
Offline
Nowy

Dołączył(a): 06 cze 2015
Posty: 22
Pomógł: 0

ciamciak mógłbyś wyjaśnic jak sobie policzyc taki czas Twoim sposobem ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 21:02 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Czas masz generalnie dobrze policzony, tylko raz inicjujesz rejestr przed pętlą główną: TCNT0 = 226, czyli liczysz do 30.
Potem w przerwaniu nie zapisujesz rejestru, tylko liczysz do 255 tak jak ci policzył kolega Ciamciak.



Ostatnio edytowano 16 lip 2015, o 21:29 przez jerrylu, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 21:03 
Offline
Nowy

Dołączył(a): 06 cze 2015
Posty: 22
Pomógł: 0

Jerrylyu rzeczywiście dodanie TCNT0 w obsłudze przerwania pomogło. A mógłbyś mi przybliżyć te swoje obliczenia ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 21:09 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Ale sobie wyliczyłeś sam przecież te 226 :)
Taktowanie procesora = 8000000
Preskaler = 255 - czyli pierwszy podział.
Potem dzielisz przez 255 (jesli nie inicjujesz rejestru TCNT0 - liczy do przepełnienia 8 bitowego - tak było bo nie inicjowałeś go w każdym przerwaniu ponownie)
Jesli go inicjujesz liczbą to liczy do 255 - liczba (czyli u ciebie 255-225 = 30) - drugi podział
Mam nadzieję, że jasno to opisałem.

------------------------ [ Dodano po: 3 minutach ]

Wynik masz w tysięcznych częściach sekundy, czyli w milisekundach.
Ponieważ if co 1000 jest spełniony, to masz co ok. sekundę zmiane stanu diody.

------------------------ [ Dodano po: 9 minutach ]

Zajrzyj do Mirka. On to w BB wyjaśnia chyba najbardziej "łopatologicznie".


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 21:22 
Offline
Nowy

Dołączył(a): 06 cze 2015
Posty: 22
Pomógł: 0

Dziękuje Panowie teraz już wiem dokładnie o co chodzi. Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Przerwania
PostNapisane: 16 lip 2015, o 21:30 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Cieszę się, że mogłem pomóc. Pozdrówka.



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

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