Bevor die Diskussion weiter entgleitet: Ich denke, jeder wird mit der Zeit seine eigene bevorzugte Herangehensweise an neue Dinge entwickeln - und die scheinen nicht immer kompatibel zu einander zu sein. Vielleicht lässt man das einfach so stehen.
@DL4VAL
Ich selbst bin froh, wenn ich mich nach einem halben Jahr im Source-Konzept eines abgeschlossenen Hobbyprojekts wieder zurecht finde. Bis auf wenige Detaillösungen habe ich mir allen Sourcecode meiner
Projekte Schritt für Schritt selbst erarbeitet und zum funktionieren gebracht.
Diesen Weg und die damit verbundenen Erfolgserlebnisse will ich dir gar nicht ersparen bzw. vorenthalten. (Wenn du da Faulheit herausliest, würde ich das nicht mal dementieren).
In den angehängten Quelltext mag ich mich nicht im Detail(siehe oben) einlesen. Allerdings hab ich nach dem org 0x00 ein 'goto Init' gesehen, da würde ich immer ein 'call Init' erwarten, damit der Programmfluss auch wieder zurück kommt und dann das 'goto main' ausführt (goto ist hier möglich aber unfein). Mich wunderts, dass überhaupt was halbwegs sinnvolles passiert.
Ich schlage stattdessen vor bzw. empfehle dir:
- fang mit der Einrichtung eines Timerinterrupts an, z.B. 1ms Zyklus.(d.h. Prescaler, Timer-Config, Preloadwert setzen, PIE & GIE-Register passend machen)
- dann lass je Durchlauf eine Zählervariable inkrementieren
- werte das Bit 7 der Zählervariable aus: wenn gesetzt, dann LED einschalten, andernfalls LED ausschalten
Fertig ist eine Blinkfunktionalität (wenngleich vermutlich zu hektisch)
Dann: baue eine Delayfunktion
in der ISR, die den Controller nicht für andere Aufgaben blockiert:
- wenn restzeit > 0, dann dekrementiere restzeit
- wenn restzeit == 0, dann
- invertiere den Pegel auf der Steppertreiber-Pulsleitung ; das ist der eigentliche Nutzen
- setze restzeit auf den Startwert
Fertig ist die frequenzstabile Pulserzeugung für den Steppertreiber
Wenn die Pulserzeugung klappt, kannst du die Richtungssteuerung dazubauen
Dann vielleicht die Zeitmessung für die EIN-Zeit einer Taste (wie bereits beschrieben)
und so weiter ...
Spiele mit den Möglichkeiten, sammle Erfahrung und lass das Datenblatt nicht kalt werden.
Gruß
RoboHolIC
Lesezeichen