Hallo,
kann mir vielleicht irgend jemand sagen, wie ich es hinbekomme, das
mein avr einen Timerinterrupt auslöst?
Konkret:
ich möchte nach bestimmter Zeit Int-Serviceroutine anspringen.
Theoretisch ist ja alles klar, ich weiß nur nicht wie ichs dem AVR
sagen soll:
1. Interrupt Enable für Timer1
2. Festlegen der ISR Adresse (z.B. T1_INT:)
3. Laden des TCCR1 mit 0b10001101 (1/256)
4. Laden des Compare Registers OCR1A
So, und nun soll er einfach bei Comparematch den Int auslösen
Aber wie?? Bitte ASM
Hier ein Codeschnipsel:
RESET:
ldi Temp, 0b10001101 ;1/256
out TCCR1, Temp
ldi Temp, 0xf0 ;Compare register
out OCR1A, Temp
LOOP:
...
RJMP LOOP
T1_INT:
...
RETI
Danke für die Antwort, ich habe aber noch einige Unklarheiten:
Was lade ich in das Temp-Register?
Kannst du mit vielleicht sagen was es mit den 1<< auf sich hat?
ldi temp, (1<<CS10)|(1<<CS13) ;Clock/16
out TCCR1, temp
ldi temp, (1<<DDB0)|(1<<DDB1) ;PB.0/1 = Ausgang
out DDRB, temp
ldi temp, (1<<OCIE1)| (1<<TOIE1)
out TIMSK, temp
Danke für die Antwort,
ich habe aber da noch eine Frage:
was bedeutet das 1<<??
ldi temp, (1<<CS10)|(1<<CS13) ;Clock/16
out TCCR1, temp
ldi temp, (1<<DDB0)|(1<<DDB1) ;PB.0/1 = Ausgang
out DDRB, temp
ldi temp, (1<<OCIE1)| (1<<TOIE1)
out TIMSK, temp
Hi...
Der Operator << bedeutet linksschieben.
1<<4 bedeutet, dass eine 1 4 mal nach links geschoben wird und damit 16
ergibt.
Diese Darstellung wird benutzt, weil sie beim Setzen einzelner Bits in
Steuerregistern (z.B. TIMSK für Timer) mehr Übersicht bietet, denn die
Bits in den Steuerregister haben Namen (siehe Datenblatt), die
aussagekräftiger sind als ihre Bitposition.
| ist der Operator für bitweises Oder. Damit werden mehrere Bits
zusammengefasst.
ldi temp, (1<<OCIE1)| (1<<TOIE1)
bedeutet demnach, dass eine 1 um OCIE1 nach links geschoben wird geORT
mit einer 1, die um TOIE1 nach links geschoben wird. Vereinfacht gesagt
wurden die Bits OCIE1 und TOIE1 gesetzt, alle anderen Bits gelöscht.
Dies ist bedeuten aussagekräftiger als das Setzen irgendeines
Hex-Wertes, dessen Inhalt man nur über das Datenblatt erfährt. Im Laufe
der Zeit prägt man sich die von ATMEL definierten Symbolnamen für
I/O-Register und deren Bits aber ein...
Bit- & Bytebruch... - ...HanneS...
Eine eigene Frage?
Dieser Thread ist über 22 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.