theo hat geschrieben: ↑Sa 29. Aug 2020, 16:56
Ein paar andere "Hello World" Progrämmchen noch dazu und schon klappt's mit dem Anwerben.
Versteht ihr das nicht?
Wir machen das hier freiwillig. Wir müssen hier niemanden etwas verkaufen.
Verstehst Du das nicht?
Das Beispiel oben ist leicht - aber leider sinnlos. Warum sollte da jemand seine Zeit ransetzen?
digitalWrite(pin, pegel) ist ein schönes Beispiel, wie Arduino die Ressourcen des AVR vergeudet. Normalerweise geht das unter Pascal ganz einfach:
PORTA := PORTA or SPIN, wobei ich mir SPIN gleich als 1<<PIN definiere, dann muss ich das Shift nicht hinschreiben. Und wenn ich nur ein Pin setzen will, macht der Compiler daraus genau einen Befehl: sbi PORTA, PIN, der dauert genau zwei Takte.
Bei digitalWrite rufst Du aber eine Funktion auf, in der ein beliebiger PIN = Variable gesetzt werden kann. Also muss digitalWrite
1. prüfen auf welchem der 4 PORTs des AVR der Pin gesetzt werden soll
2. per if-else if die Arduino-Pinnummer auf den AVR-Pin mappen - die sind nämlich nicht gleich
3. prüfen ob der Pin überhaupt Ausgang ist und ihn als Ausgang setzen
4. per OR den PIN setzen oder per AND NOT den PIN löschen
Statt eines Befehls mit 2 Zyklen wird ein Dutzend Befehle mit zig Zyklen ausgeführt - um das Gleiche zu erreichen.
Das kann man machen, man kann problemlos eine digitalWrite-Funktion schreiben und vielleicht hat das schonmal jemand gemacht. Aber ich würde da keine Zeit ransetzen, um hinterher etwas zu erhalten was schlechter funktioniert und schlechtere - viel schlechtere - Performance hat.