Forum: Mikrocontroller und Digitale Elektronik MSP430 DCO Calibrierung


von Tim H. (msp430h)


Lesenswert?

Hallo zusammen,

kurz un knapp ich möchte den DCO selbst komplett einstellen mit den 
Calibierungswerten der MODx Bits aus dem DCOCTL register.

leider finde ich nirgend wo die werte im Datenblatt dafür, könntet ihr 
mir helfen wo ich sie finde?

so möchte ichs nicht machen : DCOCTL = CALDCO_8MHZ;
                        BCSCTL1 = CALBC1_8MHZ;

ich weis ist der einfachste weg aber ich will verstehen wo der µc die 
MODx werte herholt und wie.

Danke im Vorraus

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tim H. schrieb:
> ich weis ist der einfachste weg aber ich will verstehen wo der µc die
> MODx werte herholt und wie.

Da wird nichts "hergeholt", da werden bei der Herstellung ermittelte 
Konstanten in das Register geschrieben.

Dachtest Du, der Controller würde an dieser Stelle irgendwas selbsttätig 
kalibrieren?

von Clemens L. (c_l)


Lesenswert?

Der DCO ist ein simpler R/C-Oszillator. RSELx wählt einen Widerstand, 
DCOx einen Kondensator, und MODx schaltet zwischen zwei benachbarten 
DCOx-Werten hin und her.

Diese Komponenten sind ziemlich ungenau (insbesondere R), deswegen 
findest du im Datenblatt (Abschnitt "DCO Frequency") so große Toleranzen 
für die einzelnen Einstellungen.

Direkt nach der Hestellung jedes Chips wird ausprobiert, mit welchen 
Werten man für diesen Chip am besten bestimmte Frequenzen erreicht; 
diese Werte werden als CALxxx_xMHZ ins Flash geschrieben.

: Bearbeitet durch User
von Tim H. (msp430h)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Dachtest Du, der Controller würde an dieser Stelle irgendwas selbsttätig
> kalibrieren?

Hallo rufus,

mir war/ist schon klar das die Calibrierten Werte von der Firma ins 
register geladen werden aber in welches?

irgendwie muss ich die Werte doch auch manuell in die MODx Bits des 
DCOCTL Register bekommen.

Clemens L. schrieb:
> CALxxx_xMHZ ins Flash geschrieben.

Hallo Clemens,

ins Flash?
der wird doch überschrieben wenn ich meinen FET anschliese und die 
einstellung earase aktiviert habe.

Muss doch ein register wie ein EEPROM geben wo die Werte drin stehen.

Danke

von Christian R. (supachris)


Lesenswert?

Die Daten werden bei der Herstellung ins Segment A des Info Flash 
geschrieben. Daher ist das Segment nochmal extra mit einem Bit gegen 
Löschen geschützt.

von Tim H. (msp430h)


Lesenswert?

Christian R. schrieb:
> Daher ist das Segment nochmal extra mit einem Bit gegen
> Löschen geschützt.

Danke Christian.

das hilft mir weiter dann schau ich mal mir Segment A an und gucke 
welche werte für was stehen

von Bernd N (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tim H. schrieb:
> irgendwie muss ich die Werte doch auch manuell in die MODx Bits des
> DCOCTL Register bekommen.

Na, genau das machst Du aber, wenn Du das machst, was Du nicht machen 
willst:

> so möchte ichs nicht machen :
> DCOCTL = CALDCO_8MHZ;
> BCSCTL1 = CALBC1_8MHZ;


> das hilft mir weiter dann schau ich mal mir Segment A an und gucke
> welche werte für was stehen

Na, das sagen doch schon die von TI verwendeten Namen der Macros.

Die tatsächlichen Werte, die im Flash an dieser Stelle stehen, sind für 
Dich nicht relevant, da sie vom einzelnen von Dir verwendeten Controller 
abhängen. Die Werte können durchaus von Fertigungscharge zu 
Fertigungscharge oder auch innerhalb einer Fertigungscharge schwanken. 
Controller A kann also andere Werte haben als Controller B.

von Easy (Gast)


Lesenswert?

Einfach den Header öffnen und einen Blick auf das Makro werfen. Da 
stehen die Infos drinne. Das Datenblatt sollte es auch zeigen. Welchen 
MSP verwendet du?

von Holm T. (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Tim H. schrieb:
>> ich weis ist der einfachste weg aber ich will verstehen wo der µc die
>> MODx werte herholt und wie.
>
> Da wird nichts "hergeholt", da werden bei der Herstellung ermittelte
> Konstanten in das Register geschrieben.
>
> Dachtest Du, der Controller würde an dieser Stelle irgendwas selbsttätig
> kalibrieren?

....naja...geht schon.
Es gibt Code der in Verbindung mit einem 32Khz Quarz den DCO kalibriert, 
selbstständig. Frißt natürlich aber Platz im Flash und hat den Haken, 
daß der DCO dann trotzdem noch driftet wenn der Chip nach dem 
kalibrieren weiter läuft.

Gruß,

Holm

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Holm Tiffe schrieb:
> ....naja...geht schon.
> Es gibt Code der in Verbindung mit einem 32Khz Quarz den DCO kalibriert,
> selbstständig.

Das ist eine komplett andere Baustelle und hat exakt gar nichts mit 
der Verwendung der CALDCO-Konstanten zu tun.

von Tim H. (msp430h)


Lesenswert?

Easy schrieb:
> Welchen
> MSP verwendet du?

MSP430F2272

von Holm T. (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Holm Tiffe schrieb:
>> ....naja...geht schon.
>> Es gibt Code der in Verbindung mit einem 32Khz Quarz den DCO kalibriert,
>> selbstständig.
>
> Das ist eine komplett andere Baustelle und hat exakt gar nichts mit
> der Verwendung der CALDCO-Konstanten zu tun.

Kann es sein das Du das gerne machst? Ich meine ohne genau zu wissen von 
was man redet den Kommentare als uninteressant abstempeln und Leute für 
blöde deklarieren? Manchmal kommt es vor, das Sowas zurück schnappt, im 
konkreten Falle nämlich dann, wenn der entsprechende Kalibrierwert für 
den DCO und die fragliche Frequenz vom Hersteller nicht auf der 
Flashpage eingetragen wurde und man den selbst dort nachtragen muß, 
nicht wahr?
Du liegst also Sowas von komplett daneben, das italic kannst Du bitte 
selbst nachtragen.

Gruß,

Holm

von Peter (pwp)


Lesenswert?

>>> Es gibt Code der in Verbindung mit einem 32Khz Quarz den DCO kalibriert,
>>> selbstständig.
>>
>> Das ist eine komplett andere Baustelle und hat exakt gar nichts mit
>> der Verwendung der CALDCO-Konstanten zu tun.
>
> konkreten Falle nämlich dann, wenn der entsprechende Kalibrierwert für
> den DCO und die fragliche Frequenz vom Hersteller nicht auf der
> Flashpage eingetragen wurde und man den selbst dort nachtragen muß,
> nicht wahr?

Es empfiehlt sich immer, die im Flash befindlichen Werte auf 
Plausibiilität zu überprüfen. Verlassen darfst du dich darauf nicht.
Wenn du nix findest nimmst du die Näherungswerte vom Datenblatt.

Wenn du deine DCO Korrektur allerdings mit dem 32kHz Quarz machst 
brauchst dus auch nicht in den Flash schreiben, diese Korrektur kannst 
du öfters laufen lassen. (Dann brauchst du auch die CALDCO Werte nicht 
verwenden)


Gruß
Peter

von Holm T. (Gast)


Lesenswert?

Ja Peter, ich weiß.
Ich glaube mich zu erinnern das für den G2553 kein DCO Kalibrierwert für 
16Mhz eingetragen ist (seitens TI), deswegen auch meine Bemerkung.
Man kann natürlich 1x gegen einen Quarz kalibrieren und dann ohne Quarz 
arbeiten (wenn man die Beine für was Anderes braucht).

Das anzumerken war der einzige Grund warum ich das hier überhaupt 
breitgetreten habe.

Gruß,

Holm

von ./. (Gast)


Lesenswert?

Hier eins meiner aelteren Machwerke:

Beitrag "MSP430G2XX DCO-Kalibrator"

Da findet sich auch ein Auszug aus einem INC fuer die Konstanten.

Koennte evtl. auch mit dem G2553 funktionieren und traegt auch
fuer 16 MHz einen Wert in den INFOA-Flash ein.

von Juergen P. (optronik)


Lesenswert?

MSP430G2553 hat Kalibrationswerte für 1, 8, 12 und 16 MHz abgelegt und 
zwar im Segment A (0x10C0 - 0x10FF).

von Holm T. (Gast)


Lesenswert?

Ich bin mir sehr sicher, das zumindest die Teile die ich hier habe 
(Mouser) das nicht so haben.

Zumindest für den 2231 habe ich im Netz das hier gefunden:

...There are of course few other annoying "features" of that low-end 
chip such as lack of the hardware UART and missing DCO calibration 
values for all frequencies other than 1 MHz. An...
(http://mspfreaks.blogspot.de/)


IMHO ist das bei meinen 2553 nicht anders.

Ja, auch ich habe die beiden Datenblätter gelesen.

Gruß,

Holm

von Easy (Gast)


Lesenswert?


von Peter (pwp)


Lesenswert?

Hallo
hab gerade nochmal in den header Dateien geschaut:

#define CALDCO_16MHZ_
#define CALDCO_12MHZ_
#define CALDCO_8MHZ_
#define CALDCO_1MHZ_

Das sind die defines, die für den F22x2 vorhanden sind

Grüße
Peter


Easy schrieb:
> Tim H. schrieb:
>> MSP430F2272
>
> Datenblatt http://www.ti.com/lit/ds/symlink/msp430f2272.pdf
> Seite 18 und 19
> und
> FUG http://www.ti.com/lit/ug/slau144j/slau144j.pdf
> Kapitel 24 ab Seite 581

von Tim H. (msp430h)


Lesenswert?

Hallo zusammen,

nach längerer Pause habe ich mich wieder dran gesetzt und bin zu dem 
einfachsten Ergebnis gekommen :)
1
if(CALDCO_xMHZ == 0xFF && CALBC1_xMHZ == 0xFF){
2
 // Nutze angegebene Werte im Daten Blatt}
3
 else{
4
 DCOCTL = CALDCO_8MHZ; //NutzerKalibirierte werte
5
  BCSCTL1 = CALBC1_8MHZ;}

damit habe ich den abgleich ob Standard werte vorhanden sind.

danke euch allen

von Tim H. (msp430h)


Lesenswert?

ich albe meine Controller gelöst.

danke euch allen

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.