www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nachlaufsteuerung mit Taster


Autor: Boris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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....

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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-Tu...

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.