Gast
#583621
Hallo, ich habe folgendes Problem: Ich will in einem Unterprogramm mit dem 16Bit Counter T1 des Mega32 ein externes Rechtecksignal variabler Frequenz (ca 2-50kHz) messen. Ich benutze dazu noch den Timer2 zum "Gaten", also gewissermaßen als Zeitbasis. Am Eingang T1 (also an PB1) liegt definitiv das Signal an (OSZI), Portdirection steht auf Eingang. Die Konfigurationsregister der Timer: Timer1: TCCR1A: 0b00000000 ;OC1A/OC1B disconnected, Normal Mode, kein Force Output TCCR1B: 0b00000111 ;ext. Signal an T1, rising edge Timer2: TCCR2: 0b00001111 ;CTC Mode, Prescaler 1024 OCR2: 31 ;ca. 65ms Ereignisse zählen bei 1Mhz SystemTakt Zu Beginn des Messvorgangs setze ich die Counterregister zurück und warte dann auf den Output Compare Interrupt des Timer2. In der ISR stoppe ich dann T1 mit out TCCR1B, 0b00000000. Bei der Auswertung des Counterstandes habe ich aber festgestellt, dass dieser IMMER auf 0 steht. Die Reihenfolge beim Schreiben/Lesen des 16Bit Regisers stimmt. Also zuerst Highbyte dann Lowbyte schreiben und umgekehrt beim Lesen. Während des Lese/Schreibvorgangs sind auch keine Interrupts erlaubt. Leider bin ich im Moment mit meinem Latein am Ende. Wäre schön wenn mir jemand sagen könnte warum mein Counter nichts zählt. Vielen Dank schon mal Holger