Zegar 32768Hz

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
Krystian1989
-
Posty: 47
Rejestracja: 06 kwie 2007, 8:56
Lokalizacja: TBG
Kontakt:

Zegar 32768Hz

Post autor: Krystian1989 » 23 lut 2008, 16:12

Jaki program napisać , żebym miał impulsy co jedną sekundę. Mikroprocesor to Atmega8. A język to bascom. Z góry dzięki.

ZbeeGin

Post autor: ZbeeGin » 23 lut 2008, 16:28

Licznik/czasomierz TIMER2 w trybie ASYNC (CONFIG TIMER2). Przerwanie TIMER2 (ON TIMER2). Reszta należy do ciebie.

Awatar użytkownika
Krystian1989
-
Posty: 47
Rejestracja: 06 kwie 2007, 8:56
Lokalizacja: TBG
Kontakt:

Post autor: Krystian1989 » 23 lut 2008, 16:57

Czy to będzie działać??

Kod: Zaznacz cały

$regfile="m8def.dat"
$crystal=8000000
Config Timer2 = Timer , Async = 1 
On Timer2 co1sek

Enable Interrupts
Enable Timer2

dim a as byte

Do
Loop

co1sek:
incr a

return




ZbeeGin

Post autor: ZbeeGin » 23 lut 2008, 17:24

A gdzie reszta parametrów w CONFIG TIMER2, w szczególności PRESCALE=128 ?

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 24 lut 2008, 8:40

Aby użyć Timerka2 do pracy w trybie RTC (real time counter) należy przede wszystkim ustawić bity AS2 w rejestrze ASSR przełączający go na pracę z zewnętrznym kwarcem zegarkowym.
Ważne jest także ustalenie pracy w fuse bitach i zastosować wewnętrzny generator do taktowania mikroprocesora (bity CKSEL3...0) przy czym bit CKOPT musi (!!) być niezaprogramowany (wartość logiczna 1 w tym przypadku). Bez tego nic nie ruszy z kopytka.
Kolejno to już jak kolega się wcześniej wypowiedział, dostosować Timerek, prescaler i obsługa przerwania po przepełnieniu.

i chyba wsio

pzdr.

ZbeeGin

Post autor: ZbeeGin » 24 lut 2008, 9:57

Spark89 pisze:Aby użyć Timerka2 do pracy w trybie RTC (real time counter) należy przede wszystkim ustawić bity AS2 w rejestrze ASSR przełączający go na pracę z zewnętrznym kwarcem zegarkowym.
I to właśnie robi instrukcja CONFIG TIMER2 z opcją ASYNC.
Spark89 pisze:Ważne jest także ustalenie pracy w fuse bitach i zastosować wewnętrzny generator do taktowania mikroprocesora (bity CKSEL3...0) przy czym bit CKOPT musi (!!) być niezaprogramowany (wartość logiczna 1 w tym przypadku). Bez tego nic nie ruszy z kopytka.
Przecież domyślnie układ ATMega8 jest taktowany z wewnętrznego generatora RC. Częstotliwość taktowania wynosi wtedy 1MHz i dużej mierze wystarcza do takich niepoważnych programów. Po co zatem kompilkować sprawę?

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 24 lut 2008, 14:34

ZbeeGin pisze:Przecież domyślnie układ ATMega8 jest taktowany z wewnętrznego generatora RC. Częstotliwość taktowania wynosi wtedy 1MHz i dużej mierze wystarcza do takich niepoważnych programów. Po co zatem kompilkować sprawę?
Domyślnie - tak. Jednak jak sam zapewne wiesz jak często początkujący
robią coś a następnie o tym zapominają a potem pojawiają się problemy...
Odpowiadając musiałem uznać z góry najbardziej 'przerażającą' możliwość
tzn. przyjąć że ktoś mógł wcześniej już nieładnie grzebać w fusach...
to tak... na wszelki wypadek...

a z taktowaniem to jest tak widzisz, jak kto lubi...
masz rację, że dla takiego "niepoważnego" programu i starczy 1MHz
a są tacy co chcą wycisnąć max. parametry układu...

cóż, to była taka odpowiedź... z góry poprzedzająca lawinowy proces powstawania problemów...

pzdr.

ODPOWIEDZ