www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR _delay_ms interruptable ?


Autor: Christian V. (caegger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ist sie.

Autor: Christian V. (caegger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Gruß

Autor: Patrick (Gast)
Datum:

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

Bewertung
0 lesenswert
nicht lesenswert
Ok, vielen Dank für die Info. Wo findest du die Sourcen?

Gruß

Autor: Patrick (Gast)
Datum:

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

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