Forum: Mikrocontroller und Digitale Elektronik AVR USB1287 PWM


von FiveStep (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe den AVR USBKEY (mit ATUSB1287) mit welchem ich einen Servomotor 
mittels PWM ansteuren möchte. Das PWM läuft, hat aber die falsche 
Frequenz, resp.  Periodendauer. Die Periodendauer sollte 20ms betragen, 
ist aber effektiv 160ms. Hat jemand von euch eine Idee, an was das liege 
könnte?

von Stefan Salewski (Gast)


Lesenswert?

Clock prescaler 8 statt 1.

von FiveStep (Gast)


Lesenswert?

Der prescaler für den Timer 3 ist doch auf 8, oder hab ich was 
überschaut?! Im TCCR3B sind folgende Bits gesetzt: WGM33 für PWM modus 
und CS31 für Prescaler: TCCR3 hat den Wert 0b00010010, was Hex 0x12 
enstpricht.

von Stefan Salewski (Gast)


Lesenswert?

>hab ich was überschaut?!

Ich habe nicht geschaut -- kein Realname und einige Tippfehler.

Die knappe Antwort gab es nur für die Großbuchstaben.

Der AT90USB1287 hat doch einen Prescaler für den Takt des Prozessors.
Soweit ich mich erinnere hat der USBKEY einen 8 MHz Quarz, aber der 
Prescaler teilt vorgabemässig durch 8. Dann läuft eben der gesamte uC 
nur mit 1 MHz, dass passt zum Fehlerbild. Prescaler kann man per Fuses 
(evtl. problematisch mit USBKEY) oder per Software umstellen. Ein Blick 
ins Datenblatt schadet nicht. Der avr-gcc Code sieht ungefähr so aus:

http://www.ssalewski.de/USB-Sources/SUDD.c

int main(void)
{
  cli();
  CLKPR = (1<<7);
  CLKPR = 0;

von FiveStep (Gast)


Lesenswert?

Vielen Dank für die schnelle Antwort. Das mit dem Prescaler für den uC 
habe ich wirklich übersehen. Jetzt funktioniert es auf jeden Fall.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.