www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F543x Quarz Problem und Probleme mit dem Debuggen


Autor: Jan P. (flux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe einen MSP430F5437 und will diesen an XT2 mit einem 4 MHz Quarz 
betreiben, im ersten Schritt habe ich MCLK, SMCLK und Auch ACLK alle von 
XT2 versorgt.

Der Quarz schwingt exakt mit 4 MHz (direkt am Quarz gemessen)
Wenn ich jetzt jedoch am Port Pin Messe, an dem ich die CLK ausgebe, ist 
dort eine Frequenz von CIRCA einem MHz. Das Teilerregister habe ich 
komplett auf 0x0000 gesetzt (siehe Code).

Soviel zum ersten Teilproblem mit dem Quarz.

Das zweite, viel seltsamere Problem zeigt sich beim Debuggen: das 
funktioniert gar nicht.

Habe mit ner EXP-Platine mit MSP430F4618 begonnen den Code zu 
entwickeln, und habe den dann auf den MSP430F5437 portiert.
Aber den habe ich zu Debug-Zwecken dann soweit wieder zurückgestutzt wie 
unter gezeigt.
Als Software habe ich IAR.
Der Debugger, ein TI USB-FET funktioniert mit dem EXP-Board problemlos, 
wenn ichs mit meiner Schaltung (Lochrasterplatine) versuche, springt IAR 
nie in den Code hinein, sagt die CPU ist im LPM und interrrupts sind 
aus, deswegen ist kein STep/Go möglich.
Weiterhin läuft der Stack über, egal wie groß ich den wähle, was auf dem 
EXP-Board nie passiert ist. Habe den Stack auf 5 KB gesetzt schon, läuft 
trotzdem über.
Der Kompilierte Code kann aber mit der Software von Elprotronic in die 
CPU geladen werden, und zwar Problemlos.
Dann läuft der CPU, man kann LEDs blinken lassen etc etc. Nur ist er 
viel zu langsam, meiner Meinung nach noch viel langsamer wie er mit 1 
MHz laufen müsste.

Hier der Code:
void main(void)
{
 volatile unsigned int i=0;
  WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
    _BIS_SR(OSCOFF + SCG0 + GIE);      // Disable LFXT1 xtal osc & FLL loop

  
  P5SEL |= 0x0C;                     // Analog function for XT2 Pins
  UCSCTL6 &= ~(XT2OFF);                     // XT2 On
  
  UCSCTL6 |= XT2DRIVE_0 + XCAP_0 +XTS + XT1OFF;   // set XT1 sourced
                                                //from external and to HF

    
  // Wait for xtal to stabilize
  do
  {
  UCSCTL7 &= ~XT2OFFG;                   // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);           // Time for flag to set
  }
  while ((UCSCTL7 & XT2OFFG));        // OSCFault flag still set?

  UCSCTL3 |= SELREF_2;                // Set DCO FLL reference =REFO
  UCSCTL4 |= SELS_5 + SELM_5 + SELA_5; // Set MCLK, SMCLK, ACLK =XT2
  UCSCTL5 = 0x0000;
  init_PortPins();

  while(1)
  {

    OUTPUT ^= TEST_PIN;
       for (i = 0xFF; i > 0; i--); 

  }
  
}//end of main()


Ich hoffe mir kann einer von euch weiterhelfen.

Viele Grüße, Jan!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich jetzt jedoch am Port Pin Messe, an dem ich die CLK ausgebe

Wo initialisierst Du das?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jan P. schrieb:

> Habe mit ner EXP-Platine mit MSP430F4618 begonnen den Code zu
> entwickeln, und habe den dann auf den MSP430F5437 portiert.
> Aber den habe ich zu Debug-Zwecken dann soweit wieder zurückgestutzt wie
> unter gezeigt.
> Als Software habe ich IAR.

Hast du auch ganz sicher überall in deinem Projekt auf den anderen Chip 
umgestellt? Kompiler, Linker, vor allem im Debugger? Nicht, dass da ein 
Teil des IAR noch denkt, er habe den F4618 vor sich...

Autor: Jan P. (flux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, erstmal vielen Dank für die bisherigen Antworten!

Die Initialisierung des Pins ist in [init_PortPins();] ;)
und sieht so aus dass ich dir PxDir auf Out(1) stelle und PxSel auch auf 
1.

Und ich habe ein komplett neues Projekt erzeugt, den alten quellcode 
eingebunden und es an einer stelle vom defaultmässig eingestellten 
MSP430F149 auf den F5437 umgestellt. in den Projektoptionen. Wo muss man 
das sonst noch tun? Entschuldigt meine Unwissenheit! ;)

Gruß, jan!

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

soweit ich mich erinnere hat das UCS eine Fail Safe Logic - d.h. ich 
vermute du laeufst weiterhin auf dem DCO!

Bevor das UCS die Takte umschaltet muss du also das OFIFG im SFRIFG1 
loeschen.

mfg Alex

Autor: Jan P. (flux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das werde ich gleich nochmal ausprobieren, ich melde mich wieder!

Vielen Dank!

Autor: Jan P. (flux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich nochmal!

Habe das rücksetzen des OFIFG flags mal versucht (SFRIFG1 &= OFIFG;) 
eingefügt direkt hinter dem Löschen des XT2 Fault Flags.

Ergebnis war dass der Clock-Pin noch langsamer war.
Auskommentieren der oben angegebenen Zeile ließ ihn wieder mit etwa 1MHz 
schwingen. Sehr seltsam das ganze wie ich finde.

Gruß, Jan

Autor: Jan P. (flux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, was mir noch unklar ist:
was genau macht die Zeile  _BIS_SR(OSCOFF + SCG0 + GIE); ?

Die habe ich einfach vom Beispeilcode übernommen.

Also das GIE kenne ich noch vom F149, aber was genau macht der Rest?
Hab die Stelle im Datenblatt gefunden, an der das SFR erklärt wird, auch 
die erklärung zu den OSCOFF und SCG0 Bits, aber ich verstehe nicht warum 
das im SFR nochmal gebraucht wird, wenn es die Bits schon in den Clock 
Registern gibt.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein Codebeispiel aus SLAC166, das ziemlich genau das tut, was Du 
willst - nämlich einen HF-Quarz an XT2 zu betreiben.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich beschäftige mich nun auch schon ein Weilchen mit der 5er Serie, die 
genannte SLAC ist sehr zu empfehlen und befindet sich hier:
http://www.ti.com/litv/zip/slac166j
Viele Kleinigkeiten funktionieren schon ein wenig anders und ungewohnt 
im Vergleich zu den älteren Serien, da helfen die Beispiele sehr gut 
weiter.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.