SPI Signal bricht zusammen

OP (Firma: Fraunhofer) #2634490
Lesenswert?

Hallo erstmal.
Ich möchte mit einem µC (ATMEGA32M1) via SPI einen AD- Wandler auslesen 
(AD7922 von Analog Devices).
Wenn ich den Datenausgang des AD-Wandlers mit dem Oszi verbinde ohne den 
AT-Mega angeschlossen zu haben sieht das Signal gut aus.
Verbinde ich MISO mit dem Datenausgang des AD-Wandlers,so bricht das 
Signal zusammen (nur noch Rauschen im mV Bereich Messbar).
Ich verwende eine Software SPI, mit Hardware SPI trit jedoch der gleiche 
Fehler auf.
Miso ist auch korrekt als Eingang definiert.
Am AD Wandler ( direkt am Pinn gemessen) liegen 5V an.

Bin für jede Anregung dankbar.
OP (Firma: Fraunhofer) #2634577
Lesenswert?

So,
Pin ist def. als eingang Definiert
(via Debugwire überprüft, um sicherzustellen dass nicht irgendwo im 
Programm das DDR geändert wird)
Senderoutine:
1
  cli();                            // für Zeit der Konvertierung Interrupts deaktivieren
2
   uint16_t buffer =0;                    // buffer für Empfangswert initialisieren
3
   setbit(PORT_SPI_S,PIN_MOSI_S);                // Mosi auf 1 setzten --> Sende nur 111111.....
4
  // setbit(PORT_SPI_S,PIN_SCK_S);
5
   setCS();                          // ADC CS setzten
6
   for(uint8_t i =0;i<16;i++){                // 16 mal 1 senden, und ADC Ergebniss empfangen
7
    asm volatile("nop");                  // Nops zur Homogenisierung des Clocks (50/50 Verhältniss zwischen 1 und 0)
8
    asm volatile("nop");
9
    asm volatile("nop");
10
    clearbit(PORT_SPI_S,PIN_SCK_S);              // fallende CLK-Flanke generieren
11
    if(getbit(PIN_SPI_S,PIN_MISO_S)) setbit(buffer,0);    // Wenn auf MISO 1 empfangen LSB von Buffer
12
    buffer<<=1;
13
    setbit(PORT_SPI_S,PIN_SCK_S);
14
   } 
15
   
16
   clearCS();
17
   sei();
18
   buffer>>=1;
19
   buffer &=0x0FFF;
20
   ADCValues[1]=buffer;
21
   ADCs[0].data[1]= buffer;


Initialisierung:
1
void initADC_AD9722(uint8_t usedADC,uint8_t ch1,uint8_t ch2,CAN_message *msg11, CAN_message *msg12,uint8_t pos11, uint8_t pos12,CAN_message *msg21, CAN_message *msg22,uint8_t pos21, uint8_t pos22){
2
   DDR_SPI_S |= (1<<PIN_MOSI_S)|(1<<PIN_SCK_S);      // Clock und MOSI auf Ausgang
3
 //  PORT_SPI_S|= (1<<PIN_MISO_S);              // Pull Up Resistor
4
   DDR_CS_S  |= (1<<PIN_CS_S1);                // DDR-Chip Select auf Ausgang
5
   setbit(PORT_SPI_S,PIN_SCK_S);              // Clock auf 1 setzten
6
  usedCH = usedADC;
7
  switch(usedCH){                      // Chip selects setzten                
8
    case 1:                        // 1 verwendeter ADC
9
      setbit(PORT_CS_S,PIN_CS_S1);          // Chip Select 1 auf 1 setzten ( disable ADC1)
10

11
      break;
12
    
13
    default:                      
14
      break;
15
  }  
16
}

Im Anhang Schaltplanauschnitte für AD Wandler und µC
Angehängte Dateien:
OP (Firma: Fraunhofer) #2634607
Lesenswert?

Habe gerade das Problem auf das ADC Board einschränken können:
-ATMEGA mit ADC Board verbunden
-MISO und CLK auf Oszi
-Multimetermessung der Spannung:
    -An Stützkondensator 5V keine Veränderung des Oszibildes
    -an Versorgungspin des ADC : Das gewünschte Signal ist auf dem Oszi 
Messbar ( jedoch etwas verrauscht)
#2634608
Lesenswert?

Martin Ettrichraetz schrieb:
> DDR_CS_S  |= (1<<PIN_CS_S1);                // DDR-Chip Select auf Ausgang
>    setbit(PORT_SPI_S,PIN_SCK_S);

Also so seh ich jetzt keinen Fehler. Aber check doch mal deine Defines. 
Vielleicht hat sich dort ein PIN-Dreher eingeschlichen!

Martin Ettrichraetz schrieb:
> -Multimetermessung der Spannung:
>     -An Stützkondensator 5V keine Veränderung des Oszibildes
>     -an Versorgungspin des ADC : Das gewünschte Signal ist auf dem Oszi
> Messbar ( jedoch etwas verrauscht)

Was ist "keine Veränderung" ? Gehts oder gehts nicht?
OP (Firma: Fraunhofer) #2634632
Lesenswert?

Keine Veränderung sollte bedeuten "geht nicht"
Allerdings scheint dieser Effekt( dass eine Messung mit Multimeter zur 
scheinbaren Funktion führt) ein Zufall gewesen zu sein.
Er ist nicht reproduzierbar.
Ich messe 5 V an den Eingangspins des ADC auch wenn der µC Angeschlossen 
und Kommunikation in Betrieb.

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