Forum: Mikrocontroller und Digitale Elektronik Nochmal: Wait


von Timo Engelmann (Gast)


Lesenswert?

Hi,

gleiches Problem...
...nur mit dem IAR-Compiler.

Aber ich denke auch hier gibt es keinen Befehl.
Hat jemand einen Democode in C?
Würde mir sehr weiter helfen!
Bzw. ist es der "State of the art" wenn man
es mit einen Timer Interrupt löst und eine
Globale Variable hochzählt?
Siehe folgenden Pseudocode:

P.S. Danke für jeden Hinweis!
Timo

//--- Codeanfang:
unsigned int iCounter

Main
{
  SetBit(SREG,7); // Generelle Interruptfreigabe
  SetBit(TIMSK,1); // Interrupt Timer0 freigegeben

  SetBit(PORTB,5); // PortB = High
  Wait(500);
  ClearBit(PORTB,5); // PortB = Low
}

void Wait(unsinged int iValue)
{
  TCNT0=0; // Startwert
  TCCR0=1; // Vorteiler (Timer starten)
  iCounter=iValue;

  while(iCounter){};

  TCCR0=0; // Timer stoppen
}


__interrupt void TIMER0_OVERFLOW(void)
{
  iCounter--;
}

//--- Codeende

von Lars (Gast)


Lesenswert?

sieht gut aus IMHO, ich mache es jedenfalls auch so und mir ist noch 
kein "eleganterer" Weg eingefallen [wozu auch, funktioniert ja und in 
ASM sind das auch nur ein paar Instructions]

Lars.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.