Hey, ich schlag mich immer noch mit dem Beispielcode aus der TI Datei msp430xG46x_dma_07_CCE.c rum. Ich hänge da gerade an der Stelle: TACCTL1 = OUTMOD_3; // TACCR1 set/reset TACCR1 = 01; // TACCR1 PWM Duty Cycle TACCR0 = 025-1; // Clock period of TACCR0 TACTL = TASSEL_2 + MC_1; // SMCLK, upmode Explizit Zeile 3. Was genau bedeutet diese? Wenn ich mein Sinussignal an dem entsprechenden PIN abgreife, erhalte ich eine Frequenz von 1,5 kHz pro Periode. Wie kommt diese Frequenz zustande und wie kann ich sie ändern?
Hallo, ohne mich mit deinem BSP auseinandergesetzt zu haben, im Upmode beginnt der Zähler bei 0 und zählt bis er TACCR0 erreicht hat. Danach beginnt er wieder bei 0 usw. Wie schnell von 0 bis 25-1 gezählt wird, bestimmt die Clockeinstellung. Du hast SMCLK als Clocksource eingestellt. Schau nach mit welcher Frequenz die Taktung von SMCLK erfolgt. Ob nun eine Periode des Zählers (also 0 bis 24) auch eine Periode deines Sinus ist, weiß ich nicht ohne mir den Rest des Code anzuschauen. Nimm Dir den USERGUIDE zu deinem MSP und lies das Kapitel Basic Clock Module. Finde heraus was ein Lookuptable im Zusammenhang mit der Erzeugung von Sinussignalen ist. Viel Spass ich
Hi, also in der Datei steht als Beschreibung folgendes: // Description: DMA0 and DMA1 are used to transfer a sine and cos look-up // table word-by-word as a repeating block to DAC12_0 and DAC12_1. The // effect is sine and cos wave outputs. Timer_A operates in upmode with // TACCR1 loading DAC12_0 amd DAC12_1 on rising edge and DAC12_OIFG // triggering next DMA transfers. DAC12_0 and DAC12_1 are grouped for // jitter-free operation. ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default // DCO = 32 x ACLK = 1048576Hz Demzufolge wäre mein SMCLK = 1048576Hz , oder? Das Register TACCRO wird jedoch mit dem Takt von ACLK abgezählt. Denn wenn ich dort die Dezimalzahl 32768 eingebe, ist meine Periode genau 1 Sekunde lang. [Wieso wird an dieser Stelle überhaupt mit Oktalzahlen gearbeitet?] D.h. der Takt gibt an, in welcher Zeit der Ausgang vom DAC die Werte ausgibt. Mit meinen 32 Werten aus der LookUpTable, die im DMA Speicher hin und her geschoben werden, um diese dann vom DAC umzuwandeln und auszugeben, erhalte ich bei einem TACCRO = 32768 eine Periode von einer Sekunde. Halbiere ich TACCR0, verdoppelt sich die Periode auf 2 Perioden pro Sekunde. Kann man sagen, dass der Sinus durch die 32 vorgegebenen Werte mit einer Periode aus der LookUpTable schon fest gespeichert ist und er durch den Wert im TACCR0 nun die Frequenz dieses Sinus eingestellt werden kann? Denn wenn ich eine Sinusperiode, erzeugt aus 32 Werten, als "Bild" festlege (nur mal angenommen ;)) und er bei TACRR0 = 32768 ein "Bild" pro Sekunde ausgibt ... und man dann TACCR0 halbiert und er 2 "Bilder" pro Sekunde ausgibt ... entspricht diese Frequenz der "Bildinformation" ... in meinem Fall dann 2 "Bilder" pro Sekunde = 2 "Sinusperioden" pro Sekunde. Könnt ihr mir folgen ^^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.