PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu OCR1A



Rosenthal
14.10.2005, 09:34
Hallo, ich habe eine (eventuell im voraus schon mal dumme) Frage zu OCR1A.

Ich erzeuge mit Hilfe eines PWM-Signals über eine RC-Kombination eine Sinusschwingung.

Jetzt meine Frage. In dem Programm gibt es ein Array mit 128 Feldern. In diesen Feldern stehen Werte von 0 bis 126.

unsign char sin_wert[128]={70,74,77,...,124,125,126,...,125,124,122,...,3,2 ,1,0,0,0,1,2,3,...70}
in der interuptroutine wird OCR1A der Wert zugewiesen:
OCR1A =(sin_wert[wert++]);
wert++;
if(wert>=126)
wert=0;

Was macht eigentlich OCR1A. Gibt er nur einen "Peak" mit unterschiedlichen Wartepausen aus, oder ändert sich die Pulslänge

||_|||__||||__|||||||||_||||__|||_|| usw. oder
._...__...__....._____....__....__...._
|.|_|..|_|....|_|..........|_|....|_|...|_|..|_

wie sieht denn das PWM-Signal von OCR1A überhaupt bei unterschiedlichen Werten aus?
Etwa so?:
Für "0"......________
..................___
für "64".....|......|____
.................._______
für "128"...|..............|

Ich habe leider kein Oszi zur Hand, sonst würde ich es mir einfach mal anschauen.

Danke schon mal

SprinterSB
14.10.2005, 10:51
Mir fällt da nur was anderes auf:
Deine sin_wert belegt 128 Bytes im Flash und im RAM. Im Ram halten musst du die doch nicht, oder?
Du verwendest nur jeden 2ten Wert aus der Tabelle, weil da 2x ein wert++ gemacht wird.

PWM-Mode gibt es viele verschiedene, sagt das Handbuch nix dazu?

Hanni
14.10.2005, 10:55
Jo, PWM Modi gibt es wirklich viele.

Schau dir mal das Datenblatt etwas genauer an.