Forum: Mikrocontroller und Digitale Elektronik lange Wartezeit bis das Lauflicht startet


von Azubi_Anfänger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich hab ein kleines Problem und kann es selber nicht lösen. Es geht um 
folgendes ich möchte über die Taster eine bestimmte Zeit auswählen, 
diese soll dann die Laufdauer des Lauflichts bestimmen. Es funktioniert 
auch, bloß habe ich eine Wartezeit von 10s bis mein Lauflicht zur 
gewünschten zeit startet. Also kurz und knapp:

1.Taster wird betätigt z.B PC0
2. Taster PC2 wird betätigt
3. Wartezeit von ca. 10s
4. Lauflicht  läuft zur gewünschten Zeit

Woher kommt diese lange Wartezeit warum reagiert der Microcontroller 
nicht sofort, wenn ich meine Tastenkombi drücke????

von Falk B. (falk)


Lesenswert?

@  Azubi_Anfänger (Gast)

>    * leuchtmustergeneratot.txt (1,6 KB, 0 Downloads)

Du darfst gern deinen Quelltext direkt als .c Datei hochladen, dann kann 
man sogar das Syntay hoghlighting nutzen, siehe Netiquette.


>Woher kommt diese lange Wartezeit warum reagiert der Microcontroller
>nicht sofort, wenn ich meine Tastenkombi drücke????

Dein Quelltest is saumässig formatiert und scheinbar unvollständig. 
Poste VOLLSTÄNDIGEN, sauber formatierten Quelltext.

von Stefan (Gast)


Lesenswert?

Weil du den Timer nicht auf null stellst. Nach dem Drücken der zweiten 
Taste hat er irgendeinen Zufallswert, das Lauflicht startet erst, 
nachdem der Timer einmal überläuft.

von Sanduhraufzieher (Gast)


Lesenswert?

auswahl= 14648;  //15s

OCR1A=auswahl;

Passt das denn zusammen? Mir ist nicht bekannt, daß man den 16-bit Timer 
so langsam machen kann, daß er mehrere Sekunden braucht (oder läuft der 
Prozessor nur mit 32kHz?).


Ich mach das immer so: Wenn der Timer abgelaufen ist (roll-over von FFFF 
-> 0000) wird bekanntlich ein Interrupt ausgelöst. In der zugehörigen 
Interrupt-Routine wird nun der Inhalt eines Bytes um 1 hochgezählt. 
Dadurch kann man den Zeitintervall von wenigen Mikro- oder Millisekunden 
auf bis zu 256 mal verlängern. Mit einem zweiten Byte multipliziert sich 
die Zeit ebenfalls wieder um den Faktor 256.

von Azubi_anfänger (Gast)


Lesenswert?

Ich benutze einen prescaler, auch den timer vorher auf null zusetzen 
führt zum gleichen ergebnis

von J.-u. G. (juwe)


Lesenswert?

Azubi_Anfänger schrieb:
> 1.Taster wird betätigt z.B PC0

> 3. Wartezeit von ca. 10s

> Woher kommt diese lange Wartezeit warum reagiert der Microcontroller
> nicht sofort,

Weil Du es so programmiert hast, dass bei Druck auf PC0 die Wartezeit 
15s bträgt:
> if (!((PINC)&((1<<PC0)|(1<<PC1))))
> {
>    auswahl= 14648;      //15s
> }

von Ben _. (burning_silicon)


Lesenswert?

Wahrscheinlich hat er es gar nicht programmiert! ;)

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.