-
Wenn man das ADC fertig Signal an einen Interrupteingang legt der eien Interruptflag setzt, könnte man direkt nach dem Flag pollen. Den Eigentlichen Interrupt braucht man ja gar nicht auslösen. Dazu würde sich z.B. der ICP Eingang anbieten. Ein Signal von nur 50 ns ist aber auch da etwas zu kurz, wenigstens 60 ns sollten es schon sein bei 20 MHz Takt.
Wenn der ADC sehr schnell ist, könnte man auch gleich die passende Zeit warten. Ein externe ADC macht ja hauptsächlich sinn, wenn er schnell ist.
Zum warten müßte man aber eventuell auf Inline ASM zurückgreifen, oder auf Libraryfunktionen.
-
Danke für die vielen Vorschläge. Ich hab es jetzt mit normalen Warten gemacht. Den Interrupt vom ADC ignoriere ich einfach.
Da der ADC seine 12 Bit Messung ziemlich flott mir zur Verfügung stellt, verliere ich kaum Zeit.
Das Ganze ist Teil eines digitalen PID Reglers.
-
Moin moin.
Irgendwie habe ich bei Deinem Problem ein "Brett vorm Kopf"?
Starte doch einfach mit dem IRQ eine Funktion welche den ADC Wert
in eine Variable e. Am Ende der IRQ Funktion dann ein RTI und dein
normales Prog läuft weiter wo es beim Aufruf der Funktion gestoppt
wurde. Den ADC Wert der Varible kannst Du dann auswerten was es Dir beliebt.
Das hat mit Pollen NIX zu tun! Außer...Du mußt den externen ADC
auch zu einer Wandlung auffordern! Das währe dann eine Art Polling,
dann brauchst Du aber nicht wirklich einen (zwei) IRQ.
Wenn das ständige Pollen zu zeitaufwändig ist, benutze einen Timer
IRQ. Starte in der Timer IRQ den ADC, warte auf den ADC IRQ und dann
wie oben .... RTI. Die beiden IRQ sollten sich aber nicht in die Quere
kommen!
Gruß Richard