Gast
#2878407
Hallo, ich will mit einem Mega88 die Pulsdauer und die Anzahl der Impulse bezogen auf eine Zeit messen die von einem Sensor geliefert werden. Das Ganze in doppelter Ausführung. Das Ganze ist noch in der Planung desswegen erläutere ich meine Ideen... Folgende Frage: Ich werde INT0 und INT1 als externe Interrupts verwenden. Da ich sowohl Pulsbreite und Impulsanzahl messen möchte sehe ich zwei Varianten a)Ich Konfiguriere EICRA auf steigende Flanke, dann starte ich beim eintreten der ISR einen Timer, außerdem zähle ich eine Variable hoch zum zählen der Pulse, ich konfigurire EICRA im ISR auf fallende Flanke. Beim nächsten ISR Aufruf stoppe ich den Timer. Natrülich müsste dann noch eine Abfrage vorher passieren, die abfragt ob EICRA auf fallend oder steigend konfiguriert ist. b)Ich konfiguriere EICRA auf alle Flanken, dann starte ich beim eintreten der ISR einen Timer, außerdem zähle ich eine Variable hoch zum zählen der Pulse. Beim nächsten eintreten der ISR stoppe ich den Timer. Das Problem hierbei ist, dass ich nicht weiß ob ich die Pulsbreite messe oder ob ich die Zeit zwischen zwei Pulsen messe, dies lässt sich jedoch durch die bekannte Dauer der Pulse initialisieren. Jetzt stellen sich mir die Fragen, seht ihr das genau so, gibt es bessere Alternativen, wie würdet ihr das Problem lösen. Habe auch gelesen das die Problemstellung sich auch mit der Input Capture Einheit lösen lässt, jedoch hat der ATMega88 nur einen Pin dafür(?)... Noch ein paar Infos: Die minimale Pulsbreite beträgt 38µs, die maximale Pulsbreite 207 µs. Danke!