PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pwm config verständnisfrage [erledigt]



lowtzow
12.12.2008, 18:25
hallo

habe mir einen funktionierenden code zusammengebastelt der ein
8bit pwm ausgibt. ich habe nur verständnisprobleme mit dem register tccr1b;
denn laut datenblatt gibt es im tccr1b kein wgm10!


TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0);

TCCR1B = (1<<CS11) | (1<<WGM10);


nehme ich aus dem tccr1b wgm10 hinaus, so ändert sich die frequenz des pwm signales
aber wgm10 steht ja im tccr1a laut datenblatt?!





TCCR1A = (1<<WGM10) | (1<<COM1A1) | (1<<COM1A0);

TCCR1B = (1<<CS11);

verstehe ich echt nicht, die funktion ist zwar die selbe, d.h. ich bekomme die selbe spannung an meine led, aber mit einer viel höheren frequenz, eventuell kann mir wer die lösung des problemes weiterhelfen.

habe im datenblatt und im gcc tutorial nichts dazu gefunden.



mfg & danke
low


ps. bin von bascom auf c umgestiegen! ist auch viel intressanter sich mit den registern zu beschäftigen als baugruppen zusammenzuführen ;-)

Besserwessi
12.12.2008, 18:41
Die Bezeichnungen sind nur Platzhalter für Zahlen von 0 bis 7. Dabei spielt es überhaupt keine Rolle für welche Register oder sonstige Sachen man das Benutzt, das unterscheidet der Compiler nicht weiter und gibt entsprechend auch nicht mal eine Warnung.
Die Ausführlichen bezeichnungen für die Bits sollen nur einfach den Code lesbarer machen. Deshalbt sollte man sie natürlich nur da verwenden wo es paßt, sonst stiftet es halt nur noch mehr Verwirrung.

lowtzow
12.12.2008, 18:53
jetzt hab ichs verstanden!

WGM10 steht für 0, egal welches register ich mit WGM10 beschreibe, wird immer das 0.bit beschrieben!

habe es auch grad probiert, statt wgm10, cs10 ins tcrr1b geschrieben und siehe da die selbe funktion.


danke für die erklärung, hat nach einigen überlegen und einem edit sehr geholfen.

;-)