Re: Timer0 Kategorie: Programmierung Basic (von Newbie - 12.10.2011 14:24) | ||
Als Antwort auf Re: Timer0 von Jan - 9.10.2011 14:32 | ||
| ||
> > Hallo alle miteinander. > > Vielleicht könnt Ihr mir weiter helfen. > > Ich befasse mich seit kurzem mit der Programmierung der C-Control PRO Mini-Station. > > Nun habe ich ein kleines Programm geschrieben, doch es funktioniert leider nicht. > > > > Beschreibung des Programms: > > Wenn der Input1 der C-Control Pro Mini-Station auf Masse gezogen wird (0VDC), soll ein Timer > > gestartet werden. > > Nach Ablauf einer vorgegebenen Zeit, soll eine globale Variable auf "true" gesetzt werden. > > Wenn diese Variable "true" ist, soll der Output2 gesetzt werden. (LED am Ouput2 soll leuchten) > > Das Programm ist in basic geschrieben. > > > > Nun mein Problem: > > Er setzt, wenn der Eingang auf Masse gezogen ist, den Ausgang nicht. > > Somit leuchtet auch die LED nicht! > > > > Kann mir jemand sagen was an diesem Programm falsch ist. > > > > Schon mal vielen Dank im Vorraus! > > > > > > Quellcode: > > > > '******************************************************************************* > > 'Das Programm soll wenn am PortD.3 0VDC anliegen einen Timer starten. > > 'Nach Ablauf dieses Timers soll der PortC.3 gesetzt werden (LED leuchtet). > > '******************************************************************************* > > > > > > 'Port-Eingänge mit Nämen verweisen > > #define Input 27 'Input1 PortD.3 > > > > 'Port-Ausgänge mit Nämen verweisen > > #define LED 19 'Output2 PortC.3 > > > > #define PORT_ON 1 > > #define PORT_OFF 0 > > > > Dim VarTimer As Byte 'Globale Variable > > > > 'Interrupt Timer > > Sub Timer0_ISR() > > Dim irqcnt As Integer > > VarTimer = 1 > > Timer_T0Stop() 'Timer0 anhalten > > irqcnt=Irq_GetCount(INT_TIM0COMP) > > End Sub > > > > > > > > Sub main() > > > > 'Port als Ausgänge deklarieren > > Port_DataDirBit(LED,PORT_OUT) 'PortC.3 als Ausgang (PORT_OUT= 1) > > > > 'Port als Eingänge deklarieren > > Port_DataDirBit(Input,PORT_IN) 'PortD.3 ist Eingang (PORT_IN= 0) > > > > 'Pull-up Widerstand des Eingangs aktivieren > > Port_WriteBit(Input,1) > > > > 'Interrupt Service Routine definieren > > Irq_SetVect(INT_TIM0COMP,Timer0_ISR) > > > > > > > > 'Startvorgang > > If Port_ReadBit(Input)=0 Then 'Abfrage ob Eingang gesetzt ist > > Timer_T0Time(100,PS0_1024) 'Zeit festlegen und Timer0 starten (100x69,44 µs) > > End If > > > > > > If VarTimer=1 Then > > Port_WriteBit(LED, PORT_ON) > > End If > > > > End Sub > > Hast Du das Programm schon mal mit angelegter Masse an Input1 gestartet? Wenn es dann 1x > funktioniert würde ich das Hauptprogramm als Endlosschleife (Do While True ... End While) laufen > lassen, da das Programm sonst nicht auf die Eingabe an Input1 warten kann; es ist schon längst zu > Ende bevor Du gegen Masse schalten kannst. > > Gru�, Jan Hallo Jan, ja das hab ich schon versucht. Daran kann es leider nicht liegen! Gru� | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum