Forum: Compiler & IDEs MSP430 DCO


von Dirk Schmieding (Gast)


Lesenswert?

Hallo,
versuche schon seit geraumer Zeit den DCO auf eine hohe Taktrate(6,7,8 
MHZ) zu stellen, klappt bei mir aber nicht so richtig. Schaffe mit 
externem Widerstand max. 4MHZ und internem ca.1,2MHZ. Habe RSEL auf 7 
und DCO auf 7 eingestellt und Modulator schon mehrfach verändert. 
Vielleicht kann mir da jemand helfen.

von Lanius (Gast)


Lesenswert?

bei welcher Spannung denn?
1.2MHZ intern erscheint mir sehr wenig.

hab mal folgende (bei 3.6 Volt) Werte gemessen:

    RSEL  |RSEL2  |RSEL1  |RSEL0  |MIN  |MAX
    ---------------------------------------------
    1  |0  |0  |1  |0.12  |0.25
    2  |0  |1  |0  |0.20  |0.41
    3  |0  |1  |1  |0.33  |0.68
    4  |1  |0  |0  |0.56  |1.14
    5  |1  |0  |1  |0.95  |1.94
    6  |1  |1  |0  |1.54  |3.16
    7  |1  |1  |1  |2.46  |5.05

externen Widerstand habe ich noch nie ausprobiert.

von Lanius (Gast)


Lesenswert?

ich hoffe du hast DCOCTL nicht auf 7 gesetzt...

probier mal DCOCTL = 0xFF

von Dirk Schmieding (Gast)


Lesenswert?

Erst mal danke für die Antworten. Hatte Resl und DCOCTL wie von Dir 
beschrieben eigestellt. Was meinst Du mit min und max, je nach 
Einstellung von DCOx ODER?

BCSCTL1 |=( RSEL2 | RSEL1 | RSEL0 );
DCOCTL |= ( DCO0 | DCO1 | DCO2 );

Habe mit die Betriebsspannung auch noch mal erhöht, da ich mit 3V 
gearbeitet habe. Eine leichte Erhöhung der Taktfequenz(50 bis 60KHZ) war 
fest zustellen, mehr aber auch nicht.

von Lanius (Gast)


Lesenswert?

habs nicht mehr genau im Kopf, aber in den unteren Bit's von DCOCTL war 
doch auch noch irgendwas für die Geschwindigkeit...
zu MIN und MAX, die Widerstande stellen den groben Bereich ein, DCOCTL 
dann den Rest, 0xFF war meiner Meinung nach das schnellste, damit lief 
mein MSP430 mit ca 5MHz.

Wo steht eigentlich welche Werte man für den externen Widerstand nehmen 
kann? Hab ich nie gefunden...

von Dirk Schmieding (Gast)


Lesenswert?

Habe irgendwo im einer A-note was von 100K gelesen.

von Lanius (Gast)


Lesenswert?

Habe gerade mal einen externen 100KOhm Widerstand ausprobiert,
damit kommt der MSP430F123 locker über 10Mhz!
Wie stabil er dann noch läuft kann ich dir aber nicht sagen :)

clearBit(P2DIR , BIT5 );    //Pin

setBit(P2SEL, BIT5);       // Pin Funktion select

setBit(BCSCTL2,DCOR); // externen Widerstand ein

setBit(BCSCTL1, RSEL0 + RSEL1 + RSEL2);  // interne Widerstände ein

DCOCTL = 0xdc;       // ca. 10MHz schon bei 0xdc!

nebenbei soll die Frequenz mit externem Widerstand auch noch stabiler 
sein.

von Kai Eckardt (Gast)


Lesenswert?

Laut Doku sollen auch mehr als 5 MHz möglich sein, wenn man einen 
externen Widerstand benutzt. Da steht 5MHz bei 200kOhm und 10 MHz bei 
100kOhm. Nachzulesen in slau049c Seite 4-8. Ich bin gerade dabei eine 
deutschsprachige Referenz zum MSP430f149 zusammenzustellen die dann im 
Netz landet, wenn es was wird. (Mitte/Ende Juli auf 
www.microkontroller.de)

von Kai Eckardt (Gast)


Lesenswert?

Nochmal ich. Mir ist die Bedeutung des DCO-Modulators nicht ganz klar. 
Es wäre super wenn mir das einmal jemand erklären könnte, damit ich das 
in die Referenz aufnehmen (und auch selber anwenden) kann. Weiterhin 
übernehme ich mal die Tabelle von Lanius in diesem Thread. Wenn Du etwas 
dagegen hast melde Dich bitte bei mir.

von Lanius (Gast)


Lesenswert?

was genau verstehst du denn nicht?
ich verstehe auch nur was man wissen muss :)

also RSELx steuern den Strom in den Taktgenerator und damit den groben 
Takt.

DCOx steuert den Takt dann feiner und

MODx am feinsten (schaltet x-mal zwischen zwei DCOx- Einstellungen hin 
und her).

da DCOx und MODx alle sinnvoll in DCOCTL untergebracht sind kann man 
sagen das RSEL den groben Tackt einstellt und DCOCTL den feinen.

von Kai Eckardt (Gast)


Lesenswert?

Also ich hatte es auch so verstanden daß man damit irgendwie seine Takte 
synchronisieren kann. Ich meine, wenn ich einen 32,768 kHz Oszillator 
habe und eine ungenaue DCO.. kann ich dann den Modulator verwenden um 
einen genauen DCO-Takt zu bekommen in dem der DCO alle x Zyklen mit dem 
32 kHz Takt synchronisiert wird ? Und wenn ja, wie kriegt man das hin ?

von Lanius (Gast)


Lesenswert?

zB den Watchdogtimer mit dem 32Khz-Clock 1 Sekunde laufen lassen, TimerA 
mit dem DCO-Tackt, dann TimerA-Interupts zählen und im Watchdoginterupt 
gucken ob zu viele oder zu wenige Interupts da waren und DCOCTL 
vergrößern oder verkleinern.

von Bitwise (Gast)


Lesenswert?

Hallo zusammen,

warum verwendet Ihr denn den DCO? Ich arbeite mit einem Quarzoszillator
an Pin 53 (XT2). Funktioniert sehr gut. Momentan betreibe ich einen
2,5MHz Kristall, habe aber auch schon mit 8MHz (Maximale Taktfrequenz)
gearbeitet.

Gruß Bitwise

von Dirk Schmieding (Gast)


Lesenswert?

Ich neheme den DCO, da ich Platzprobleme habe und Kosten sparen will.

Gruß Dirk

von m@is (Gast)


Lesenswert?

Ich muß aus Kostengründen auf einen externen Quarz verzichten, daher
DCO.

Vielleicht kann ich mir noch einen 32kHz Quarztakt von einem anderen
Bauteil auf der Platine klauen, aber schnell genug wäre ich damit eh
nicht, also Quarz nur für ACLK, DCO für MCLK ;-)

Gruß m@is

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.