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
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?
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
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
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.
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
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.
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?
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
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.
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
>>> 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
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
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.
MSP430G2553 hat Kalibrationswerte für 1, 8, 12 und 16 MHz abgelegt und zwar im Segment A (0x10C0 - 0x10FF).
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
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
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
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
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.