реклама на сайте
подробности

 
 
> Mega8535 + TMP37
Metallist64
сообщение Jul 29 2008, 14:33
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Здравствуйте!
Подскажите пожалуйста, кто подключал датчики TMP37 на Мегу???
Всего датчиков - 4.
У меня проблема с подключением датчиков (схеме внизу).
1. Без датчиков в результате преобразования имею мусор.
2. Полученное значение всегда разное от 50-350 ??? даже при усреднении.

Может я неправильно входы переклачаю?
ставлю задержку 1мс.

Вот сама функция:

void adc_result (p_menu p_item_name)
{
unsigned char i;
unsigned char channel = 0;
unsigned int result = 0;
while (channel < 4)
{
if(channel == 0) ADMUX = 0b11000000;
if(channel == 1) ADMUX = 0b11000001;
if(channel == 2) ADMUX = 0b11000010;
if(channel == 3) ADMUX = 0b11000011;

delay_ms(1); //задержка 1мс для гарантированного переключения входа мультиплекстора


for (i=0;i<20;i++) // цикл для 20 ти преобразований.
{
ADCSRA.6 = 1; // начало проеобразования

while(ADCSRA.6); // ждем конца преобразования

result += ADCW; // записываем значение
}
p_item_name[channel]->adc = (result / 20) ; // записать среднего от 20ти преобраз-й в p_item_name[index]->adc
channel ++; // перейти к следующему каналу
}};



Помогите пожалуйста. Как получить нормальные показания???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Jul 29 2008, 14:53
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Переменную result на входе в цикл for надо бы обнулять.

А что это за запись p_item_name[channel]->adc=(result/20)?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 29 2008, 16:12
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Переменную result на входе в цикл for надо бы обнулять.
Вот спасибо! Сто раз смотрел и не замечал, поэтому показания увеличивались от канала к каналу.
А что это за запись p_item_name[channel]->adc=(result/20)?

p_item_name[channel]-> значит разыменование указателя на массив структур(name - индекс массива) и обращенение к элементу структуры - adc.

можно конечно конечно по другому, но там 2 раза надо будет разыменовывать.

Спасибо большое!

Сообщение отредактировал Metallist64 - Jul 29 2008, 16:20
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016