www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 FG4618 - TACCR0 Funktionsweise


Autor: Stefan M. (stefan_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Opa und Oma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan M. (stefan_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ^^

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.