Hallo zusammen,
ich habe für die ganzen Aufgaben nur einen Timer laufen. Der läuft mit 8KHz über, weil er auch noch RC5 empfangen soll.
Ich benutze allerdings nicht mehr die DCF-Routine von Bascom, sondern meine eigene, weil ich da flexibler bin.
Der Sekundentakt (Interrupt) setzt ein Flag, das im Hauptprogramm abgefragt wird. Dann werden alle 7 DS1820 ausgelesen und anschließend sofort wieder die Konvertierung gestartet. Daher keine extra Wartezeit. Wenn der Sekundentakt wieder das Flag setzt, sind die DS1820 längst fertig.
Das DCF- und das RC5-Signal liegen an externen Interrupt Eingängen. Die Interruptroutinen setzen auch wieder jeweils ein Flag, welches im Hauptprogramm abgefragt wird.
Das ganze sieht dann so aus:
Alles kann parallel laufen.Code:Do If Interrupt_vektor.7 = 1 Then 'Verarbeitung der eingehenden RC5 Signale Endif If Interrupt_vektor.6 = 1 Then 'Verarbeitung der eingehenden DCF Signale Endif If Interrupt_vektor.5 = 1 Then 'Konvertierung der Temperaturen Endif loop Get_rc5_isr: 'Verarbeiten der RC5 Impulse 'Print #1 , "Received Get_rc5 Interrupt" Incr Bit_nummer Interrupt_vektor.7 = 1 Return Dcf_empfang_isr: 'Impuls auf Pind.1 'Print #1 , "Received Dcf_empfang Interrupt" Interrupt_vektor.6 = 1 Return Sectic: 'Print #1 , "Received Sectic Interrupt" Debug_main = Ja Interrupt_vektor.5 = 1 Return
Gruß
Rolf







Zitieren

Lesezeichen