Forum: Mikrocontroller und Digitale Elektronik ATMEGA32 delay


von mike (Gast)


Lesenswert?

Hey,


1
if (PINC & (1 << PINC0))
2
{
3
  _delay_ms(2000);        
4
  PORTD = 0b00000010;    
5
  _delay_ms(2000);  
6
  PORTD = 0b00000000;  
7
}



Jedes mal wenn ich den Taster drücken für die LED ein und aus 
zuschalten,
bleiben die andern programierung stehen wegen den _delay_ms.

Wie mache ich das die andern nicht mehr stehen bleiben, wenn der program 
bei _delay_ms ist?


Danke!

von mr. mo (Gast)


Lesenswert?

Einen Timer nutzen und den PIN in der ISR toggeln?

von Mark R. (stevestrong)


Lesenswert?

#define INTERVAL 1000 // miliseconds


unsigned long time = millis();  // starting time point
...

void loop()
{
  if( millis() > (time + INTERVAL) )
  {
    time = millis();
    // do your timed things here, i.e. toggle LED
    ...
  }

  // do your normal job here
  ...

} // end of loop

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.