Здравствуйте!...
Столкнулся с небольшой проблемой: Две частоты (НЧ И ВЧ) у меня умножаются, на выходе получаются пачки импульсов... Отдельно НЧ выходит с OC1А ВЧ: OC2
В Atmege 16 это порты PD7, PD5 соответственно! Ну и перемножаю я:
if((PIND.5)&&(PIND.7)) { PORTC.5 = 1; } else PORTC.5 = 0;
опрашивая PD7, PD5 и выводя это в PORTC.5
Никак не могу понять в ДВУХ эмуляторах VMlab и Proteus этот код работает, а в РЕАЛЬНОМ устройстве нет... ПОЧЕМУ?... Мне раньше в этом форуме ответили:
"У тебя-же эти выходы натроены на выход,соответственно чтение пинов некорректно.Самый простой выход - если есть незадействованные порты,настрой их на чтение и заведи свои выходы в парралеь и на них." ... Я полагал раньше, если DDRx установлен на выход и программно изменяются состояния этого выхода с "0" на "1" и обратно, ТО и PINx должен изменять свое состояние?.. Неужели не так?... В Vmlab во вкладке I/O Ports и в Proteus с регистром PINx так и происходит!!!!!!!!!!!!
В реальном устройстве действительно пришлось OC2 и OC1A завести на неиспользуемые пины, настроить на чтение, опрашивать их и только тогда заработало....
как позже потом написали на конференции "точки опоры": при эмуляции в AVR studio происходит тоже самое То есть в АВРстудио тоже работает......
В чем может быть дело?
Спасибо...
|