Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > пример программы работы с DS7812


Автор: Ivan. 14.1.2005, 11:02
smile есть у кого нибудь функция для работы с АЦП типа DS7812 на C++ по интерфейсу SPI

Автор: PILOT 14.1.2005, 18:26
Код

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 тактов при записи управляющего слова.

СУВ.

Автор: Эдгар 24.11.2008, 20:37
Хочу подключить ADS7818 к Atmega 8535 по SPI. Работаю с Programmers Notepad. Помогите пожалуйста. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)