Forum: Compiler & IDEs LED Toggeln lassen ohne delay()


von xyz (Gast)


Lesenswert?

Hallo zusammen,

ich sende an meinen µC bestimmte commandos. Wenn ein commando nicht 
bekannt dem µC nicht bekannt ist, sollte LED1, die am PORTA PIN1 ist, 
blincken, und zwar so, dass ich es auch sehe. Wie kann ich es am besten 
softwaretechnisch realisieren, ohne das ich delay benutze:

das funktioniert zwar, aber passiert viel zu schnell, so dass ein mensch 
das gar nciht wahr nehnem kann.
1
LED1_TOGGLE()
2
{ 
3
  if(LED1_ON) 
4
    LED1_OFF();
5
  else 
6
    LED1_ON();
7
}

von Tobias Paul (Gast)


Lesenswert?

Timer verwenden?
Zählerschleife? (also nur bei jedem x-ten durchlauf die LED toggeln)

von Icke M. (Firma: my-solution) (hendi)


Lesenswert?

Ich glaube auch mit nem Timer wäre das wohl am schönsten, aber eine 
Schleife mit NOPs könnte auch gehen, sag ich einfach mal so. Das 
impliziert aber eigentlich auch wieder ein Delay.

von Tobias Paul (Gast)


Lesenswert?

ich meinte eigendlich so in der art:
so das bei jedem x-ten durchlauf die LED getoggelt wird.
1
uint8_t counter;
2
3
LED1_TOGGLE()
4
{ 
5
  counter++;
6
  if (counter == 10)
7
   {
8
    if(LED1_ON) 
9
      LED1_OFF();
10
    else 
11
      LED1_ON();
12
13
    counter = 0;
14
   }
15
}

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Und woher weißt die, wie lange ein Durchlauf heute dauert, damit du
den Zählwert festlegen kannst?  Woher weißt du, wie lange er nächste
Woche dauern wird?

Nimm einen Timer.  Dafür sindse da.

von Falk B. (falk)


Lesenswert?


von Gast (Gast)


Lesenswert?

Interessant ist auch die Frage, ob der µC noch was machen soll, während 
er "toggelt", z. B. die nächsten Befehle annehmen, Berechungen,...

Davon ist abhängig, wie du es umsetzt. Falls noch was passieren soll, 
gehen fast nur Timer und Interrupts.

Gruß.

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.