MSP430 InfoA (Calibrationdata) lost

Nachdem ich angefangen habe einen MSP430F2616 über BSL zu programmieren, habe ich zwischendurch ausversehen das Kalibrierungsregister Info A gelöscht. Zum Glück hatte ich einen Dump. Aber wie es der Zufall so will, habe ich beim dumpen auch noch die falsche Länge angegeben, was also dazu führte, dass ich die letzten beiden Register nicht hatte. Das waren ausgerechnet auch noch die für den 1MHz Takt.

Nachdem ich versucht habe, die letzten beiden Register durch errechnen, auslesen und vergleichen von anderen MSPs zu rekonstruieren, habe ich mich dann doch auf die Suche im Internet gemacht.

Nach einer Weile bin ich dann auf einen Artikel im TI Forum gestoßen, dieser Verwies dann auf das Paket „slac163“ (MSP430F21x2 Code Examples) und die darin enthaltene Datei „msp430x21x2_dco_flashcal.c“.

Das Programm ist recht simpel aufgebaut und erlaubt es zumindest die CPU Takt Kalibrierungsregister neu zu errechnen, alles was man dazu benötigt ist ein 32kHz Uhrenquarz, welcher an XIN und XOUT angeschlossen wird.

Da man solch ein Uhrenquarz so ziemlich in jedem Gerät findet, war das kein Problem.

Nach dem man das Programm geladen und gestartet hat, würde das Programm eine an P1.0 angeschlossene LED einschalten, sobald die Kalibrierungsdaten für 1MHz, 8MHz, 12MHz und 16 MHz wieder in das Kalibrierungsregister geschrieben wurden.

Da ich aber keine LED an diesem Port hatte, habe ich einfach ein paar Sekunden gewartet. Danach konnte ich das Info A Register auslesen und dort waren alle Takt Daten wieder vorhanden.

Jetzt konnte ich die Sicherung wieder vervollständigen und das Register komplett wiederherstellen.

Eine Interessante Möglichkeit bietet dies zudem, man kann noch anderen Takt Frequenzen kalibrieren lassen. Optimal sind welche, die sich durch 4096Hz teilen lassen.

Ich habe in einem Beitrag gelesen, dass es je nach Chip möglich ist diesen bis auf 19-20MHz zu Takten. Der wird dann aber bestimmt sehr instabil.

 

Zur Sicherheit habe ich nun das komplette Info A Register mit in das Programm integriert, sodass dieses auch beim BSL Flash wieder gesetzt wird.

 

Jetzt noch zur Frage, warum BSL?, weil ich kein MSP-FET für den JTAG habe und der Chip kein Spy-Bi-Wire hat, welches ich über ein Launchpad benutzen könnte.