Arduino Due Interrupt

#3971949
Lesenswert?

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.
Gast #3972160
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren