Forum: Mikrocontroller und Digitale Elektronik MSP430F2013 SPI - Endlosschleife ?


von Klaus (Gast)


Lesenswert?

Hallo,

ich konnte mit einem ähnlichen Programm problemslos ein Slave steuern.

Nun will ich das Nokia Display ansteuern. Das Programm hängt aber in 
einer Endloschleife ung sendet nichts. Ich weiß nicht warum.

Hoffentlich kann mir jemand helfen.

1
#include <msp430x20x3.h>
2
3
void send_spi(unsigned int, unsigned int);
4
5
void init_display();
6
7
void wait(unsigned int);
8
9
void main(void)
10
{
11
  WDTCTL = WDTPW + WDTHOLD;                   // Stop watchdog timer
12
  P1DIR = 25;                              
13
  P1OUT &= 0x08;                                
14
  USICTL0 |= USISWRST;                           // Config SPI
15
  USICTL0 |= USIMST + USIPE6 + USIPE5 + USIOE;  // Master mode
16
  USICTL1 |= USICKPH;                         
17
  USICKCTL = USIDIV_1 + USISSEL_2;          // 1/2 MCLK
18
  USICTL0 &= ~USISWRST;                     // USI released for operation
19
  
20
  init_display();
21
 
22
  P1OUT |= 0x01;
23
}
24
25
void wait(unsigned int time)
26
{
27
  volatile unsigned int i;
28
  for(i=0;i<time;i++);
29
}
30
31
32
void send_spi(unsigned int high, unsigned int low)
33
{
34
  
35
  USISRL=low;
36
  USISRH=high;
37
  
38
  P1OUT &= ~0x10;     // CS low
39
40
  USICNT=73;  //16-Bit Mode, Counter=9
41
 
42
  while(!(USIIFG & USICTL1)); //HIER BLEIBT ES HÄNGEN
43
  
44
  P1OUT |= 0x10;     // CS high
45
}
46
      
47
void init_display()
48
{
49
  while(1)
50
  {
51
  P1OUT &= ~0x08;           // Reset = low
52
  wait(0xFFFF);
53
  P1OUT |= 0x08;            // Reset = high
54
  
55
  wait(0xF0);
56
  send_spi(0x08,0x10);          // Leave Sleep Mode, turn on Booster 0x11
57
  }
58
}


Wieso sendet er nichts ?

Ich habe das Programm nahezu 1:1 von einem anderen funktionierenden 
Programm übernommen ? Es bleibt in der while - Schleife hängen und macht 
nichts mehr. Das USIIFG - Bit wird nie gelöscht !

Danke !

von Felix (Gast)


Lesenswert?

Muss es auch, da du in init_display() while(1) geschrieben hast.

von Klaus (Gast)


Lesenswert?

Hallo,

dummer Fehler.

Geht jetzt wieder.

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.