Gast
#2123017
Hallo, ich habe eine technische Schwierigkeit. Ich möchte mit Atmega48 4
Signallänge jeweils an 4-Pins(PD0-PD0) messen lassen. Bei Pegelwechsel
wird Interuppt auslösen. Die Zeit wird mit 16-Bit-Timer1 ausgemessen.
Den 16-Bit-Messwert ist in SRAM gespeichert, um später den Messwert auf
LCD ausgeben.
Zum Test wird PWM 1kHz (50/50) an PB0 gesendet. Aber ich kriege
unsinnige Messwerte auf LCD. Ich vermute, dass Zähler nicht auf Null
sich setzt.
Oder gibt es ein anderes Problem?
Cinfiguration Timer1:
ldi temp1, ( 1 << CS10 )|( 1 << CS11
sts TCCR1B, temp1
Cinfiguration PCINT(Pin change):
SETB PCICR,PCIE0,temp1;
ldi temp1,(1<<PCINT1)
sts PCMSK0,temp1
Interrupt:
einspritz:push temp1
push temp2
lds temp1,TCNT1L
lds temp2,TCNT1H
STS timL,temp1
STS timH,temp2
ldi temp1,0
sts TCNT1H,temp1
sts TCNT1L,temp1
pop temp2
pop temp1
reti