Seb schrieb:
> in das Unterprogramm gehe, bleiben meine Millis stehen, also die Zahl
> erhöht sich innerhalb des Unterprogrammes nicht weiter. Dass Delays
> nicht funtkionieren ist klar, aber millis() und micros()?
Natürlich nicht, die millis zählt ein Timer1 Overflow Interrupt,
und innerhalb einer Interrupt-Routine sind Interupts gesperrt.
Man kann sei() machen um sie wieder zu erlauben, aber ob man dann
nochmal dran kommt, und wann dann der stack voll ist, ist unklar, hängt
also von deinem Programmierkenntnissen ab, die wohl eher gering sind.
Eine Interrupt Bearbeitung sollte nie 1ms r länger dauern, sondern in
Mikrosekunden abgeschlossne sein, damit der uC nicht steht.
Wenn man was längeres machen muss, sollte die Interrupt-Routine nur en
volatile flag setzen, und die Programm Hauptschleife fragt das dann ab
und macht weniheger zeitkritische Restbearbeitung.
Z.B. Interrupt legt nur das nächste Zeichen von seriellem Interface in
Buffer ab damit der Empfangsbuffer nicht überläuft, die
Programm-Hauptschleife bearbeitet dann das gesendete Kommando wenn es
vollständig ist.