Страница 1 из 1

ATmega8 и ATtiny2313

Добавлено: Вт июн 14, 2016 11:42:42
melandr
Добрый день. Может кто-то поможет, а то уже мозг взрывается. Есть простенькая программа вывода на 7-сегментный ЖКИ. Сначала была написана под ATmega8 и проверена в Протеус. Все работает как нужно. Но целевым контроллером будет ATtiny2313. Поэтому программа была исправлена для ATtiny. При проверке в Протеус программа не работает как нужно. Может кто-то свежим взглядом посмотрит и подскажет в чем может быть проблема. Прикладываю два архива. В них проект в AVR Studio и файл Протеус для каждого контроллера. Заранее спасибо за помощь.

Re: ATmega8 и ATtiny2313

Добавлено: Вт июн 14, 2016 16:39:12
СКАЗОЧНИК
че не сказали, что на Си?!

На ассемблере поразбирался бы. А Си не знаю. :)

Re: ATmega8 и ATtiny2313

Добавлено: Ср июн 15, 2016 14:34:18
melandr
Пересмотрел весь код процедуры обновления ЖКИ. Создается такое впечатление, как будто модель ATtiny2313 работает не правильно. При эмуляции в протеус ATmega8 четко видно перевод пина потушенного разряда в состояние Hi-Z. А при эмуляции ATtiny2313 такого перевода не видно. Вывод остается в состоянии 1.
ЗЫ: Разобрался если кому интересно рассказываю. Нужно было поменять всего две строчки местами:
было:
DDRD &= ~((1 << COM1) | (1 << COM2)); //порт D пины 0 и 1 работают как ВХОД
PORTD &= ~((1 << COM1) | (1 << COM2)); //вывод в режиме Hi-Z
стало:
PORTD &= ~((1 << COM1) | (1 << COM2)); //вывод в режиме Hi-Z
DDRD &= ~((1 << COM1) | (1 << COM2)); //порт D пины 0 и 1 работают как ВХОД
то есть в модели ATtiny2313 нужно было сначала разряды обнулить, и потом порт переводить на ВВОД. А в модели ATmega8 все работает и по первому варианту