Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Timer0 Kategorie: Programmierung Basic (von Newbie - 12.10.2011 14:24)
Als Antwort auf Re: Timer0 von Jan - 9.10.2011 14:32
Ich nutze:
C-Control Pro Mega32, CC-Pro 32 Application Board
> > 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: