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