Ich nehm an, daß dir die Sache mit den Interrupts noch nicht in allen Details klar ist.
Der Ablauf beim adc-lesen ist folgender (schematisch):
1 Einstellen der Kanalnummer
2 Start der Messung
3 Warten auf Fertigwerden
4 Lesen des Ergebnisses
Durch den Interrupt kann Punkt 3 entfallen, den die ISR-Routine wird genau nach Fertigwerden der Messung automatisch aufgerufen.
So, wie dein Programm abläuft, kann ich dir nur raten, das Ganze Interrupt-Zeugs zu knicken. Denn ob du "idle" sagst oder gleich direkt auf das Ready-Bit wartest, ist zeitmäßig Jacke wie Hose, aber wesentlich leichter zu beherrschen.
Empfehlung:
Code:Start Adc Do Cls Dval_1 = Getadc(0) Call Calcultemp(resulttemp , Dval_1) 'print UART valeur Print "11 " ; Fusing(resulttemp , "##.# ") Locate 1 , 1 Lcd "Temperature =" ; Fusing(resulttemp , "##.# ") Dval_2 = Getadc(2) Call Calculpress(resultpress , Dval_2) Print "22 " ; Fusing(resultpress , "##.#") Locate 2 , 1 Lcd " Pression =" ; Fusing(resultpress , "##.#") Waitms 500 Loop End







Zitieren

Lesezeichen