Forum: Mikrocontroller und Digitale Elektronik Signallänge mit Timer1-16Bit vermessen


von Alex (Gast)


Lesenswert?

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