AVR _delay_ms interruptable ?

Gast #867451
Lesenswert?

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

Und zusätzlich:
1
void
2
_delay_loop_2(uint16_t __count)
3
{
4
  __asm__ volatile (
5
    "1: sbiw %0,1" "\n\t"
6
    "brne 1b"
7
    : "=w" (__count)
8
    : "0" (__count)
9
  );
10
}

Du siehst, da hier kein Timer verwendet wird, ist sie interruptable.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren