Schrittmotor Impulserzeug. / Timer ISR zu langsam Kategorie: CC-Pro Unit & Appl.Board (von Jürgen - 15.12.2008 9:27) | ||
| ||
Hallo Forenuser, ich benötige erneut eure Hilfe, hatte den Beitrag schon mal gepostet aber keine zufriedenstellende Antwort erhalten (Ulli: vielen Dank für Deinen Tipp: der Nachteil an PWM ich kann die Pulse nicht genau zählen was aber Bedingung ist oder ?????) Ich möchte eine Schrittmotoransteuerung mit dem CControl realisieren. Die Endstufenkarte des Steppers verlangt ein Step/Direction Signal. Mein Frage ist dabei wie kann ich solche Steps erzeugen die im Bereich von 0..25kHz.Bedingung ist das ich genau weis wieviele Pulse ausgegeben wurden= Weginfo. - Ist es sinnvoll das mit dem Timer zu realisieren oder mit Absdelay? - Gibt es eventuell eine Lib oder Funktion dafür? - Mein Beispiel von unten funktioniert einwandfrei, ist nur viel zu langsam. Egal welchen Preteiler / Zählkonstante ich verwende, diese Routine mit ISR kommt nicht über 800Hz! - Gibt es eine andere Lösung? - Kann ich diese ISR mit Timer mit der neuen IDE in Assembler programmieren und ist sie dann schneller? Gibt es evtl. schon Assembler Doku mit Beispielen für die neue IDE?? Schon mal vielen Dank für die Hilfe Jürgen Beispiel: #define AnzSteps = 2000 // Anz.Steps bis Schleife abbricht byte busy; // globale Variablendeklaration word stepcount; // zählt die anzahl der perioden = steps void Timer0_ISR(void) { busy=0; //Timer_T0Stop(); //das bring nichts, laut beispiel!? Irq_GetCount(INT_TIM0COMP); } void main(void) { stepcount=0; Port_DataDirBit(PORT_LED1,PORT_OUT); // PORT für Ausgabe vorbereiten Irq_SetVect(INT_TIM0COMP,Timer0_ISR); // Interrupt Service Routine definieren Port_DataDirBit(PORT_LED2,PORT_OUT); // Ausgabe vorbereiten Port_WriteBit(PORT_LED2,PORT_ON); // Ausgang Led2 einschalten while (stepcount Timer_T0Time(150,PS0_8); Port_WriteBit(PORT_LED1,0); // Ausgang auf 0 setzen busy=1; while (busy); Timer_T0Time(150,PS0_8); Port_WriteBit(PORT_LED1,1); // Ausgang auf 1 setzen busy=1; while (busy); stepcount++; } Port_WriteBit(PORT_LED2,PORT_OFF); // Ausgang LED2 ausschalten } | ||
Antwort schreiben Antworten: Re: Schrittmotor Impulserzeug. / Timer ISR zu langsam (von Jo - 15.12.2008 17:44) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum