Forum: Mikrocontroller und Digitale Elektronik Port für gewisse zeit schalten


von Kai B. (tekasiko)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Michael_SS (Gast)


Lesenswert?

Welcher µC?

von Kai B. (tekasiko)


Lesenswert?

@ Michael

ATmega8

von Michael_SS (Gast)


Lesenswert?

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.

von Karl (Gast)


Lesenswert?

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.

von Kai B. (tekasiko)


Lesenswert?

@ 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
Noch kein Account? Hier anmelden.