Добрый вечер уважаемые !!!
Пытаюсь побороть АЦП MCP3551, уже третий день.Набросал программку ,попробовал ,в Протеусе все работает нормально-обрадовался .
Но сегодня собрал все в реале-не РАБОТАЕТ на ЛСД показывает 19,999995,что не так?может кто что-то подскажет.
unsigned long int adcMCP1 ()
{unsigned char adcMSB=0;
unsigned char adcLSB=0;
unsigned char adcCSB=0;
unsigned char adcESB=0;
int c;
unsigned long int adc=0;
unsigned long int acp=0;
for(c=0;c<5;c++)
{
PORTB.4=0; // выбираем ацп PORTB.4=1;
delay_ms(75); //задержка для ацп
SPI_MasterTransmit_ometr(0x00);
adcMSB=SPDR; //читаем первій байт
SPI_MasterTransmit_ometr(0x00);
adcLSB=SPDR; //читаем второй байт
SPI_MasterTransmit_ometr(0x00);
adcCSB=SPDR; //читаем третий байт
SPI_MasterTransmit_ometr(0x00);
adcESB=SPDR; //читаем четвертый байт
PORTB.4=1; //отключаем ацп
//собираем битовыми операциями наши данные
adcMSB &= 0b00011111; //очищяем три первых бита первого байта-там не нужная нам информация
adc = adcMSB; //записываем полученое в adc
adc= adc<<8 ; //сдвигаем значение на 8 бит в лево
adc|=adcLSB ; //записываем в adc второй байт полностью
adc= adc<<8 ; //сдвигаем еще раз значение на 8 бит в лево
adc|=adcCSB; //записываем в adc третий байт байт полностью
adcESB&= 0b10000000; //очищяем семь последних битов четвертого байта-там мусор
adc= adc<<8 ; //сдвигаем еще раз значение на 8 бит в лево
adc|= adcESB ; //записываем в adc первый бит третиго байта
adc= adc>>6; //сдвигаем еще раз значение на 6 бит в право 00012345 01234567 01234567 01234567
acp=acp+adc; //записываем полученый результат
}
acp=acp/c;
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"MC1=%.7f " ,MCP1*0.00000238418579101562 ); //убрать
lcd_puts(lcd_buffer); //выводим показания на жки //убрать
}
void SPI_MasterTransmit_ometr(char cData)
{SPDR = cData;//начинаем передачу
while (SPSR.7==0 );//ждем пока передача завершится
}
Нужна помощь с АЦП MCP3551/e
- Реклама
Re: Нужна помощь с АЦП MCP3551/e
неужели никто не поможет

Re: Нужна помощь с АЦП MCP3551/e
Не маленькая ли задержка?
Какое у Вас опорное напряжение?
Ждёте ли Вы готовность АЦП?
Пробовали ли Вы выводить на дисплей , к примеру, старший байт?
Какое у Вас опорное напряжение?
Ждёте ли Вы готовность АЦП?
Пробовали ли Вы выводить на дисплей , к примеру, старший байт?

