MSP430 und Quarz

OP #1667714
Lesenswert?

Hallo Zusammen,

Ich habe zwei test Boards aufgebaut und habe nun Probleme mit dem Takt. 
Der Oszilator ist auf beieden Boards der gleich 8Mhz Oszilator und auf 
beiden gleich angeschlossen. (siehe Plan)
1
void vInitSystem( void )
2
{
3
  unsigned int i;
4
  WDTCTL = WDTPW + WDTHOLD;             // Stop WDT
5
BCSCTL1  |=  XTS ;
6
       
7

8

9
  do {
10
    IFG1 &= ~OFIFG;                       // Clear OSCFault flag
11
    for (i = 0xFF; i > 0; i--);           // Time for flag to set
12
  } while ((IFG1 & OFIFG) == OFIFG);      // OSCFault flag still set?
13

14

15
  BCSCTL2 |= SELM1+SELM0;
16
.....
17
}
18

19
void main (void)
20
{
21
uword uwOldTime;
22

23

24
  // init of all system- components
25
  vInitSystem();
26
  vInitTimer();
27
  vInitUart();
28

29

30
  // mainloop
31
  while(1)
32
  {
33

34
   PORT_LEDGREEN_OUT  ^= PIN_LEDGREEN;
35

36

37
  } // while(1)
38
} // void main (void)

Mit einem Board bleibe ich in der Überprüfung des Quarzes steken. die 
letzte anweisung ist dort die For() Schleife. nehme ich die Überprüfung 
heraus, so läuft das Programm ab.

Ich hoffe mit meiner Riesen while(1) Schjleife tue ich das was ich 
möchte, nämlich den Takt wenn auch halbiert ausgeben.

An einem Board kann ich an der LED, welche ich schalte 0,5 Mhz messen, 
auf dem anderen Board, das mit den Problemen bei der Initialisierung nur 
60kHz.

Ich hätte natürlich gerne die 8 MHz, die ich angeschlossen habe.

Kann mir Jemand weiter helfen?
Angehängte Dateien:
OP #1667738
Lesenswert?

Hallo Stefan,

Deine annahme ist korekt. es handelt sich um einen "Resonator 
CSTCC8,00MG" von Murata. Ich habe eine andere Schaltung vor mir, auf der 
auch ein Oszilator mit eingebauten Lastkondensatoren verbaut ist, 
zumindest sagt das sowohl der Schaltplan, als auch, dass auf dem Board 
keine Kondensatoren in Oszilatornahe zu finden wären. Das Referenzboard 
ist aber nicht von mir, deshalb kann ich das nur annehmen und nicht mit 
bestimtheit sagen.
OP #1667772
Lesenswert?

Ich habe mich an diesem Artikel 
http://www.mikrocontroller.net/articles/MSP430_Codebeispiele#Initializing.2F_Configuring_UARTs 
orientiert. Das Beispiel für init_XT, weil XT 2 hab ich nicht 
angeschlossen. das Durfte in etwa dem eintsprechen, was in der Anleitung 
in ASM steht, das ist leider nicht meine Stärke.
1
; Select LFXT1 (HF mode) for MCLK
2
BIC #OSCOFF,SR ; Turn on osc.
3
BIS.B #XTS,&BCSCTL1 ; HF mode
4
L1 BIC.B #OFIFG,&IFG1 ; Clear OFIFG
5
MOV #0FFh,R15 ; Delay
6
L2 DEC R15 ;
7
JNZ L2 ;
8
BIT.B #OFIFG,&IFG1 ; Re−test OFIFG
9
JNZ L1 ; Repeat test if needed
10
BIS.B #SELM1+SELM0,&BCSCTL2 ; Select LFXT1CLK

das ist aus dem Manual
OP #1667810
Lesenswert?

Wenn mir der Compiler das als nächste Anweisung beim inline debuggen 
anzeigt??

Ich glaube aber nicht, das dort der Hase begraben ist. Sondern eher 
tatsächlich in möglicherweise defekter Hardware.

Für mich interesant ist die Frage, ob die initialisierung grundsätzlich 
korekt ist?
Die 0,5 MHz genauer 0,578MHz die 8 MHz sind, weil ich diese Halbiere und 
der Prozessor je Port Pin, den er setzten muss 1 Taktbraucht, also für 
den einen Port 8Takte *2 weil ich nur wechsele?

Wenn beide WErte irgendwie zufällig sind, dann bringt mich diese 
Überlegung auch nciht weiter und ich kann nicht wirklich auf Fehlersuche 
gehen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren