Forum: Mikrocontroller und Digitale Elektronik Frage zu Taktung des MSP430x2xx


von Christian M. (charlie)


Lesenswert?

Hallo zusammen!

Aus Energiegründen musste ich jetzt von meinen guten, alten Atmels zu 
der MSP430 Reihe von TI wechseln, allerdings komm ich nicht so ganz mit 
dem Datenblatt/User Guide zurecht.

Momentan experimentiere ich etwas mit dem MSP430F2013, genauer gesagt 
mit dem eZ430-F2013 Dev. Tool, als Entwicklungsumgebung benutze ich die 
IAR Embedded Workbench IDE (neuste Version), ebenfalls von TI, 
Programmiersprache: C.

Ich habe schon erfolgreich Programme mit Timer und deren Interrupts 
geschrieben, damit hauptsächlich die verschiedenen Clk's "geteilt" und 
durch die LED dargestellt. (ok, mit dem Oszi ist das wesentlich 
einfacher zu messen, wenn man den Takt direkt auf den Port gibt, aber 
das diente nur zur Übung)
Mein Problem: ich möchte jetzt mit der DCO umgehen lernen. Mir ist klar, 
dass es sich dabei nur um das setzen von den "Basic Clock System Control 
Register" und dem "DCO Control Register" handelt, allerdings tu ich mir 
dabei etwas schwer. Ich werde später einen 16MHz Takt nutzen (müssen), 
aber ich weiß nicht genau wie ich die Bits setzen muss, dass was 
vernünftiges rauskommt. Gibt es da irgendwie eine konkrete Auflistung 
o.Ä.? Oder beruht das einfach auf ausprobieren?

Ich habe des weiteren, auch im Beispiel-code von TI, gesehen, dass hin 
und wieder ein externer 32kHz Crystal Oszillator benutzt wird. Der MSP 
hat ja auch eine 32kHz clock integriert, zwar kein crystal und somit 
nicht ganz genau aber ich frag mich: wann braucht man diese eigentlich? 
Z.B. bei UART Verbindungen also wenns auf exakte timings ankommt?

Soviel erstmal. Vielen Dank im Vorraus!

Christian

von Christian M. (charlie)


Lesenswert?

EDIT: Frage 1 hat sich teilweise gerade selbst beantwortet... ein paar 
Frequenzen sind ja vordefiniert. Aber wenn man was "exotische" braucht 
wäre eine Tabelle dennoch nicht schlecht

von Jörg S. (joerg-s)


Lesenswert?

>Ich werde später einen 16MHz Takt nutzen (müssen), aber ich weiß nicht
>genau wie ich die Bits setzen muss...
1
BCSCTL1 = CALBC1_16MHZ; 
2
DCOCTL  = CALDCO_16MHZ;
:)

>Der MSP hat ja auch eine 32kHz clock integriert
Nö, hat er nicht. Das ist ein (sehr ungenauer) 12kHz. Und den haben auch 
nicht alle.

>wann braucht man diese eigentlich?
Wenn du sehr sehr wenig Strom verbrauchen willst aber noch einen Takt 
benötigst der nicht sonderlich genau sein muss.

>Z.B. bei UART Verbindungen also wenns auf exakte timings ankommt?
Da kommst du mit 12kHz nicht weit, da muss es schon min. der DCO sein.

von Christian M. (charlie)


Lesenswert?

Danke für die Antwort!
Ja stimmt, das war ein 12kHz..

Es klappt jetzt langsam mit der Programmierung. Die Unterschiede zum 
Atmega sind doch nicht soo rießig, wie ich gedacht hab.

Aber mal noch was anderes: Ich werde später den F2274 benutzen. Das 
ganze soll dann ein "UltraUltra" Low-Power-Device werden was sich die 
meiste Zeit im Ruhemodus (LPM3 oder LPM4) befindet und jeweils nur kurz 
in Operation-Mode wechseln soll. Genauer:
Ich habe vor, per Comparator-Interrupt (Sensorwert) den Controller 
aufzuwecken, dieser muss so schnell wie möglich da sein (~10µs), mit dem 
ADC mit 200ksps ungefähr eine Sekunde sampeln, kurz auswerten und sich 
dann wieder schlafen legen.
Laut Datenblatt ist der Controller aus LPM3 in 6 oder 7µs da, kann das 
jemand bestätigen? Gilt das auch für 16Mhz? Ich werde es dann sowieso 
Nachmessen müssen, aber vielleicht hat da schon jemand etwas gemacht und 
kann gleich sagen, dass es nicht möglich ist. Dann könnte ich mir die 
Investition sparen und nach anderen alternativen ausschau halten.

Christian

von Jörg S. (joerg-s)


Lesenswert?

>Laut Datenblatt ist der Controller aus LPM3 in 6 oder 7µs da, kann das
>jemand bestätigen? Gilt das auch für 16Mhz?
Ich meine je höher die Frequenz, desto langsamer wacht er auf bzw. 
braucht länger zum anschwingen. Genaue Daten hab ich jetzt aber auch 
nicht im Kopf.

von Falk B. (falk)


Lesenswert?

Siehe Sleep-Mode, das gilt prinzipiell auch für den MSP. Wenn er 
schnell wider loslegen soll muss man einen RC-Oszillator (DCO) 
verwenden.

MFG
Falk

von Christian M. (charlie)


Lesenswert?

ok, ich bin zuversichtlich das es mit dem MSP klappt. Werde es einfach 
mal ausprobieren.

Viele Grüße
Christian

von Mika (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

schau mal im Datasheet auf S. 36: Der MSP430 wacht in 1us aus dem LPM3/4 
auf. Eine Formel zur Berechnung der DCO Einstellung findest du ebenfalls 
im Datasheet (S. 32ff).

Viele Grüße,
Mika

von Christian M. (charlie)


Lesenswert?

Danke, das ist genau die Information nach der ich gesucht hatte! Sind 
aber auch so viele Tabellen im Datenblatt :D

Viele Grüße
Christian

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
Noch kein Account? Hier anmelden.