mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitproblem mit AVR


Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe mit meinen µC immer das selbe Problem,
egal ob Mega16 oder Tiny2313.
Immer wenn ich zB: eine LED
in einer gewissen Zeit ein und wider ausschalten will,
dann funktioniert dass nicht in der richtigen Zeit, sondern
viel zu Schnell. Wenn ich so eine sek. warten will, sehe ich die
LED flimmern.

Ich habe leider keine Ahnung was ich falsch mache.

Autor: Jack Braun (jackbraun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe leider keine Ahnung was ich falsch mache.

Dein Programm ist fehlerhaft.

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze immer den Befehl _delay_ms(1000);
Nun müsste das Programm für exakt eine Sekunde stehen bleiben.
Bei mir wartet das Programm aber höchstens eine ms.

Autor: ExUndHopp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dein Programm ist fehlerhaft.

Ich glaube auch, dass das der Grund ist.

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit was Prog. du?
Beim GCC
The maximal possible delay is 768 us / F_CPU in MHz.
The maximal possible delay is 262.14 ms / F_CPU in MHz.

Autor: Frank Erdrich (erdi-soft)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe delay.h:

The maximal possible delay is 262.14 ms / F_CPU in MHz.

Autor: Elektro Gandalf (e_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal in der avr-libc-Doku

_delay_ms() kann nicht beliebig groß sein (ist begrenzt)!

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tut mir leid aber ich verstehe nicht ganz?!?

Meinst du das Programm funktioniert?!?

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hoch ist die Taktfrequenz?

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dh: ich sollte einen anderen Befehl als delay verwenden,
aber ich kenne leider keinen.

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
12 Mhz

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max Zeit währe 21,845ms

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht dann so aus.

#include <util/delay.h>
.
.
.
"Programm"
_delay_ms(1000);
.
.
.

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deswegen kann das nicht funktionieren!

Aber gibt es denn auch einen anderen Befehl?

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for (x=0;x<=46;x++)
{
_delay_ms(21);
}

Autor: Franz-Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
for (x=0;x<=50;x++)
{
_delay_ms(20);
}
CA.1S

Autor: Trunes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahhh!

Super Danke!

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.