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:
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.
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
Post a Comment