Forum

Einloggen | Registrieren | RSS  

vermutlich auf einem µC ? (Elektronik)

verfasst von hws(R) E-Mail, 59425 Unna, 07.03.2010, 22:48 Uhr

» Ich weiß nur, dass bei dem Wobbel irgentwie sich die
» Frequenz erhöht bis zu einem gewissen wert und dann der Wobbel wieder von
» seinem Startwert her beginnt.

Und daher irritiert mich die beiden gegenläufigen PWM Signale.

Eine (Rechteck)-Schwingung in der Frequenz zu ändern geschieht anders als ein PWM-Verhältnis zu manipulieren.

Nehmen wir mal die Sache mit der PWM Manipulation. Eine komplette Rechteckschwingung soll ein Tastverhältnis (PWM) von 1/16, 2/16... 15/16 haben. (oder auch von 0/15 bis 15/15, auf jeden fall die angegebenen 16 Teile)

Entweder ist die Frequenz (und damit die Zeit) der kompletten Schwingung gegeben, dann ist die kleinste Zeiteinheit 1/16 davon (damit man 1..16 Stufen reinkriegt)

Oder die Dauer der einzelnen Stufen ist gegeben.

Auf jeden Fall muss zum Anfang jeder dieser 16 Teileinheiten ein Interrupt (Timertick) kommen, wo dann entschieden wird, was passiert.

Grundfunktion: der Timer incrementiert einen Zähler, der von 1..16 (bzw in der µC Technik üblicherweise von 0..15) läuft und dann eben modulo wieder bei 0 anfängt.
-Für µC's und Prüfungsaufgaben übrigens nett gewählt, ist genau ein 4-Bit Zähler ;-)
Ist der Zähler 0, wird der Ausgang auf H gesetzt.
Dann wird der Zähler mit einer Variable (die 1..15 sein darf) verglichen und wenn Zähler = Variable, wird der Ausgang wieder auf L gesetzt.

Das Spiel wiederholt sich ständig und wir erhalten einen Rechteck mit der Frequenz 1/(16 mal Timerticks).
Das Tastverhältnis hängt von dem Inhalt der Variablen ab.

Jetzt kann man den Inhalt der Variablen auch ändern. Jeden Komplettdurchlauf, jeden zweiten ... jeden n-ten.

Somit wird die PWM gewobbelt.

Freuenzen wobblen (bei vorerst mal angenommenen 50% Tastverhältnis) könnte man so machen:
Erstmal alle Frequnezangaben in Zeit umrechnen (t=1/f) dann wird das Verständnis einfacher.
Gucken, in welchen kleinsten Zeit (=Frequenz) Einheiten manipuliert werden muss. Das ist die längste Zeit, die zwischen den einzelnen Timerticks liegen darf.
Wir nehmen auch wieder einen Zähler und inkremetieren den bei jedem Timertick. Der Zähler läuft modulo N, wobei N eine Variable ist, die die Frequenz (Zeit) des Ausgangssignales bestimmt.
Zähler = 0 dann ausgang setzen.
Zähler = N/2 dann Ausgang rücksetzen (wegen Tatverhältnix 50%)
Zähler = N dann Zähler auf 0 setzen.

Jetzt läuft der Zahler ständig von 0..N und je größer man N wählt, desto niedriger die Ausgangsfrequenz.
Und N kann man auch dynamisch ändern, beispielsweise bei jedem Durchlauf, jedem 2. 3. ... x-ten.

Und wenn man den Ausgang nicht jeweils bei N/2 sondern bei einem (per zweiter Variable) veränderbaren Wert 1..N-1 umschaltet, dann hat man sowohl Frequenz als auch Tastverhältnis-Änderung.


» Bei dem Timer haben wir bisher immer für den ACLK 32768Hz genommen, bzw.
» für den MCLK SMCLK 1,048 MHz hilft das vielleicht weiter?

32768 ergibt bei Teilung einen Sekundentakt (2^15 = 32768, also mit 15 FF's zu realisieren)

1,048MHz gibt exakte Werte für einen Baudratengenerator, wenn man ne serielle Übertragung macht. (Baudrate*16*2^irgendwas).



hws



Gesamter Thread:

Wobbelgenerator in C als Funktion erstellen? - Paul, 07.03.2010, 15:00 (Elektronik)
vermutlich auf einem µC ? - hws(R), 07.03.2010, 16:17
vermutlich auf einem µC ? - Paul, 07.03.2010, 16:52
vermutlich auf einem µC ? - Paul, 07.03.2010, 17:00
vermutlich auf einem µC ? - Paul, 07.03.2010, 17:02
vermutlich auf einem µC ? - hws(R), 07.03.2010, 18:22
vermutlich auf einem µC ? - Paul, 07.03.2010, 21:36
vermutlich auf einem µC ? - hws(R), 07.03.2010, 22:48
vermutlich auf einem µC ? - Paul, 08.03.2010, 00:38
vermutlich auf einem µC ? - hws(R), 08.03.2010, 16:48