PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC SPI und VTI SCA61T Inclinometer



RoboLeo
24.02.2011, 08:09
Guten Morgen miteinander.

Ich bin in letzter Zeit wieder aktiver mit der Elektronikbastelei und versuche mich gerade daran eine einfache Winkelmessung umzusetzen. Leider scheitert es momentan an der wohl simplen SPI Datenübertragung. Ich benutze oben genannten Chip einen PIC18F2580 und die C Routinen aus der spi.h des Compilers.

Hier der einfache Code...


LATAbits.LATA5 = 0; //Chip select
Delay100(6); //Delay 150µs
WriteSPI(rwtr); //Kommando um die Temperatur auszulesen
Dummy = getcSPI(); //Kommando um Buffer SSPBUF auszulesen
LATAbits.LATA5 = 1;


Wäre das doch zu einfach? Die Statusbits werden ja von den Unterprogramen ausgelesen, das sieht man in den jeweiligen *.c files.

Vielleicht kann mir ja jemand auf die Sprünge helfen. Danke.



Gruß Martin

stoerpeak
24.02.2011, 14:05
Dein Oszillogramm zeigt, dass der Clock in den Ruhephasen auf low liegt.

Default ist in den meisten fällen high.
Bei meinen kleineren PICs wird der "Clock-Idle-State" über das Clock-Polarity Bit auf high umgestellt. Weiterhin gibt es noch die "Data input sample phase", womit festgelegt wird, zu welchem Zeitpunkt während eines Bits von der Datenleitung gelesen wird.

Gruß Stoerpeak

RoboLeo
24.02.2011, 14:57
Hi

Tatsächlich - der Mode war falsch eingestellt.

Hab jetzt Mode 0 im PIC aktiviert und siehe da alle Funktionen arbeiten einwandfrei. Hier der Code...


/*Funktion to read out the Temperature register of the VTISCA61T Chip*/
unsigned char TEMP_VTI1 (void)
{
unsigned char msb;
char temperature;

LATAbits.LATA5 = 0; //Chip select
WriteSPI(rwtr);
msb = ReadSPI();
LATAbits.LATA5 = 1;

return (msb);




}

Danke
Gruß Martin