Hallo Gemeinde, versuche gerade in Bascom einen Port für eine gewisse Zeit zu schalten. Bekomme es aber nicht wirklich hin. Aufgabe: PortB.1 soll für 10 sekunden auf 1 gesezt sein. Nach den 10 sec. soll PortB.1 = 0 sein Könnte so gemacht werden PortB.1 = 1 Wait 10 PortB.1 = 0 Das Problem dabei ist, das dann das ganze Programm auch 10 Sec steht, das soll aber nicht so sein. Möchte nur das der PortB.1 für 10 sec High ist und das Programm paralell weiterläuft. Dachte an etwas wie PortB.1 = 1 (für 10 sec) then PortB.1 = 0 nur wie kann ich das machen? Vielen Dank schon mal. lG Kai
Kai Burghart schrieb: > Das Problem dabei ist, das dann das ganze Programm auch 10 Sec steht, > das soll aber nicht so sein. Lies mal die Doku zum Thema Interrupts und Timer...
Mit Hilfe eines der Timer funktioniert das. z.B.: PORT Pin Setzen und Timer 0 starten. In der ISR des Timer 0 (Overflow) musst du einen Counter inkrementieren. Den Stand des Counters fragst du gleich in der Interruptserviceroutine mit ab und dann weist du genau wann 10s Sekunden vorbei sind. Und dann setzt du dein PORT Pin wieder zurück. Welchen Wert der Counter erreichen muss, mußt du vorher ausrechnen.
Schau mal hier: Beitrag "Zwei Ports mit unterschiedlichen Funktionen ansprechen" Da steht schon der Code und Hinweise, wie man den Timer mit BASCOM programmiert, den musst du nur noch anpassen. Beim ATmega8 kann man dann den 16-Bit nehmen, der schafft 1s ohne Umwege.
@ ALL Wollte mich noch bei euch für eure Hilfe Bedanken, hab es dank euch hinbekommen. Liebe Grüße Kai
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.