Macht die Loop eine Pause ?


ich spiele gerade mit mit meinem saleae clone.
funktioniert ohne Änderung des eeproms sofort mit der orginal software, die chinesen lernen auch dazu  ;)


ein kleines simples testprogramm:

code: [select]

void setup()
{
 ddrd |=  (1<<2);
}


void loop()
{
   
 portd |= (1<<2);

 portd &= ~(1<<2);
 
}


bei diesem scope, ist das signal ist 0.125 high und 0,875 low.
 
die loop beginnt mit portd |= (1<<2); das bit setzt.
dies setzt das bit dann zurück  portd &= ~(1<<2);

nach meinem verständnis sollten aber die high und low zeiten hier in etwa identisch sein.
oder macht die die main loop immer ende noch anderes, zeit kostet ?

mit einem  portd ^= (1<<2);   in der loop sind die ergebnisse fast identisch.   

oder macht die die main loop immer ende noch anderes, zeit kostet ?
was wirklich läuft ist das:
code: [select]

int main(void)
{
  init();
  initvariant();
  setup();
   
  (;;)
  {
    loop();
    if (serialeventrun) serialeventrun();
   }
       
  return 0;
}


da geht einiges zeit drauf für das beenden der loop() funktion und deren erneuten aufruf

mach mal selbst noch eine endlosschleife in loop(). der compiler macht dann sehr wahrscheinlich einfach ein jmp daraus und es kosten dich nur 2-3 takte.


Arduino Forum > International > Deutsch (Moderator: uwefed) > Macht die Loop eine Pause ?


arduino

Comments

Popular posts from this blog

invalid use of void expresion in FlexiTimer2 library

error: a function-definition is not allowed here before '{' token

LED Strip Code