Forum: Mikrocontroller und Digitale Elektronik SPI für Einsteiger


von Brillitsch (Gast)


Lesenswert?

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

von Neutron (Gast)


Lesenswert?

s. Datenblatt.

von Dirk (Gast)


Lesenswert?

siehe wiki gcc tutorial

von ¹²³ (Gast)


Lesenswert?

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
}

von Brillitsch (Gast)


Lesenswert?

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

von Rahul D. (rahul)


Lesenswert?

ja, da liegst du richtig.
Der Datenaustausch passiert gleichzeitig.

von Brillitsch (Gast)


Lesenswert?

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

von Rahul D. (rahul)


Lesenswert?

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.

von Brillitsch (Gast)


Lesenswert?

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

von ¹²³ (Gast)


Lesenswert?

> Schönen Jahreswechsel.

Wie?

von Brillitsch (Gast)


Lesenswert?

>Schönen Jahreswechsel

Ist meine persöhnliche Ausdrucksweise für: Bin Urlaubsreif

von Rahul D. (rahul)


Lesenswert?

Schönes Restleben...

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.