Wolfgang Karner schrieb:
> Hallo
>
> Ich habe einen Schrittmotortreiber, der auf Impulse reagiert.
> nun habe ich mir überlegt, die PWM dazu zu nutzen.
Der Threadtitel sagt, das du ein Servo benutzt, das ist ein erheblicher
Unterschied zu einem Schrittmotor.
> Beim normalen Mega gibt es ja die emulierte PWM.
Die ist sogar echt, nicht nur emuliert.
> Also das Ein-Signal bleibt gleich und der Abstand/Frequenz ändert sich.
> Wie würde dazu der Code aussehen?
Du wirst wohl den Timer initialisieren müssen. Die XMega Timer haben
auch noch ein PERBUF Register, das die Gesamtlänge eines Durchlaufes
bestimmt - ideal zum Grundfrequenz einstellen.
> Das ich einfach sage, Abstand(OCC1B)=.....
> Programmiere mit C und habe den ATXmega128A3
Zum Beispiel so:
1 | static void TimersInit(void)
|
2 | { // Set up Timer/Counter 0.
|
3 | TCC0.PERBUF = 0x00ff; // Count to 8-bit Max - select your base frequency here
|
4 | TCC0.CCA = 0; // preset PWM to zeros
|
5 | TCC0.CCB = 0;
|
6 | TCC0.CCC = 0;
|
7 | TCC0.CTRLB = TC_WGMODE_DS_T_gc | (0x07 << 4) ; // enable CCA,CCB,CCC
|
8 | TCC0.CTRLA = ( TCC0.CTRLA & ~TC0_CLKSEL_gm ) | TC_CLKSEL_DIV4_gc; // Work from perclk / 1 and run
|
9 | }
|
Die Register heissen natürlich beim XMega anders. Statt OCCBLA sinds nun
CCA, CCB usw.
Die obige Initialisierung setzt keine Portpins auf Ausgang, das musst du
anderweitig erledigen.