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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.