Karl Heinz Buchegger schrieb:
> Indem du die Drehzahl linear variierst und dann zurückrechnest, welche
> Stepperzeit du für die nächste zu erzielende Drehzahl brauchst?
> (Und dem Schrittmotor auch ein wenig Zeit geben, damit er auch auf diese
> Drehzahl beschleunigen kann. Du weißt schon ... träge Masse und so)
Und um ehrlich zu sein, würde ich mir die entsprechenden Werte in deinem
Fall im voraus einfach ausrechnen und in Form einer Tabelle ablegen.
Wenn da die Vorgabewerte für 3 oder 4 Sekunden beschleunigen/abbremsen
mit einer Auflösung von 0.1 Sekunden drinnen enthalten sind, dann reicht
das ja völlig aus.
2 Timer.
Der eine erzeugt die Schrittmotorpulse laut Vorgabe mittels CTC und ISR
(oder Fast-PWM)
Der andere jubelt dem Schrittmotortimer alle 0.1 Sekunden den jeweils
nächsten Wert aus der Tabelle unter, je nachdem ob zu beschleunigen oder
zu bremsen ist.
Edit: Wobei
Den 2.ten Timer braucht es noch nicht mal. Die Hauptschleife hat eh
nichts zu tun, und ob die bei einem Durchgang nach Prüfung der Taste
noch den Schrittmotortimer beschickt und dann noch einen _delay_ms(100)
macht um auf das Timing zu kommen, ist auch schon wurscht.
jetzt muss man halt mal klären, welche CTC Werte sich durch die
vorgesehenen Drehzahlen ergeben und ob man mit einer einfachen Variation
des ICR-Wertes durchkommt, oder ob man dem Timer auch noch den Prescaler
im laufenden Betrieb umschalten muss. Ist zwar auch kein Beinbruch aber
drauf achten hat noch niemandem in der Vorbereitungsphase eines
Programms geschadet.