Blinklicht zu hohe Frequenz

Gast #2320272
Lesenswert?
• ▲
▼
Hallo hab da ein Problem, mein LED am PORT A, Pin8 (also PA7) sollte 1 
mal in der sec blinken, jedoch blinkt es mit einer viel höheren Frequenz

#define F_CPU 16000000UL

#include <avr/io.h>
#include <util/delay.h>



void main (void)
{
  DDRA= 0xff;
  PORTA=0xff;


  while(1)
  {
    _delay_ms(1000);
    PORTA^= (1<<PA7);
  }


}
Gast #2320298
Lesenswert?
• ▲
▼
steffen schrieb:
> The maximal possible delay is 262.14 ms / F_CPU in MHz."

Wenn schon zitieren, dann aber bitte vollständig!
1
When the user request delay which exceed the maximum possible one,
2
_delay_ms() provides a decreased resolution functionality. In this
3
mode _delay_ms() will work with a resolution of 1/10 ms, providing
4
delays up to 6.5535 seconds (independent from CPU frequency). The
5
user will not be informed about decreased resolution.
Gast #2320331
Lesenswert?
• ▲
▼
... schrieb:
> Wenn schon zitieren, dann aber bitte vollständig!
Autsch, da hab ich doch selber noch einen Teil unterschlagen :(
1
If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long)
2
support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For
3
values greater than the maximal possible delay, overflows results in
4
no delay i.e., 0ms.
Gast #2320390
Lesenswert?
• ▲
▼
Die Wartezeit der Funktion _delay_ms() ist auf 262,14ms/F_CPU (in MHz) 
begrenzt, d.h. bei 20 MHz kann man nur max. 13,1ms warten. Die Wartezeit 
der Funktion _delay_us() ist auf 768us/F_CPU (in MHz) begrenzt, d.h. bei 
20 MHz kann man nur max. 38,4us warten. Längere Wartezeiten müssen dann 
über einen mehrfachen Aufruf in einer Schleife gelöst werden.

hab dann genau wie oben beschrieben noch diese schleife programmiert, 
über die _delay_ms das es sich auf eine sekunde ausgeht, siehe 
anwendungsbsp von delay

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29
Gast #2321201
Lesenswert?
• ▲
▼
Dann hast Du aber eine Uraltversion der avr-libc und solltest langsam 
mal updaten. Ab Version 1.6 gilt dieses Limit so nicht mehr und es sind 
delays bis ca. 6,5s möglich (mit der neuesten auch noch mehr) und die 
1.6 gibt es schon seit 2007.

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.