Hallo Gemeinde,
ich versuche nun seite geschlagenden 2 Stunden etwas mit dem ADS8556 zu
messen. Ich bekomme auch Werte doch leider sind die nicht Plausibel und
ändern sich beim ändern der Spannung nicht. Bitte schaut mal in den Code
und gebt mir nen Tip.
Danke schon mal im vorraus.
typedef union conv_ {
unsigned long int w;
unsigned char b[4];
} CONVERTW;
void InitADHardware(void)
{
//Ein-/Ausgänge einstellen
DDRD |= ((1 << SCLK)); // Port für SCLK
als Ausgang einstellen
DDRB |= ((1 << FS) | (1 << SDO) | (1 << CONVST)); // Port für FS, SDO,
CONvST als Ausgang einstellen
//löschen
DDRD &= ~((1 << BUSY) | (1 << SDI_A) | (1 << SDI_B) | (1 << SDI_C));
// Port für BUSY,SDI_A,SDI_B,SDI_C als Eingang einstellen
SET_FS();
SET_SCLK();
CLEAR_CONVST();
}
void FirstConversion(void)
{
CONVERTW val; // declare UNION for easy conversion
val.w=0;
unsigned long int uiConv_A_Buffer=0;
unsigned long int uiConv_B_Buffer=0;
unsigned long int uiConv_C_Buffer=0;
unsigned char i;
unsigned long int Configuration=0xE20503FF;
SET_CONVST();
while(PIND & (1<<BUSY)) ;
//SET_SCLK();
//CLEAR_SCLK();
CLEAR_FS();
for (i=0;i<32;i++) {
CLEAR_SCLK();
//if (Configuration & (1 << 31)){
if((Configuration >> 31)!=0){
PORTB |= ((1 << SDO));
}
else {
PORTB &= ~((1 << SDO));
}
Configuration = (Configuration << 1);
SET_SCLK();
// Read AD Port A *******************************
if (PIND & (1 << SDI_A)) {
uiConv_A_Buffer++;
uiConv_A_Buffer = (uiConv_A_Buffer << 1);
}
else {
uiConv_A_Buffer = (uiConv_A_Buffer << 1);
}
// Read AD Port B *******************************
if (PIND & (1 << SDI_B)) {
uiConv_B_Buffer++;
uiConv_B_Buffer = (uiConv_B_Buffer << 1);
}
else {
uiConv_B_Buffer = (uiConv_B_Buffer << 1);
}
// Read AD Port C *******************************
if (PIND & (1 << SDI_C)) {
uiConv_C_Buffer++;
uiConv_C_Buffer = (uiConv_C_Buffer << 1);
}
else {
uiConv_C_Buffer = (uiConv_C_Buffer << 1);
}
// **********************************************
}
//Ende Sequenz
SET_FS();
SET_SCLK();
CLEAR_CONVST();
val.w = uiConv_A_Buffer;
usart_write("\n");
usart_write_char(val.b[3]);
usart_write_char(val.b[2]);
usart_write_char(val.b[1]);
usart_write_char(val.b[0]);
val.w = uiConv_B_Buffer;
//usart_write("B:");
usart_write_char(val.b[3]);
usart_write_char(val.b[2]);
usart_write_char(val.b[1]);
usart_write_char(val.b[0]);
val.w = uiConv_C_Buffer;
//usart_write("C:");
usart_write_char(val.b[3]);
usart_write_char(val.b[2]);
usart_write_char(val.b[1]);
usart_write_char(val.b[0]);
}