Hallo zusammen, ich programiere zurzeit mit arduino due und ist mir jetzt einen problem begegnet. Ich erzeuge mit meinem code einen 250 KHz rechteck signal, dieses signal wird jetzt mit DAU (DAC0) zu einem CAN Transceiver elektrisch gesendet und mit einem digitalen pin von dem arduino due board empfangen. Auf dem Oscilloscope wird das Tastverhältnis von dem empfangenen signal von 250 KHz nicht mehr 50% High und 50% Low. Das Problem tritt auf nur wenn ich einen Interrupt Service Routine im code schreibe,die mir die Äderung des Pegels von High zu Low abfragt. Kann mir jemanden helfen.
Krimo Eniba schrieb: > Das Problem tritt auf nur wenn ich einen Interrupt Service Routine im > code schreibe,die mir die Äderung des Pegels von High zu Low abfragt. Sowas tut man auch nicht per ISR sondern mit Timer Capture, weil man selten genau weiß, wie die Interrupt Latenz ist.
Hi Mike, danke für die Antwort. Ich habe eine externe rechtecksignal, der ich nach seiner flanke abfragen will, deswegen verwende ich einen Interrupt pin. Wie schafft man das ohne Interrupt? Danke
Hi, hat jemand einen beispiel code für capture timer für arduino due? Danke
Krimo Eniba schrieb: > Ich habe eine externe rechtecksignal, der ich nach seiner flanke > abfragen will, deswegen verwende ich einen Interrupt pin. > Wie schafft man das ohne Interrupt? Einen Interrupt brauchst du trotzdem, um auf die andere Flanke umzuschalten und um das Ergebnis zu sichern. Vielleicht hilft dir dieses Beispiel https://gist.github.com/billroy/4032657 In initTimer() wird der Timer erstmal für InputCapture auf fallende Flanke konfiguriert. Immer nachdem ein Capture Event eingetreten ist, wird in ISR(TIMER1_CAPT_vect) die Zeit aus ICR1L und ICR1H ausgelesen, der Timer auf die Flanke umkonfiguriert und eventuelle Timer Überläufe hinzuaddiert. Das Beispiel ist durch die zusätzliche Verwendung des Ringpuffers event_buffer[] etwas länger, aber das Prinzip sollte klar werden.
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.