www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik AVR _delay_ms interruptable ?

Autor: Christian V. (caegger)
Datum: 14.05.2008 16:56

Hallo,

ist die Funktion "_delay_ms()", und ihre Verwandten, durch interrupts zu
unterbrechen? In der avr-libc 1.6 Anleitung kann ich keine genaue
Beschreibung finden.

Gruß

Christian
Autor: Benedikt K. (benedikt)
Datum: 14.05.2008 16:57

Ja, ist sie.
Autor: Christian V. (caegger)
Datum: 15.05.2008 06:58

Hallo,

kannst du es etwas genauer beschreiben? Laut Lib läuft dort doch ein
Timer?

Gruß
Autor: Patrick (Gast)
Datum: 15.05.2008 08:06

Da läuft kein Timer. Hast Du Dir schon mal das Header-file dazu
angesehen? Darin steht geschrieben:
void
_delay_ms(double __ms)
{
  uint16_t __ticks;
  double __tmp = ((F_CPU) / 4e3) * __ms;
  if (__tmp < 1.0)
    __ticks = 1;
  else if (__tmp > 65535)
    __ticks = 0;  /* i.e. 65536 */
  else
    __ticks = (uint16_t)__tmp;
  _delay_loop_2(__ticks);
}

Und zusätzlich:
void
_delay_loop_2(uint16_t __count)
{
  __asm__ volatile (
    "1: sbiw %0,1" "\n\t"
    "brne 1b"
    : "=w" (__count)
    : "0" (__count)
  );
}

Du siehst, da hier kein Timer verwendet wird, ist sie interruptable.
Autor: Christian V. (caegger)
Datum: 15.05.2008 08:32

Ok, vielen Dank für die Info. Wo findest du die Sourcen?

Gruß
Autor: Patrick (Gast)
Datum: 15.05.2008 09:36

>Wo findest du die Sourcen?
In den header-files delay.h und delay_basic.h unter
C:\WinAVR-20070525\avr\include\util (kann bei Dir natürlich anders
sein).
Autor: yalu (Gast)
Datum: 15.05.2008 11:33

Weil die delay-Routinen keinen Timer benutzen, ist natürlich zu
beachten, dass sich die Verzögerungszeit um die Dauer der Ausführung
des Interrupthandlers verlängert.

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net