il-2 (22.01.2008 11:16, просмотров: 76) ответил URANstin на ATmega8 SPI ADS1242, Работа с SPI
Вот работающие процедурки, можешь по ним постигать что и как.
//Send and Receive Data to/from ADC
#pragma optimize=3
uchar PutGetADC(uchar byte)
{
uchar res=0x01;
do
{
SET_PORT(CLK); //Rising Clock Edge, Out Data From ADC to DTO pin
if (byte&0x80) SET_PORT(DTI); else { CLR_PORT(DTI); __no_operation(); } //Set Data to Send to ADC
CLR_PORT(CLK); //Falling Clock Edge, Store Data to ADC from DTI pin
byte<<=1;
res<<=1; if (GET_PORT(DTO)) res|=0x01;
} while(SREG_Bit0==0);
return(res);
}
//Write/Read ADC Register
uchar WRegADC(uchar wregcmd, uchar byte)
{
uchar cRet;
CLR_PORT(CS);
PutGetADC(wregcmd); //WREG or RREG Command
PutGetADC(0); //Write/Read 1 byte
if (wregcmd<0x20) DelayADC(6); //Delay >50CLK for RREG Command
cRet=PutGetADC(byte);
SET_PORT(CS);
return(cRet); //Write byte or Read
}