Hi!
Ich finde überall nur Tuts und Beiträge zum Timer0 oder zum Timer1 bei
anderen ATMs, ich möchte aber den Timer1 mit meinem ATMega644 nutzen.
Hab mich jetzt durch das Datenblatt geforstet und dabei ist folgendes
raus gekommen, bin mir aber immer noch nicht sicher.
Könnte bitte jemand mal drüber schauen, ob ich alles richtig verstanden
habe?
Ich arbeite mit 20MHz und möchte eine einstellbare ADC Abfrage im Takt
des Timer1 erreichen.(Also keine Ausgang steuern).
Das möchte ich durch unterschiedliche Werte in OCR1A einstellen.
Wenn ich nun zB einen Rythmus von 50us erreichen möchte, "rechne" ich
folgendermassen:
20MHz ergibt eine Taktfrequenz von 0,05us.
Ich nehme keinen Teiler, um eine schöne Ganzzahl pro Timertakt zu
bekommen.
Somit muss ich 1000 (0x03E8) Takte warten, um 50us zu erreichen.
Diesen Wert schreibe ich in OCR1A und lasse den Timer im CTC Modus
laufen.
Also würde die Initialisierung so aussehen, oder fehlt mir noch ein
Register oder irgendwas??
1 | .org OC1Aaddr ; Timer/Counter1 Compare Match A
|
2 | jmp Timer1blabla
|
3 | ...
|
4 | ...
|
5 |
|
6 | ;TCCR1A
|
7 | ;COM1 A/B 0/1 Output Pins: 00 -> aus!
|
8 | ;WGM1 0/1 00-> CTC mit WGM1 2/3 richtig gesetzt in TCCR1B
|
9 |
|
10 | ldi temp1, (0<<COM1A1)|(0<<COM1A0)|(0<<COM1B1)|(0<<COM1B0)|(0<<FOC1A)|(0<<FOC1B)|(0<<WGM11)|(0<<WGM10)
|
11 | sts TCCR1A, temp1
|
12 |
|
13 | ; TCCR1B :
|
14 | ; CS10-12 Clock Select 000 : Teiler 1
|
15 | ;WGM1 2/3 10 -> CTC mit OCR1A
|
16 | ldi temp1, (0<<ICNC1)|(0<<ICES1)|(0<<5)|(0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(0<<CS10)
|
17 | sts TCCR1B, temp1
|
18 |
|
19 | ; OCR1A High und Low : Vergleichwert
|
20 | ; Default : 000A ; ERST HIGH, dann LOW beschreiben !!!
|
21 | ldi temp1, 0xE8
|
22 | sts OCR1AH, temp1
|
23 | ldi temp1, 0x03
|
24 | sts OCR1AL, temp1
|
25 |
|
26 |
|
27 | ;Timer Interrupt Enable
|
28 | ; OCIE1A Output Compare Interrupt Enable
|
29 | lds temp1, TIMSK1
|
30 | sbr temp1, 1<<OCIE1A
|
31 | sts TIMSK1, temp1
|
32 |
|
33 | main:
|
34 | blabla
|
35 | rjmp main
|
36 |
|
37 | Timer1blabla:
|
38 | "push sreg"
|
39 | ...
|
40 | "pop sreg"
|
41 | reti
|