Forum: Mikrocontroller und Digitale Elektronik mega8 + CTC = ???


von Alexthbe (Gast)


Lesenswert?

Also ich habe folgenden Code umd den Timer 1 in den CTC Modus zu
bringen:

;------------------------------
ldi temp1, 0x23
out OCR1AL, temp1
ldi temp1, 0xF4
out OCR1AH, temp1
sbi DDRB, 1
ldi temp1, 1<<COM1A0
out TCCR1A, temp1
ldi temp1, (1<<WGM12)|(1<<CS12)
out TCCR1B, temp1
;------------------------------


Simuliert = funktioniert!
auf mega8 geladen = 868 Hz am OC1A Pin statt 0,5 Hz
auf mega16 geladen = selber müll wie aufm mega8
auf mega32 geladen = es funktioniert, 0,5 Hz wie es sein sollte

So, und jetzt frag ich mich wieso das hier und da nicht funktioniert
und dannn woanderst wieder funktioniert, oder war ich so blöd und hab
was übersehen? Jemand ne Idee?

MFG Alexthbe

von Bernhard S. (bernhard)


Lesenswert?

So funktioniert's:

;------------------------------
ldi temp1, 0xF4
out OCR1AH, temp1   ; zuerst H
ldi temp1, 0x23
out OCR1AL, temp1   ; dann L
sbi DDRB, 1
ldi temp1, 1<<COM1A0
out TCCR1A, temp1
ldi temp1, (1<<WGM12)|(1<<CS12)
out TCCR1B, temp1
;------------------------------

Bernhard

von TravelRec. (Gast)


Lesenswert?

oder in einem Schwung und zwei Temp-registern:

...
ldi temp2, 0xF4
ldi temp1, 0x23
out OCR1AH, temp2   ; zuerst H
out OCR1AL, temp1   ; dann L
...

von Bernhard S. (bernhard)


Lesenswert?

@TravelRec.
>oder in einem Schwung und zwei Temp-registern

Na so schwungvoll ist das mit zwei Registern nun auch nicht.
Braucht doch genauso viel Takte, oder?

Und zusätzlich wird noch ein weiteres Register benötigt.

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.