Las dein ATtiny über die Serielle-port zu dem PC senden was er macht in jeder stelle der Code und For-loops. Dabei auch die werten von W, I und Z mitsenden. So kannst du das ganze Prozess folgen und seht man wo er stecken bleibt in seiner loops.
Senden von Seriele-daten kostet aber Zeit, und deshalb kann es den Zeit-ablauf schaden.
- - - Aktualisiert - - -
Dein erste I-For-loop kostet kaum Zeit weil es Rasend-schnell von 100 bis 200 die Servo einstellt. Es hat kaum Zeit an zu laufen. Die 2te I-For-loop kostet 12x100 ms, dein 'merkwürdige' 1-1.5 Sekunden Wartezeit, wo den Servo von 200 bis auf 100 ablauft. Den Frage ist aber ob er bei 200 angefangen ist.
Die Z-For-loop kostet auch kaum Zeit weil dort nichts gemacht wird von 1 bis und inklusive 300. Könnte man auch weglassen. Dann schaltet Portb.1 ein, wartet es 1500 ms und schaltet Portb.1 aus. Danach endet den Z-Do-Loop gleich weil Z gerade 300 geworden ist am ende der Z-For-loop. Es wird gar nicht wiederholt.
Du hast kein Information ob das Programm sich in die W oder Z schleife befindet wann die Portb.1 für 1.5 Sekunden Hoch ist. Du vermutest das es zwischen W und I ist, aber wenn W weniger als 150 ist wird den Wartezeit nicht passieren. Das könnte einfach deine Patron-Observierungen irren.
Statt das an-/ausschalten von Portb.1 in beider 1500ms Wartezeiten solltest du in einer von den Wartezeiten die Portb.0 an-/ausschalten. Und mindestens mit beider Pins jeder ein Led leuchten lassen.
Lesezeichen