Forum: Mikrocontroller und Digitale Elektronik Nachlaufsteuerung mit Taster


von Boris (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe einen Atmega8 mit dem Stk500 und möchte mit Taster 1 und 
2 Ausgang 1. Schalten und mit Taster 3 und 4 Ausgang 2. einschalten.
Das klappt soweit auch gut, nur möchte ich das die Ausgänge nach dem 
Tasten des Tasters eine Nachlaufzeit von ca. 1 bis 10 Sekunden haben.
Warum klappt das mit dem Delay nicht ??? oder wie kann ich das besser 
machen ?
Bitte um Hilfe....

von Peter D. (peda)


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Schreib keine eigenen delay Funktionen!

Da deine delay Funktion keinen für den Compiler erkennbaren
Zweck hat, ausser Zeit zu verbrutzeln, optimiert sie dir
der Compiler heraus.

Will man wirklich einen delay haben, dann gibt es in
#include <util/delay.h>
2 Funktionen. Eine davon ist _delay_ms

Schau aber in das angegebene Header File hinein. Es gibt
Obergrenzen für die delays, die mit der Taktfrequenz deines
µC zusammenhängen!


PS: Solch lange Verzögerungen wird man nicht mittels delay
machen. Der Grund: Während der µC die Zeit runterzählt, kann
er keine anderen AUfgaben bearbeiten. Für sowas wird man in
der Praxis einen Timer nehmen. Ich verstehe aber, dass du
irgendwann an irgendeiner Stelle mit dem Lernen der Programmierung
anfangen musst und daher nicht alles gleichzeitig lernen kannst.

von Falk B. (falk)


Lesenswert?

@ Boris (Gast)

>Hallo, ich habe einen Atmega8 mit dem Stk500 und möchte mit Taster 1 und
>2 Ausgang 1. Schalten und mit Taster 3 und 4 Ausgang 2. einschalten.
>Das klappt soweit auch gut, nur möchte ich das die Ausgänge nach dem
>Tasten des Tasters eine Nachlaufzeit von ca. 1 bis 10 Sekunden haben.
>Warum klappt das mit dem Delay nicht ??? oder wie kann ich das besser
>machen ?

1.) Lass das selbstgestrickte Delay. Dafür gibt es fertige, getestete 
Funktionen.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29

2.) was soll di definition einer funktion INNERHALB von main? Dass ser 
Compiler dort nciht meckert ist schon ein kleines Wunder.

3.) Formatiere den Code ordentlich (Einrücken), so kann ihn keiner 
lesen, incl. du.

MFG
Falk

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.