Forum: Mikrocontroller und Digitale Elektronik InputCaptureEdge während Messung verstellen


von hansimglück (Gast)


Lesenswert?

Hallo!

Ich möchte während einer Messung am ICP die Flankenart verändern. 
(bisher hab ich nur von steigender zu steigender Flanke gemessen -> 
funktioniert super).

Jetzt möchte ich quasi die Zeit zwischen einer steigenden und einer 
fallenden Flanke messen!
also bin ich in meinem Programm hergegangen und habe nach Messung der 
ersten steigenden Flanke das entsprechende Register so gesetzt:

TCCR1B &= ~(1<<ICES1);
damit sollte er ab sofort auf eine fallnde Flanke reagieren.
nach der messung der zweiten Flanke (sollte ja jetzt eine fallende 
sein), habe ich durch folgenden Aufruf das ganze wieder zurück gesetzt:
TCCR1B |= (1<<ICES1);

kann mir da jemand weiterhelfen?

Herzlichen Dank!

von hansimglück (Gast)


Lesenswert?

ähm - sorry hab ich vergessen zu erwähnen - natürlich funktioniert die 
Frequenzmessung jetzt nicht mehr.. :(

von Johannes M. (johnny-m)


Lesenswert?

Das funktioniert natürlich nur dann, wenn die Zeit zwischen zwei Flanken 
ausreichend lang ist, um die Umschaltung vorzunehmen. Die ISR wird ja 
nicht verzögerungsfrei aufgerufen und hat ordentlich Overhead. Wenn die 
fallende Flanke schon kommt, bevor oder während das ICES1 gelöscht wird, 
dann ist das Ereignis futsch.

von hansimglück (Gast)


Lesenswert?

hi!

ja das war mir klar! Denke aber nicht dass das so lange braucht..
hab den fehler grad gefunden - ein blöder schreibfehler denn ich jetzt 
beim 100. mal durchgehen entdeckt habe..
Danke auf jeden Fall
(der erfassbare Bereich für Frequenzen halbiert sich jetzt eben.)

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.