Группа: Свой
Сообщений: 309
Регистрация: 18-04-08
Из: Томск
Пользователь №: 36 887
Повесил на порты PG3 и PG4 два светодиода (альтернативная функция TOSC2 и TOSC1). На начальном этапе программы светодиоды работали. Однако после полной адаптации старой программы к новой железяке порты работать перестали.
В проекте используется таймер 3, и прерывание от него, а также таймер 1, и прерывание от него. Таймер 0, для которого эти выводы являются выводами кварца совсем никак не используется. Читал состояние порта (PORTG), состояние регистра направления (DDRG). Все настроено правильно и так как написано в справочном листке на ATMega128A. Если садиться осциллографом на ножку без нагрузки, то видно как меняется состояние порта. Фронты конечно завалены. Никакую нагрузку порт не держит. Ощущение, что включены альтернативные функции порта (TOSC2 и TOSC1). Вот только я их не влючал совсем.
Может у кого-то что-то было подобное?
PS: Проблема не в кристалле контроллера. Порты ведут себя одинаково на целой куче плат.
Подумал и нашел в коде одно возможное место, где накладываются друг на друга записи в DDRG. Надо проверить. Хотя пару месяцев назад все посмотрел, что можно ... и DDRG и PORTG и любое упоминание в даташите по ключевым словам TOSC1/2.
Группа: Свой
Сообщений: 309
Регистрация: 18-04-08
Из: Томск
Пользователь №: 36 887
Все выяснено. Аномалия была в моем собственном мозге. Наложение двух инициализаций порта G. При этом, когда смотрел состояние порта DDRG, я искал там два установленных в единичку бита. И они там действительно были. Вот только позицию их не проверил. Относились они к другим управляющим сигналам. Тему можно закрывать. Всем спасибо!