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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.