dieses "fast" bezieht sich darauf daß ich mein Programm im Assembler geschrieben habe
Hier ein Ausschnitt:
Code:
.org 0x0000
rjmp reset
.org INT0addr
rjmp encode
.org OVF0addr
rjmp time0
....
....
reset:
ldi tmp1,HIGH(RAMEND)
out SPH,tmp1
ldi tmp1,LOW(RAMEND)
out SPL,tmp1
ldi tmp1,(1<<encoder1)|(1<<encoder2) ; Pullups für den Encoder
out encoderport,tmp1 ; dito
ldi tmp1,(1<<PB1)|(1<<PB2)
out DDRB,tmp1
ldi tmp1,(1<<ISC01) ; fallende Flanke am INT0
out MCUCR,tmp1 ; erzeugt einen Interrupt
ldi tmp1,(1<<INT0) ; Externen Interrupt am PD2 erlauben
out GICR,tmp1
...
...
encode:
in tmpi1,SREG
push tmpi1
ldi tmpi1,0x00
ldi tmpi2,0x05
in tmpiL,OCR1BL
in tmpiH,OCR1BH
sbic encoderpin,encoder2
rjmp encode2
sub tmpiL,tmpi2
sbc tmpiH,tmpi1
rjmp encode_end
encode2:
add tmpiL,tmpi2
adc tmpiH,tmpi1
encode_end:
out OCR1BH,tmpiH
out OCR1BL,tmpiL
pop tmpi1
out SREG,tmpi1
reti
Ich habe diesen hier
Gruß Sebastian
Lesezeichen