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



Teraz jest 30 mar 2026, o 01:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 27 kwi 2014, o 13:34 
Offline
Użytkownik

Dołączył(a): 18 kwi 2014
Posty: 25
Pomógł: 0

Witam!
Chcę uruchomić programowo zewnętrzny rezonator kwarcowy 12MHz, który będzie wykorzystywany prze timer0 do generowania przerwań typu przepełnienie. Ustawiam następujące bity:
Kod:
TCCR0B |= (1<<CS02) | (1<<CS01) | (1<<CS00);
TIMSK0 |= (1<<TOIE0);

na początku programu dyrektywę:
Kod:
#define F_CPU 12000000UL

oraz takie samo taktowanie w opcjach projektu. Niestety przerwanie nie jest generowane w programie. Gdy jako źródło taktowania ustawię wewnętrzny rezonator wtedy program działa bez zarzutu. Co powinienem jeszcze skonfigurować? Wykluczam złe podłączenie kwarcu gdyż korzystam z kupionej płytki testowej. Dodam że jest to Atmega328P.



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

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Chyba zmieszaniu uległy pewne rzeczy:

Co to znaczy uruchomić programowo zewnętrzny rezonator?
Albo układ działa na żródle taktowania wewnętrzym, albo na zewnętrznym (kwarc, generator TTL).
Programowo nie da się zmienić źródła taktowania. Robi się to przez ustawianie fusebitów.
Chyba, że chodzi Ci o tryb asynchroniczny Timera2, ale chyba nie....

Kolejna sprawa. To w kodzie nie deklaruje się F_CPU
Miejsce na ten parametr jest w pliku Makefile. I Ecplise go tam sam umieszcza.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 13:54 
Offline
Użytkownik

Dołączył(a): 18 kwi 2014
Posty: 25
Pomógł: 0

sq8dsr napisał(a):
Co to znaczy uruchomić programowo zewnętrzny rezonator?

Chodzi mi o ustawienie rejestru TCCR0B rozumiem że gdy źródłem taktowania ma być zewnętrzny rezonator wtedy ww. rejestr ustawiam na 'external clock source' ?
Fusy już ustawione.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 14:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Rezonator o którym mówimy masz podłączony, jak rozumiem, do wyjść XTAL1 i XTAL2. I on taktuje procesor.

Tryb Timera0 o którym piszesz czyli External clock source nie będzie używał taktowania procesora. Tylko tego co podasz na wejście T0. To jest zupełnie inny pin procesora. I nie podłącza się tam rezonatora tylko źródło przebiegu / sygnałów TTL.
Jest to zupełnie inne źródło taktowania. I wymaga podłączenia dodatkowego generatora. Przy czym jest to tryb synchroniczny.

Napisz co chcesz osiągnąć

------------------------ [ Dodano po: 2 minutach ]

Cytat z noty:

An external clock source applied to the T1/T0 pin can be used as Timer/Counter clock
(clkT1/clkT0). The T1/T0 pin is sampled once every system clock cycle by the pin synchronization
logic. The synchronized (sampled) signal is then passed through the edge detector


Autor postu otrzymał pochwałę


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 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO