Atmega32. Измерение напряжения

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 7
Зарегистрирован: Вт апр 02, 2013 09:55:55

Сообщение BBird22 »

Привет, нужна ваша помощь.

Пытаюсь измерять напряжение и выводить в UART. Но вот какая проблема... Делитель напряжения расчитан на до 30В, однако начиная примерно с 5.5В в UART выводится ровно 50, а вот до 5.5В все правильно.
В чем проблема никак не могу понять, уже весь интернет перечитал.

Прикладываю скрины протеуса и сам код.

Заранее пасибо!
Вложения
proteus-bad.gif
после 5.5В
(103.49 КБ) 389 скачиваний
proteus-good.gif
до 5.5В
(99.04 КБ) 420 скачиваний
main.c
(945 байт) 349 скачиваний
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 124
Зарегистрирован: Сб окт 20, 2012 14:07:16

Сообщение Yusff »

похоже, здесь: tmp = (ADCL|ADCH<<8);
во-первых adcl читается первым, что сделал компилятор неизвестно
во-вторых adch<<8 вернет 0
попробуйте так:
unsigned char low = ADCL;
unsigned int tmp = ADCH;
tmp = tmp<<8|low;
Реклама
Родился
Сообщения: 7
Зарегистрирован: Вт апр 02, 2013 09:55:55

Сообщение BBird22 »

Yusff писал(а):похоже, здесь: tmp = (ADCL|ADCH<<8);
во-первых adcl читается первым, что сделал компилятор неизвестно
во-вторых adch<<8 вернет 0
попробуйте так:
unsigned char low = ADCL;
unsigned int tmp = ADCH;
tmp = tmp<<8|low;
Проверил, результат идентичен unsigned int tmp = (ADCL|ADCH<<8);
Встал на лапы
Аватара пользователя
Сообщения: 124
Зарегистрирован: Сб окт 20, 2012 14:07:16

Сообщение Yusff »

мобыть. у меня в кодевижне так не прокатывет.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 7
Зарегистрирован: Вт апр 02, 2013 09:55:55

Сообщение BBird22 »

Решение вопроса тут
Реклама
Ответить

Вернуться в «AVR»