Gast
#3630285
Hallo Leute, Ich kämpfe gerade mit einem komischen Effekt den ich mir noch nicht so ganz erklären kann und hatte gehofft jemand von euch kann mich vielleicht auf die richtige Fährte bringen. An meinem PIC42FJ16GA ist über die SPI Schnittstelle ein ADC (AD7680) angeschlossen, der mir die Werte eines analogen Drucksensors wandelt. Liegt am Sensor kein Druck an, liefert mir dieser eine Offsetspannung von ca. 0.8V. Der Wert den mir der ADC liefert entspricht (mit etwas rauschen) ziemlich genau diesen 0.8V (um 2 Positionen geschiftet). Erhöhe ich nun den Druck auf den Sensor, steigt die Spannung von 0.8V auf 1.6V an (Test mit 2bar Druck). Der Wert den mir der ADC liefert (mit Oszilloskop betrachtet) entspricht zwar diesen 1.6V aber die Werte die im SPI Buffer liegen sehen ganz anders aus. Es scheint als schieben sich die Daten im Buffer immer mehr nach links, je höher der ausgegebene Wert ist. Ich muss dazu noch erwähnen, dass ich das Chip Select Signal "manuell" steure, da ich mehr als 16 Bit über SPI einlesen möchte. Der Ablauf in meiner SPI Interrupt Subroutine sieht dann wie folgt aus: - CS auf Eins setzen (ADC Sampling beenden) - SPI Interrupt Flag auf Null setzen - SPI Buffer solange auslesen, bis keine Daten mehr vorhanden sind -> while(SPI2STATbits.SRXMPT == 0) - Daten werden verarbeitet - CS auf Null setzen (nächster ADC Sample wird gestartet) - 3 Dummybyte in SPI Buffer schreiben um den nächsten Wert einzulesen (3, weil ich 24 Bit einlesen möchte) Ich bin mir nicht sicher ob ich im Ablauf meiner Subroutine noch einen Fehler drin habe oder ob die SPI Schnittstelle mir hier einen Strich durch die Rechnung macht. Hat jemand eine Idee wie sich dieser Effekt ergeben kann?