Переназначить порт в ATmega88.

Обсуждаем контроллеры компании Atmel.
Ответить
Грызет канифоль
Аватара пользователя
Сообщения: 286
Зарегистрирован: Ср ноя 28, 2012 05:16:37
Откуда: Новотроицк Оренбургской обл.

Сообщение aurifer »

Всем привет. Собрал вот такую схему http://habrahabr.ru/post/113675/ Запустилась без проблем, но к несчастью порт PD0(вывод 30 в tqfp) напрочь отказывается работать! Т.е. светодиод не горит. Светик и резистор проверил, пайку тоже, нет напряжения именно с порта. Смотрел мультиметром: чего-то меняется на ноге, но ооочень мелко. На всякий попробовал тестовую прошивку, зажёг все светодиоды, PD0-не пашет.

Помогите изменить прошивку, чтобы вместо порта PD0 зажигался PC6(reset - единственный свободный). Открыл исходники в winavr, но ни фига там не понимаю. Вижу что с портами чего-то делают, а смысл не пойму.

Это уже третья версия данной схемы ни с одной проблем не было.

И ещё. После исправления прошивки, нужно установить фьюз RSTDISBL и всё? Или я что-то ещё забыл.

Во вложении проект.
Вложения
mega48-88-168.pdf
Даташит.
(494.36 КБ) 1292 скачивания
firmware.rar
Исходник.
(45.95 КБ) 147 скачиваний
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

а вы все делали правильно по инструкции с сайта?
дело в том что на одной фотке "Пять Озер" заметил - может их не хватает? :))

поправить то можно но после этого МК будет невозможно повторно программировать
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 286
Зарегистрирован: Ср ноя 28, 2012 05:16:37
Откуда: Новотроицк Оренбургской обл.

Сообщение aurifer »

igor-x писал(а):а вы все делали правильно по инструкции с сайта?
Правильнее некуда. Это уже третья конструкция по этой схеме. Первые две запустились без проблем и работают до сих пор.
igor-x писал(а):поправить то можно но после этого МК будет невозможно повторно программировать
Повторно и не надо! Другого варианта просто нет, кроме reset...

P.S.: "Пять озёр" вчера уже применил.... :beer: Не помогло. :cry: Вот и обратился на форум. Буду очень благодарен за любую помощь.
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

  • int ledON(int val)
    .................
    case 16:
    PORTD |= _BV(0);
заменить на
case 16:
PORTС |= _BV(6);
аналогичную замену сделать в функции int ledOFF(int val)
Реклама
Эиком - электронные компоненты и радиодетали
Грызет канифоль
Аватара пользователя
Сообщения: 286
Зарегистрирован: Ср ноя 28, 2012 05:16:37
Откуда: Новотроицк Оренбургской обл.

Сообщение aurifer »

А как насчёт этого куска(строка 242)? :

_delay_ms(INIT_DELAY);
PORTD |= _BV(PD0);
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

да похоже тоже надо.
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 286
Зарегистрирован: Ср ноя 28, 2012 05:16:37
Откуда: Новотроицк Оренбургской обл.

Сообщение aurifer »

Значит если сейчас прошью исправленной версией, то должно всё работать точно так же, только без одного светодиода. Затем исправляю фьюз RSTDISBL.
И вуаля. Всё правильно?
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

Сначала нужно откомпилировать , чтобы получить новый HEX. прошить МК, выставить фюз, который отключит RST.
как было сказано выше, эту операцию потом отменить нельзя будет.
попробуйте программку в Протеусе сначала .
Грызет канифоль
Аватара пользователя
Сообщения: 286
Зарегистрирован: Ср ноя 28, 2012 05:16:37
Откуда: Новотроицк Оренбургской обл.

Сообщение aurifer »

Igor-x, спасибо вам большое за помощь! Всё получилось как надо!
P.S.: Когда подправлял дорожки на плате, чтобы к светику ресет подключить, увидел причину по которой не работал вывод PD0. Там была микротрещина на дорожке, не вооруженным глазом практически не видно... Вот такая ирония судьбы...
Ответить

Вернуться в «AVR»