Gast
#859847
Servus Gemeinde, folgende Konfiguration: Tiny2313,20MHz, gemessen werden soll an periodischem signal, periodendauer 113us. Das Signal beinhaltet alle 113 us einen Sync Impuls (MPEG2), welches auf einem extra pin anliegt. Zwei Ausbreitungswege werden mit dem selben Signal gespeist, ein Weg direkt, einer Verzögert. Nun will ich den laufzeitunterschied bestimmen. Problem ist, dass dieser größer 113us sein wird Hierzu: die beiden Sync Impulse der beiden Signale auf die beiden Externen Interrupts. Dann im eigentlichen MPEG Datenstrom ein Bit maskiert, dass alle sagen wir sekunde wieder auftaucht. Der zeitliche Abstand vom Auslösen des Externen Interrupts bis Auftreten des maskierten Bits ist für beide Wege identisch und immerzu konstant. Folgende Vorgehensweise: Am externen Interrupt 0 liegt der Sync Impuls des direkten Weges an. Wird dieser ausgelöst wird 5 Takte gewartet(bis das Maskierte Bit im Datenstrom auftaucht) und dann der Datenstrom an PIND0 abgefragt. Ist er in diesem Moment High, timer starten. Am externen Interrupt 1 liegt der Sync Impuls des verzögerten Weges. Wird dieser ausgelöst wird wieder exakt 5 takte gewartet, dann der PIND1 abgefragt. ist dieser in dem Moment High, Timer stoppen, wert umrechnen und raus aufs Display. Nun meine Probleme: Das Bit welches ich abtasten möchte treffe ich sehr genau, zumindest im Interrupt Handler für INT0 Nun bin ich mir nicht ganz sicher wie die Interrupts zeitlich abgearbeitet werden. Sollte die verzögerung recht klein sein, so steht der INT1 an wenn INT0 noch abgearbeitet wird. somit wird nach dem reti von INT0 direkt in INT1 gesprungen, jedoch passt hier meine 5 Takte verzögerungszeit nicht. d.h. ich treffe das Bit welches ich abtasten will nicht und treffe evtl ein falsches bit, welches aber high ist in diesem moment. Ergo: ich messe nur mist. Ebenso, wenn die zu messende verzögerung ein vielfaches der periodendauer, hier 113us, beträgt. Hat jemand vielleicht eine Idee, wie man dies Umgehen kann? evtl nicht nur ein Bit manipulieren sondern gleich ein ganzes Byte. Bin langsam am Verzweifeln. Werde morgen mal meinen Code posten, den hab ich leider nicht auf diesem Rechner. vielleicht mache ich ja nur einen gravierenden Fehler auf den ich selber im moment nicht stoße. MfG, swedisch