| Код | unsigned int read_adc(unsigned int channel) { unsigned char charray[3]={0,0,0}; unsigned char i; //задается управляющее слово unsigned char adc_wseq[10]={ 0, //A0 1, //PD1 1, //PD0 0, //Vin 0, //DIFF 0, //CH2 0, //CH1 0, //CH0 1, //CONVST 1 //EXTREF }; unsigned int buf=0; //преобразование номера канала в бинарный вид for(i=2;channel!=0;i--) { charray[i]=channel % 2; channel/=2; } //вставка номера канала в слово управления adc_wseq[5]=charray[0]; adc_wseq[6]=charray[1]; adc_wseq[7]=charray[2];
//запись слова управления rtfs=FALSE; //перевод rfs-tfs в режим запись for(i=0;i<10;i++) //запись слова { SCLK=TRUE; DIN=adc_wseq[i]; SCLK=FALSE; }
//READ CHANNEL ROUTINE
CONVST=FALSE; // преобразованиев для выбранного канала CONVST=TRUE;
rtfs=TRUE;//перевод rfs-tfs в режим чтения for(i=0;i<10;i++) //считывание и преобразование полученного результата { SCLK=TRUE; if (DOUT==TRUE) buf=buf+pow(2,9-i); SCLK=FALSE; } return buf; }//READ_NEW_ADC
unsigned int radc(unsigned int channel) // функция которая запаршивает один и тот же канал, чтобы возвращались корректные результаты а не результат преобразования предыдущего канала { read_new_adc(channel); return read_new_adc(channel); }
|
И надо подавать 13 тактов при записи управляющего слова.
СУВ. |