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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

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

Сообщение 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 );//ждем пока передача завершится
}
Реклама
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

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

Сообщение elf »

:(
Реклама
elf
Открыл глаза
Сообщения: 60
Зарегистрирован: Чт окт 29, 2009 23:22:03

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

Сообщение elf »

неужели никто не поможет :shock: :(
Аватара пользователя
vsky
Открыл глаза
Сообщения: 63
Зарегистрирован: Пн апр 06, 2009 18:32:14

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

Сообщение vsky »

Не маленькая ли задержка?
Какое у Вас опорное напряжение?
Ждёте ли Вы готовность АЦП?
Пробовали ли Вы выводить на дисплей , к примеру, старший байт?
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «Периферия»