ADC über SPI auslesen

OP #4657289
Lesenswert?

Hallo Leute,
ich habe vor kurzem angefangen, Mikrocontroller zu programmieren und 
benötige eure Hilfe. Mit Hilfe von AtmelStudio möchte ich eine Code 
schreiben, womit ich Werten aus dem ADC (ADS1118) mit Hilfe der SPI 
auslesen kann. Als Mikrocontroller habe ich ein ATMega168A. Ich würde 
mich richtig freuen, wenn sie mir paar Typen geben können und bedanke 
mich im Voraus.

LG
Grosso
#4657468
Lesenswert?

@  Innis Betnga (elgrosso)

>mich richtig freuen, wenn sie mir paar Typen geben können und bedanke
>mich im Voraus.

Typen? Du meints Tips, Hinweise?

SPI ist relativ einfach zu nutzen, man braucht eine grundlegende 
Funktion, nennen wir sie spi_io(). Mit dieser wird gleichzeitig gesendet 
und auch empfangen. Der Rest ist nur minimale Logik. Im Allgemeinen geht 
ein SPI-Zugriff so.

Chip Select des ICs aktivieren (meistens auf 0 setzen)
Eine bestimmte Anzahl Bytes senden bzw. empfangen
Chip Select des ICs deaktivieren (meistens auf 1 setzen)

1
uint8_t spi_io(uint8_t write_data) {
2
  SPDR = write_data;            // Daten senden
3
  while(!(SPSR & (1<<SPIF)));   // auf das Ende der Übertragung warten
4
  return SPDR;                  // empfangene Daten zurück geben
5
}

Wichtig ist, daß das Pin SS an deinem AVR als Ausgang konfiguriert wird, 
bevor dein SPI initialisiert wird. Siehe Datenblatt im Abschnitt "SS pin 
functionality"
#4657481
Lesenswert?

Es gibt eine gewisse Wahrscheinlichkeit, dass keine der vom SPI Port zur 
Verfuegung gestellten Funktionalitaeten die Funktion erfuellen kann. In 
diesem Fall muss man die funktionalitaet und das Timing per Bitbefehle 
nachbilden. Auch in diesem Falle ist das benoetigte Timing im Datenblatt 
des ADC nachzulesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren