Hallo Leute! Ich habe da ein kleines Problem mit meinem AD Wandler. Ich habe ihn ans SPI angeschlossen und bekomme auch Daten. Doch es handelt sich um einen 16Bit AD Wandler, weshalb ich 2x Schieben muß. Das Problem ist nun, dass die ersten 8Bit gleich der zweiten 8Bit sind und das ja nun nicht immer der Fall sein kann. Mein Code zum auslesen sieht wie folgt aus: void ADC_Auslesen() { PORTB &= ~(1<<0); // /SS auf low delay_ms(1); // Wandlungszeit SPDR = 0x00; // schreibe in SPDR while ((SPSR & (1<<SPIF))); // Auslesen der ersten 8Bit byte_1 = SPDR; SPDR = 0x00; // schreibe in SPDR while ((SPSR & (1<<SPIF))); // Auslesen der zweiten 8Bit byte_2 = SPDR; PORTB |= (1<<0); // /SS auf high } Danke für schnelle Hilfe!!!! Tobi78
Also die AD Seite gibt es so gesehen gar nicht! ...wenn der einen CLK sieht, wir ein Bit über SDO ausgegeben. Also mit 8 CLKs werden die ersten 8Bit ausgelesen und mit den zweiten die nächsten 8Bit. Verstehe nur nicht, wieso byte_1 und byte_2 immer gleich sind! Für die, die mal im Datenblatt gucken wollen, es ist der AD7688 von Analog Devices. Danke für eure Mithilfe!
Das SPIF wird nach dem Empfang eines Datums high, du mußt in der Warteschleife das bit auf Low prüfen. Erst wenn es high geworden ist,sind die Daten im SPDR gültig. while (!(SPSR... MW
Heißer Tipp! Habe das gleich mal geändert...mit dem Erfolg, dass immernoch byte_1 und byte_2 identisch sind! Ich nehme einmal IN als GND...messe also GND gegen GND...und erwarte Nullen! Dann nehme ich als IN VDD und bekomme trotzdem sowohl in byte_1, als auch in byte_2 nur Nullen!!! Wieso??? ...würde ja Einsen erwarten!
Alles klaro...das Ding läuft! War im Chain Mode und nicht im CS-Mode vom ADC. Wie blöde!!!
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.