Forum: Mikrocontroller und Digitale Elektronik MSP430 & MCP3208 Kanäle überschneiden sich


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Florian R. (Gast)


Lesenswert?

Hallo Zusammen,

ich möchte mit einem MSP430-F5529 Microcontroller einen ADC MCP3208 über 
SPI auslesen. Gesendet werden zuerst 2 x 8 Bit die das 
Startbit/Single-Ended/Control-Bits enthalten. Das Ansprechen des ADC 
funktioniert soweit. Das Problem ist, dass sich die Kanäle überlagern:
CH0:3113
CH1:4094
CH2:3112
CH3:4094
CH4:802
CH5:1419
CH6:803
CH7:1418

CH0&CH2
CH1&CH3
CH4&CH6
CH5&Ch7

Betrieben werden im Moment nur CH0,CH1,CH6,CH7. Ich möchte aber gerne 
alle Kanäle betreiben.
Folgender Code habe ich geschrieben. Der CS Port wird vor und nach dem 
Funktionsaufruf passend gesetzt. Die Funktion wird über eine 
For-Schleife aufgerufen und die jeweiligen Adressen gesetzt.
unsigned int SPI_send(unsigned char addr1,unsigned char addr2)
{
    UCB0IFG &= ~(UCTXIFG|UCRXIFG); 
//Flags löschen
    UCB0TXBUF = addr1; 
//Sende 1. Byte
    while ((UCB0IFG & UCTXIFG)==0); 
//Warte bis Wert gesendet wurde
    while ((UCB0IFG & UCRXIFG)==0); 
//Warte bis RX fertig ist
    UCB0TXBUF = addr2; 
//sende 2. Byte
    while ((UCB0IFG & UCTXIFG)==0); 
//Warte bis Wert gesendet wurde
    while ((UCB0IFG & UCRXIFG)==0); 
//Warte bis RX fertig ist
    data1 = (UCB0RXBUF&0x0F); 
//Empfangenen Wert in Variable speichern
    while ((UCB0IFG & UCTXIFG)==0);
    UCB0TXBUF = 0x00; 
//sende 3. Byte
    while ((UCB0IFG & UCTXIFG)==0); 
//Warte bis Wert gesendet wurde
    while ((UCB0IFG & UCRXIFG)==0); 
//Warte bis RX fertig ist
    data2 = UCB0RXBUF; 
//Empfangenen Wert in Variable speichern
  rcv=(((int)data1)<<8)+(int)data2;
  return rcv;

Hat jemand eine Idee an was es liegen könnte? Es sieht so aus als ob das 
Control-Bit D1 durch das vorherige Control-Bit D2 überschrieben wird.

Beitrag #6384646 wurde von einem Moderator gelöscht.
von Florian (Gast)


Lesenswert?

Nein

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]
  • [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.