mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Probleme mit SPI/Temp Sensor


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,

ich beschäftige mich gerade mit SPI an meinem MSP. Es ist ein F149. Ich 
versuche damit gerade einen Temperatursensor auszulesen, den ich hier 
noch als Sample von TI liegen hatte. Das ist ein TMP122 von Texas 
Instruments.

Leider habe ich das bisher noch nicht ans Laufen gebracht. Ich habe mir 
mal die Beispiel-Codes von TI angeschaut usw. aber ich komme trotzdem 
irgendwie nicht weiter. Ich kann den Sensor nicht auslesen.

Ich hoffe, dass mir hier vielleicht jemand weiterhelfen kann.
Ich habe unten mal meinen bisherigen Code eingefügt. Wäre klasse, wenn 
da mal jemand drüber schauen und mir auf die Sprünge helfen könnte.

Grüße Michael

Ich habe hier einmal den Code zur Initialisierung der SPI:

void SPIInit(void)
{
  U0CTL = CHAR + SYNC + MM;            // 8-bit, SPI, Master
  U0TCTL = CKPH + SSEL1 + SSEL0 + STC; // Polarity, ACLK, 3-wire

  U0BR0 = 0x002;                        // SPICLK = ACLK/2
  U0BR1 = 0x000;

  U0MCTL = 0x000;                       // Not Used for SPI-Mode->0x000

  ME1 = USPIE0;                         // Module enable

  IE1 |= URXIE0;                        // Recieve interrupt enable

  _BIS_SR(GIE);                         // Enable interrupts
}

Dann habe ich hier noch die ISR:

#pragma vector=USART0RX_VECTOR
__interrupt void SPI0_RX (void)
{
  while(U0RXBUF)
  {
      received[i++]= U0RXBUF;
  }
  P2OUT |= 0x80;                            // Port 2.7 auf High ( CS )
  ready= 1;
}

und vielleicht noch die -main-:
void main(void)
{
  PortInit();             // Initialisierung der Ports
  SPIInit();              // SPI-Schnittstelle initialisieren

  P2OUT |= 0x80;          // Port 2.7 auf High setzen     ( CS )
  LCDInit();              // LCD initialisieren ...
  LCDClear();             // ... und dann noch löschen und Cursor an 
Anfang
                          // zurück setzen

  LCDOuts(" Temperatur TMP122: ");        // Text auf Display ausgeben

  while(1)
  {
    if(ready == 1)           // Wenn etwas empfangen wurde
    {
        ThirdLine();         // In die dritte Zeile des Displays 
springen
        SpaceOut(8);         // Leerzeichen auf dem Display ausgeben
        LCDOuts(ausg_str);   // Sensordaten auf dem Display ausgeben
        ready= 0;
        i= 0;
    }
    else
       P2OUT &= ~0x80;             // Port 2.7 auf Low legen  ( CS )
  }/* while(1) */

}/* void main(void) */

Autor: szimmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm,
sieht irgendwie etwas von hinten durchs Knie aus. Grundübel ist wohl, 
dass Du auf den Empfang wartest, aber das Senden nicht anstösst (TXBUF0 
= ...). Da Du der Master bist, musst Du den Clock vorgeben, was Dir der 
Controller mit dem Beschreiben des TXBUF0 abnimmt. Danach clockt die SPI 
die Antwort des Sensors in den Controller und danach steht das Ergebnis 
im U0RXBUF-Buffer. Ich habe mal das entsprechende Beispiel angehängt. Da 
wird das Ganze deutlich, denke ich...

Autor: szimmi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oerks. Anhang fehlte...

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.