Hallo zusammen, ich möchte einen AD-Wandler(24bit-LTC2410) über die SPI-Schnittstelle vom mega128 auslesen. Programmieren möchte ich mit Codevision. Kann mir einer bitte grob erklären, wie der Startvorgang in C aussieht, um den ADC zum Senden zu bewegen? Vielen Dank Brillitsch
1 | void SPI_MasterInit(void) |
2 | {
|
3 | /* Set MOSI and SCK output, all others input */
|
4 | DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK); |
5 | /* Enable SPI, Master, set clock rate fck/16 */
|
6 | SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0); |
7 | }
|
8 | void SPI_MasterTransmit(char cData) |
9 | {
|
10 | /* Start transmission */
|
11 | SPDR = cData; |
12 | /* Wait for transmission complete */
|
13 | while(!(SPSR & (1<<SPIF))) |
14 | ;
|
15 | }
|
Danke für die schnellen Antworten. Das Datenblatt und div. App.Note hab' ich ja gelesen, aber ich hab' da wohl eine Blockade. Konkret: Der mega128 liefert den Clock, steuert SS\(ist CE\ beim ADC) und soll 24bit vom ADC empfangen. Versteh ich das Codebeispiel vom Datenblatt richtig, das ich laut Befehl: SPDR = cData; dem ADC erst ein Byte senden muss, um von ihm ein Byte zuerhalten? Wenn ja, ich möchte aber 24bit erhalten, muss ich dann 3x8 Einzelbit senden? Brillitsch
Ah so, was macht den der ADC mit den drei Byts die ich ihm gesendet habe? Könne meine gesendeten Bytes beliebige Werte haben? Brillitsch
Ganz einfach: gar nichts, weil er sie nie erhält. Der LTC2410 hat nur ein 3-Wire-Interface: /CE,SCK und SDO. Es fehlt ein SDI (serial data in) Somit wird MOSI nicht an den ADC angeschlossen. Man muß nur 3 Byte senden, weil sonst die SPI-Schnittstelle keinen Takt liefert. Der ADC ist sendebereit, sobald /CE auf low gezogen wurde.
Hallo Rahul, erst steh ich aufm Schlauch, und dann übersehe das korrekte SPI-Interface aufm LTC. Danke das Du mich drauf hingewiesen hast. So, Feierabend is. Schönen Jahreswechsel. Brillitsch
>Schönen Jahreswechsel
Ist meine persöhnliche Ausdrucksweise für: Bin Urlaubsreif
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.