С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.04.2024
Сообщений: 4

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

15.04.2024, 10:51. Показов 630. Ответов 5
Метки нет (Все метки)

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

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

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

PS. В электронике силён, так что электрически делаю всё правильно.
PPS. В программе всё работает, но компаратор остаётся молчаливым.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2024, 10:51
Ответы с готовыми решениями:

Bootloader for atmega48, atmega88, atmega168, atmega328
Уважаемые имеется ли у кого-нибудь сабж в готовом виде? Можно исходники, можно просто хекс. Гуглеж выдает, в осносном, странички, как...

atmega88 не работает FOC1A
Выполняю следующий код: unsykned int duration = 2500; unsykned int freq_temp = 10000; ISR(SIG_OUTPUT_COMPORE1B) { TCCR1C = (1...

Не работает аналоговый компаратор?
Привет Всем! Кто скажет,правильный ли код: LDI TEMP,0b00000111 OUT DDRD,TEMP ;PD0,PD1,PD2 - на выход,PD6 - на вход CBI PORTD,6...

5
1189 / 471 / 69
Регистрация: 22.09.2023
Сообщений: 1,413
15.04.2024, 12:29
Неплохо бы приводить минимальный код, воспроизводящий ситуацию.
Мы же не телепаты - может вы бит ACD взвели или неправильную комбинацию ACME, ADEN, ACBG записали и выбрали какие-то другие сигналы на входы вместо AIN0, AIN1.
0
0 / 0 / 0
Регистрация: 15.04.2024
Сообщений: 4
15.04.2024, 21:00  [ТС]
Я его победил!
Компилятор не видит изменение значения бита ACO из регистра ACSR, несмотря на то, что его понимает и не ругается.
Он у него как был нулевым по умолчанию, так и остаётся и АСО не меняется при работе компаратора.
Поэтому проверка бита АСО не срабатывает - нулевой и нулевой. И создаётся впечатление, что компаратор где-то ещё программно залочен.

Вот такой "дубовый" код работает:

C
1
2
3
4
5
6
7
8
i = ACSR & 0b00100000; // маскируем управляющий регистр компаратора, оставляем только бит АСО
if (i)
{
PORTB.7 = 1;
}
else
{
PORTB.7 = 0;
Закрываем тему.
0
1189 / 471 / 69
Регистрация: 22.09.2023
Сообщений: 1,413
15.04.2024, 23:02
Цитата Сообщение от igorro1964 Посмотреть сообщение
Компилятор не видит изменение значения бита ACO из регистра ACSR
Сколько раз за 27 лет на разных форумах я читал подобную фразу! И в 99.99% случаев оказывалось, что компилятор не виноват, а виноват тот, кто недостаточно внимательно изучал язык программирования или документацию на контроллер или просто невнимательно писал код. Покажите, ну покажите нам пример из того 0.01%, где компилятор действительно виноват. Что вам, жалко что ли?
0
0 / 0 / 0
Регистрация: 15.04.2024
Сообщений: 4
16.04.2024, 13:48  [ТС]
мой косяк. Сознаю. Стыжусь.
0
0 / 0 / 0
Регистрация: 15.04.2024
Сообщений: 4
16.04.2024, 20:38  [ТС]
Но всё равно работает наоборот - если напряжение на + больше, чем на -, то на выходе 0, иначе - 1. Должно быть наоборот. Проверю на разных чипах.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2024, 20:38
Помогаю со студенческими работами здесь

ATmega88
Нужно к 5 портам подключить светодиоды. Код написал, моделирую в SimulIDE. start: ldi r16, 0x10 ldi r17, 0x00 out...

ATMega88 - 10 PWM
Доброго времени суток, Уважаемые! Имею задачу сделать 10 ШИМ со следующими характеристиками: — Кол-во шагов 1000 — Минимальная...

Bootloader atmega88
Всем привет. Весь день уже бьюсь над этим загрузчиком. Шью вот это: https://github.com/royshil/ATmega88-boottooder , шью фьюзы - BOOTRST,...

Настройка частоты ATmega88
Добрый день! Решил освоить работу с UART. Параметры работы: 1200, 8N1, только передача данных. Первый проект сделал на ATmega8. Все...

Прерывание INT0 Atmega88
Пытаюсь использовать прерывание INT0. В avr studio и протеусе все работает хорошо, но в железе получается, что прерывание срабатывает,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru