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

 
 
> а покажите АЦП на иаре, пожалуйста
d71
сообщение Jun 3 2007, 13:06
Сообщение #1


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

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



поиск только запутал сильнее crying.gif
покажите как оно инициализируется и тупо в переменную результат загнать
что-то не нашел я примера, весь поиск перекопал - там всё сильно заумно : (
мне бы для старта пару строк мега и тини, всёравно
---
раньше внешний по i2c пробовал, но там совсем всё по другому


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andrеys
сообщение Aug 16 2007, 08:42
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 13-08-07
Из: г. Челябинск
Пользователь №: 29 741



причина была найдена!
мне кажется, кусок проги из текста выше нерабочий, и вот почему:

ADCSRA = (1 << ADEN)|(6 << ADPS0); //ADPS сооветствует 125кГц преобразование
//при 8Мгц тактовой
ADMUX = (3 << REFS0)|([номер канала] << MUX0);
// Здесь уже все включено, можно еще, правда поотключать цифровые входы-выходы в случае с
//мегой хх8
ADCSRA = (1 << ADIF)|(1 <<ADSC); // Запуск преобразования
while(!(ADCSRA & (1 <<ADIF);


обратите внимание на красную строку, с регистром ADCSRA делают операцию присваивания, а не поразрядное ИЛИ с присваиванием, таким образом в регистр пишется 2 единички, а остальные - нули, один из которых ADEN, преобразование в итоге запрещено.
правильно так ADCSRA |= (1 << ADIF)|(1 <<ADSC);
Go to the top of the page
 
+Quote Post
sKWO
сообщение Sep 5 2007, 20:29
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Andrеys @ Aug 16 2007, 12:42) *
причина была найдена!
мне кажется, кусок проги из текста выше нерабочий, и вот почему:

[i]ADCSRA = (1 << ADEN)|(6 << ADPS0); //ADPS сооветствует 125кГц преобразование
обратите внимание на красную строку, с регистром ADCSRA делают операцию присваивания, а не поразрядное ИЛИ с присваиванием, таким образом в регистр пишется 2 единички, а остальные - нули, один из которых ADEN, преобразование в итоге запрещено.
правильно так ADCSRA |= (1 << ADIF)|(1 <<ADSC);

разрешено, смотрите внимательно
#define ADC_CONTROL (1 << ADEN)|(1 << ADIE)|(1 << ADPS2)|(1 << ADPS1)
ADCSRA = ADC_CONTROL | (1 << ADSC);
таким образом в регистре ADCSRA добавится один битик под номером ADSC которій определён
в хедерном файле выбранного МК.

Смотрите значение ADC_CONTROL.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:26
Рейтинг@Mail.ru


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