Wieso zum Geier schreibe ich den ixten Schrittmotor Steuerungssoftware....
... Um zu lernen :)
Was lernt man dabei... sehr viel kann ich nur sagen!
Erst mal vielen Dank an Lutz für die zahlreichen Tips und Hilfe beim Programmieren.
Hier grob eine Auflistung was ich bei diesen Projekt an Erfahrungen gesammelt habe.
Learnings beim Arduino Programmierung: - digitalWrite von Arduino Library ist lahm. Wenn man ein kurzen Puls generieren möchte, muss man direkt die 8 bit Register für die Digital Ports ansprechen.
- Je nach Atmel gibt es unterschiedliche Interrupts die je nach Anwendung passend ist.
- Die 16.000.000 Hz für ein Mikroprozessor kling auf den ersten blick recht viel. Aber, auch wenn man nur 10 kHz an puls via Interrupt erzeugen möchte, hat man Zwischen den Interrupt aufrufe brutto 1600 CPU Takte. Von den theoretischen 1600 Takten müsste man aber noch die Umschaltzeit abziehen die der Interrupt für Aufruf und Rücksprung benötigt. Dann natürlich die Takte, die Befehle die innerhalb des Interrupts ausgeführt werden benötigen. Und, meistens hat man ja auch noch Befehle die in der Hauptschleife laufen. Summa summarum kann 1600 CPU Takte schnell knapp werden.
- Ergo, will man mit den 1600 CPU Takte effektiv wie möglich umgehen. Effektiv bedeutet hier, möglichst 100% der Takte nutzen die man zur Verfügung hat. Sprich, Codeoptimierung ist das A und O.