Hi. Ich habe ein Signal mit einer veränderlichen Impulsbreite. Wie kann ich das Signal mit einem Atmel-AVR mit den veränderlichen Impulsbreiten empfangen und diese entsprechend auswerten? Danke. Timo Gessner
Sag bitte dazu wie breit die Pulse sind und mit welcher Wiederholrate die Pulse kommen, davon hängt die geeignete Methode der Messung ab.
Danke für deine Antwort. Das Signal hat eine Frequenz von 1Hz und die Pulse sind 100ms oder 200ms lang.
Signale dieser länge vermißt man am besten mit dem TimerCaptureInterrupt. Dazu wird der Timer initialisiert und eingeschaltet. Den Vorteiler (Prescaler) legt man am besten so, daß der die Maximale Impulsbreite weniger als 0xffff Timertakte beansprucht: prescaler > Controllertakt / 0xffff * Impulszeit Damit muß man sich dann keine weiteren Gedanken um Timerüberläufe machen. Nach dem Einschalten des TimerCaptureInterrupts, den du auf die steigende Flanke eingestellt hast, wird der Interrupt bei der ersten steigenden Flanke aufgerufen. In der Interrupt Service Routine speicherst du den Capturewert als Startwert ab und stellst den Capture interrupt auf die fallende Flanke um. Beim nächsten Interrupt kannst du die Zeitdifferenz berechnen.
Hat den eigentlich der ATtiny26 einen TimerCapture. Konnte im datenblatt nichts entdecken(übersehen?)? Timo Gessner
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.