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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.