Клеммные колодки Keen Side

Не работает компаратор ATMega88, ATMega48

Новичок
 
Аватар для AudioKiller
 
Регистрация: 04.10.2010
Адрес: Ростов-на-Дону
Сообщений: 7
Репутация: 11
1 0
0 0
 
15.04.2024 10:33 #1
Происходит какая-то фигня, не пойму в чём глобальная проблема.
Хочу использовать компаратор. В микроконтроллере ATMega 88. Включаю его програмно (код настроек генерится мастером среды разработки CodeVision AVR V3.40) на сравнение внешних напряжений. У него как и положено два входа, подключенных к ножкам контроллера AIN0, AIN1. И выход, который можно опрашивать програмно - системная 1 битная ACO. И вот всех книгах, интернетах и даташитах пишут, что АСО выставляется в ноль или единицу по результатам сравнения напряжений на входах (через пару тактов). Так и делаю - электрически подаю разные напряжения на входы. Контролирую входы осциллографом на всякий пожарный - всё есть. Один вход 2,5 вольта, второй либо 2, либо 3 вольта. Или один вход - лог. 1, другой - лог. 0. И меню их местами.
Но на выходе компаратора (значение АСО) всё время нулевое. Что только не делал. Выводил в порт напрямую, присваивал переменной и проч. Результат тот же. Проверял с разными вариантами программы и способах подачи входных напряжений 5 микросхем АТ88 (даже в разных корпусах) и одну АТ48. Естественно, проверяю работу портов - если без компаратора, всё отлично работает. Сначала на макетке, потом в фирменной отладочной плате.
Одинаково!

Такое чувство, что там что-то залочено. Но все описания говорят, что никаких хитрых локов - включил, и работает. А вот нифига!

Даже не знаю, где копать...

PS. В электронике силён, так что электрически делаю всё правильно.
PPS. В программе всё работает, но компаратор остаётся молчаливым.
Оценка
Новичок
 
Аватар для AudioKiller
 
Регистрация: 04.10.2010
Адрес: Ростов-на-Дону
Сообщений: 7
Репутация: 11
1 0
0 0
 
15.04.2024 20:55 #2
Спасибо, ребята!
Я его победил!
Компилятор не видит значение бита ACO из регистра ACSR, несмотря на то, что его понимает и не ругается. Поэтому проверка бита АСО не срабатывает.
Вот такой "дубовый" код работает:

i = ACSR & 0b00100000; // маскируем управляющий регистр компаратора, оставляем только бит АСО
if (i)
{
PORTB.7 = 1;
}
else
{
PORTB.7 = 0;

Закрываем тему.
Оценка
Гуру
 
Регистрация: 28.06.2012
Сообщений: 4,859
Репутация: 1167
1,313 117
483 1
 
15.04.2024 21:33 #3
Спасибо !
Оценка
Новичок
 
Регистрация: 29.11.2007
Сообщений: 39
Репутация: 26
12 12
1 5
 
18.04.2024 12:37 #4
дожили. уже компаратор без процессора никак не получается. зато разучились железки на Луну сажать. видимо, тоже программа порылась?
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Скидки 15%, кэшбэк 15% и бесплатная доставка от ТМ Электроникс
Часовой пояс GMT +3, время: 02:35.
Обратная связь РадиоЛоцман Вверх