Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Radist 29 декабря 2004 г. 15:37
В ответ на: маразматические явления необратимы :-( киньте исходником инита AD7705 плиз отправлено DASM 29 декабря 2004 г. 14:00

/********************************************************************
функции для работы с АЦП на самом низком уровне
********************************************************************/

void write(unsigned char val){
unsigned char cval;
char i;
cval = val;
for(i = 0;i < 8;i++){
CLR_SCLK;
if(cval &(0x80U >> i)){SET_DIN;}
else {CLR_DIN;}
SET_SCLK;
}
SET_DIN;
}

void adc_reset(void){
CLR_RESET;
__no_operation();
__delay_cycles(8*5);//for debuging
SET_RESET;
}
/*********************************************************************
запись байта adc_byte в регистр adc_reg
*********************************************************************/

void adc_write(unsigned char adc_byte,unsigned char adc_reg){
write(adc_reg);
write(adc_byte);
}

/*********************************************************************
чтение слова из 16bit и 8bit регистра adc_reg
*********************************************************************/
int adc_read_16(unsigned char adc_reg){
int ret_val = 0;
char i;
write(adc_reg|0x08);
for(i = 0;i < 16;i++){
CLR_SCLK;
__no_operation();
SET_SCLK;
if(TEST_DOUT)ret_val |=(0x8000U>>i);
}
return(ret_val);
}

unsigned char adc_read_8(unsigned char adc_reg){
unsigned char ret_val = 0;
char i;
write(adc_reg|0x08);
for(i = 0;i < 8;i++){
CLR_SCLK;
__no_operation();
if(TEST_DOUT)ret_val |=(0x80U >> i);
SET_SCLK;
}
return(ret_val);
}
/*********************************************************************
начальная установка АЦП подготовка к преобразованию
номер канала в аdc_chan
*********************************************************************/

void adc_setup(char adc_chan){
if(adc_chan == CHAN_1){
adc_write(0x06,CLOCK_REG|CHAN_1);
adc_write(0x64,SETUP_REG|CHAN_1);
}
else adc_write(0x54,SETUP_REG|CHAN_2); //у меня второй канал
//всегда инициализируется после первого
}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru