AT90USB162 проблема с компаратором

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 4
Зарегистрирован: Сб фев 09, 2013 00:33:54

Сообщение Met_u »

Здравствуйте уважаемые КОТЫ, сразу говорю, я чайник и вот у меня какая проблема. Контроллер AT90USB162, моя цель: на AIN0 подаётся опорное напряжение в 0.4в, а напряжение на AIN1 я регулирую переменным резистором, если он меньше опорного, то светодиод горит, если больше, то не горит. Смог добиться только того, что программа срабатывает 1 раз, т.е изначально светодиод горит, я гашу его (делая AIN1 больше AIN0) а обратно зажечь не могу, Мк не реагирует на мои действия (уменьшение/увеличение напряжения на AIN1) программу пишу в CodeVisionAVR
Вложения
A_STARTER.c
(4.29 КБ) 312 скачиваний
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Сообщение blackx »

ACSR=0b00011010;

замените на

ACSR=0b00011000;
Изображение only pure true norwegian blackx Изображение
Реклама
Родился
Сообщения: 4
Зарегистрирован: Сб фев 09, 2013 00:33:54

Сообщение Met_u »

Поменял, не помогло (может у меня что с мк..., уже не знаю...) сделал так, теперь оно стало работать, но почему то срабатывает не каждый раз

int i;
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
#asm("cli")

i = i + 1;
if(i == 2)
{
i=0;
}

#asm("sei")
}

_________________

while (1)
{

if (i == 0)
{
PORTD.3 = 1;
delay_ms(100);
PORTD.3 = 0;
delay_ms(100);
}
if (i == 1)
{
PORTD.5 = 1;
delay_ms(100);
PORTD.5 = 0;
delay_ms(100);
}

}
}
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Не знаю как в CodeVision, а в GCC надо бы i объявить как volatile.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Зачем так сложно. И sei и cli в прерывании не нужны. Состояние выхода компаратора в любой момент можно узнать, прочитав бит AC0.
Не забывайте про "дребезг" подстроечного резистора.
Реклама
Родился
Сообщения: 4
Зарегистрирован: Сб фев 09, 2013 00:33:54

Сообщение Met_u »

Пробовал PORTD.3 = ACO;
ведь он либо 0 либо 1 но работать не хотело, а с volatile попробую разобраться
Реклама
Родился
Сообщения: 4
Зарегистрирован: Сб фев 09, 2013 00:33:54

Сообщение Met_u »

Спасибо всем кто помогал. решение найдено
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Сообщение blackx »

Найдено - делитесь. Ваше решение возможно еще кому-нибудь сможет помочь.
Изображение only pure true norwegian blackx Изображение
Ответить

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