Wartezeiten PROBLEM

OP #3147654
Lesenswert?
• ▲
▼
hi , ich programmiere für einen DS1820 ein OneWire Protokoll.
Der Master Reset- und Slave Presence Impuls funktioniert auch schon.
Wenn ich aber F_CPU = 8MHz einstelle ,dann wartet das Program bei 
_delay_us(100) viel länger als angegeben.
Wieso arbeitet die Funktion nicht wie angegeben?

(Wenn ich F_CPU nicht einstelle ,dann ist F_CPU = 1GHz)

AtMega16 (externer Takt = 8MHz)
Gast #3147656
Lesenswert?
• ▲
▼
Fabian Anderw schrieb:
> dann wartet das Program bei
> _delay_us(100) viel länger als angegeben

optimierung muss eingeschaltet sein, es dürfen nur konstanden verwendet 
werden.

> Wenn ich F_CPU nicht einstelle ,dann ist F_CPU = 1GHz
nein, dann ist es nur wo anders eingestellt (->suche). Wenn das define 
fehlt gibt es einen fehler.
OP #3147665
Lesenswert?
• ▲
▼
>nein, dann ist es nur wo anders eingestellt (->suche). Wenn das define
>fehlt gibt es einen fehler.

Stimmt genau in der delay.h ist F_CPU = 1GHZ.


>optimierung muss eingeschaltet sein, es dürfen nur konstanden verwendet
>werden.

Sorry aber ich weiss nicht genau was du mit optimierung meinst.Wo kann 
ich das einstellen?
OP #3148175
Lesenswert?
• ▲
▼
Ok jetzt noch mal Schritt für Schritt.

Ich habe einen AtMega16 mit internen Takt von 1MHz.
(externer Takt = 8000000Hz)

Diese Frequent wird auch in der <util/delay.h> mit #define F_CPU 
1000000UL
voreingestellt.

(Test)Programm:

1. LED an
2. _delay_ms(5)
3. LED aus
4. _delay_ms(5)

Nun mit Oszi messen : Alle Wartezeiten im Programm sind identisch mit 
den realen Wartezeiten. KEINE PROBLEME

Nun stelle ich die F_CPU auf 8000000UL.

(Test) Programm:

...
siehe oben
...

Mit Oszi messen :
1. LED an
2. reale 40ms wird gewartet
3. LED aus
4. reale 40ms wird gewartet

Wieso wartet die Funktion _delay_ms(5) nun in Wirklichkeit genau 40ms???

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.