Kann jemand über meine Inialisierung drüberfliegen?

OP #3155529
Lesenswert?

Hallo,
bin noch ziemlich am Anfang und komme immer mit den Timerregistern 
durcheinander..
Wäre nett wenn mal jemand sich das mal anschaut.
Benutz wir der Attiny 84a. Damit ihr nicht suchen müsst ist das 
Datenblatt im Anhang.
Beide Timmer sollen im CTC Modus laufen.

Timer0 (8Bit): Prescale "8" und OCRA auf "250-1"
Timer1 (16Bit): Prescale "64" OCRA auf "6250-1"
1
Timer0:
2

3
ldi     temp, (1<<WGM01)   ; CTC MODE
4
        out     TCCR0a, temp
5

6
ldi     temp, (1<<CS01)    ; Prescale "8"
7
        out     TCCR0b, temp
8

9

10
ldi     temp, (1<<OCIE0A) ; Timer/Counter0 Output Compare Match A Interrupt Enable
11
        out     TIMSK0, temp
12

13
ldi    temp, 0b11111001
14
    out OCR0A, temp
15

16
Timer1:
17

18
ldi     temp, (1<<WGM12) | (1<<CS11)  | (1<<CS10)   ; CTC MODE Prescale 64
19
        out     TCCR1b, temp
20
; Für was ist das TCCR1C Register?
21
;ldi     temp, 
22
 ;       out     TCCR1c, temp
23

24
ldi     temp, (1<<OCIE1A) ; Timer/Counter1 Output Compare Match A Interrupt Enable
25
        out     TIMSK1, temp
26

27
ldi     temp, high 6249
28
        out     OCR1AH, temp
29
        ldi     temp, low 6249
30
        out     OCR1AL, temp

Vielen Dank
Angehängte Dateien:
#3155541
Lesenswert?

Stefan U. schrieb:
> Hallo,
> bin noch ziemlich am Anfang und komme immer mit den Timerregistern
> durcheinander..

Wenn du in der 'Konzeptionsphase' denkst, du hättest alle Bits in allen 
Registern identifiziert, die du brauchst, dann geh einfach mal alle 
Register durch und sieh dir jedes Bit an.
Atmel macht dir das leicht, weil es am Ende jedes Timerkapitels im 
Datenblatt eine 'Register-Summary' gibt, in der alle Register mit allen 
Bits aufgeführt und beschrieben sind.

Von der Mehrzahl aller Bits kannst du ganz schnell ausschliessen, dass 
sie (in deinem Fall) mit dem CTC Modus irgendwas zu tun haben, d.h. 
dieser "kurz Drüberschauen" geht in Wirklichkeit ganz schnell, auch wenn 
es jetzt nicht so klingt.

Was anderes tun wir ja auch nicht, wenn wir deinen Code kontrollieren.

> ; Für was ist das TCCR1C Register?
> ;ldi     temp,
>  ;       out     TCCR1c, temp

Geh ins Datenblatt, Timer 1, Register Summary und sieh nach, welche Bits 
da drinn sind bzw. welche Bedeutung sie haben.


Irgendwann musst du das Lernen. Mit dem Datenblatt zu arbeiten ist eine 
der Grundfertigkeiten.
OP #3155560
Lesenswert?

Das ist klar das ich damit arbeiten muss.
Ich habe auch im Datenblatt alles nachgeschaut. Ich finde das nur ein 
wenig verwirrend. Deswegen hab ich gedacht jemand kann es sich mal kurz 
anschauen.
Ich meine ich habe alle Bits richtig gesetzt.

TCCR1c Register habe ich mir durchgelesen, verstehe es aber nicht!
Deswegen frage ich ja..
Was passiert bei "Force Output Compare for Channel"?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren