Страница 1 из 1

Нужна помощь с АЦП MCP3551/e

Добавлено: Чт мар 14, 2013 23:11:27
elf
Добрый вечер уважаемые !!!
Пытаюсь побороть АЦП 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 );//ждем пока передача завершится
}

Re: Нужна помощь с АЦП MCP3551/e

Добавлено: Пт мар 15, 2013 23:16:50
elf
:(

Re: Нужна помощь с АЦП MCP3551/e

Добавлено: Вт мар 19, 2013 22:23:40
elf
неужели никто не поможет :shock: :(

Re: Нужна помощь с АЦП MCP3551/e

Добавлено: Ср мар 20, 2013 11:07:35
vsky
Не маленькая ли задержка?
Какое у Вас опорное напряжение?
Ждёте ли Вы готовность АЦП?
Пробовали ли Вы выводить на дисплей , к примеру, старший байт?