Forum: Mikrocontroller und Digitale Elektronik Kann jemand über meine Inialisierung drüberfliegen?


von Stefan U. (stefan_032)


Angehängte Dateien:

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

von Karl H. (kbuchegg)


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.

von Stefan U. (stefan_032)


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"?

von spess53 (Gast)


Lesenswert?

Hi

>ldi     temp, high 6249
>        out     OCR1AH, temp
>        ldi     temp, low 6249
>        out     OCR1AL, temp

Das wird mehrere Fehlermeldungen geben.

MfG Spess

von Stefan U. (stefan_032)


Lesenswert?

spess53 schrieb:
> Hi
>
>>ldi     temp, high 6249
>>        out     OCR1AH, temp
>>        ldi     temp, low 6249
>>        out     OCR1AL, temp
>
> Das wird mehrere Fehlermeldungen geben.
>
> MfG Spess

Wie muss ich das dann machen?
Soll ich auch die Zahl in Binär umwandeln und das Obere und Untere Byte 
direkt angeben?

von troll (Gast)


Lesenswert?

Stefan U. schrieb:
> Wie muss ich das dann machen?
Da fehlen mindestens Klammern.
ldi r16,HIGH(42)

von Stefan U. (stefan_032)


Lesenswert?

Alles klar danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.