Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее
Сб янв 15, 2022 22:03:26
При использовании аналогового компаратора в зависимости от соотношения на его входах напряжения изменяется состояние бита выхода ACO (Atmega8) с 0 на 1 и обратно. Для определения "1 " пишу в разделе while(1) следующие выражения
- Код:
if ((ACSR & (1<<5)) {k=1}
if ((ACSR & (1<<5))==1) {k=1}
if (ACSR & (1<<5)) {k=1}
if (FCO) {k=1} {k=1}
Ни один из вариантов не работают.
Объясните неграмотному, что я делаю не так? Пытаюсь писать программы на Си и моделирую в Протеусе..
Сб янв 15, 2022 22:26:09
Ну хорошо, при выполнении условия k станет равным 1. А кто его в ноль сбрасывает? Сам он этого не сделает. Нужно добавить тогда else k=0;
Ну либо как вариант k = (ASCR >> 5) & 1;
Вс янв 16, 2022 13:42:42
Т.к. я уверен, что при напряжении на входе AIN0 больше,чем на AIN1, то мне надо убедиться, что работает первое условие. А оно не работает, т.к. при проверке в Протеус во всех этих условиях при FCO = 1 (видно в окне виндовс) к=0 (видно в значении переменных). к ввёл специально для проверки. А Ваш вариант указан среди проверяемых мной.
Пн янв 17, 2022 20:34:32
Заметил интересную фишку!
При варианте
- Код:
if (ACSR&1<<5)
{PORTD|=1<<5; }
else
{ PORTD&=0xDF; }
При изменении знака разности напряжений на входах компаратора значения регистра 5 порта D в окне Wath windov меняются, а на схеме и на виртуальном осциллографе протеуса остаются в нулевом значении.
чему верить?
Пн янв 17, 2022 23:54:13
Только натуральному МК. Протезу верить не стоит.
Чт янв 20, 2022 17:19:48
mickbell писал
Только натуральному МК. Протезу верить не стоит.
Опять оказалось дело в моей невнимательности. Порт D был настроен весь на выход.
Всем спасибо. Тему можно закрыть.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.