Вопрос по ATmega16

День добрый, уважаемые гуру!

Перешел я на Atmega16 (заодно понял, что такое Си). Собрал устройство, линейной светодиодной шкалой. Программа написана в CodeVisionAVR. Отлажена в VisualMicroLab. Здесь проблем нет, виртуально все работает. Через SPI залил прошивку в контроллер. Использован встроенный RC-генератор (FUSE не трогались, т.е. тактовая частота - 1 МГц). Ну а дальше - не могу заставить работать. Для пробы залил простейшую программу, выдающую "постоянные" уровни на порты. По ней контроллер должен выдавать на порт C нулевые уровни. Порт запрограммирован на выход. Смотрю осциллографом - часть выводов порта имеют нулевой уровень, часть высокий. С другими портами почти то же самое. Записываю и все лог "единицы" и все "нули". На выводах все равно "нули". Такое ощущение, что все порты настроены по умолчанию как входные. Когда подаю сигнал сброса состояние выводов порта С не меняется. Уже всю голову сломал. Проверил, прозвонил весь монтаж. У меня есть только два варианта: или контроллер неисправен, или вектор сброса указывает не на программу (FUSE бит BOOTRST равен 1). Вообщем, прошу помощи. Какие подводные камни есть? (Для генерации скелета программы использвался шаблон CodeVisioAVR, но я его потом 100 раз проверял, вроде все нормально. CodeVision какой-то последней версии).

Reply to
Lomaka Vladimir
Loading thread data ...

Mon Dec 19 2005 13:33, Lomaka Vladimir wrote to All:

LV> Перешел я на Atmega16 (заодно понял, что такое Си). Собрал устройство, LV> линейной светодиодной шкалой. Программа написана в CodeVisionAVR. CodeVision не нужен. Пользуйся IAR.

LV> Для пробы залил простейшую LV> программу, выдающую "постоянные" уровни на порты. По ней контроллер LV> должен выдавать на порт C нулевые уровни. Порт запрограммирован на выход. LV> Смотрю осциллографом - часть выводов порта имеют нулевой уровень, часть LV> высокий.

Выключи FUSE который разрешает JTAG.

VLV

"Я добрый, и это единственный мой недостаток" (Достоевский)

Reply to
Vladimir Vassilevsky

LV>> Перешел я на Atmega16 (заодно понял, что такое Си). Собрал устройство, LV>> линейной светодиодной шкалой. Программа написана в CodeVisionAVR.

Вчера на свежую голову после чтения ветки "ATMega8535 & LED" собрал адаптер STK 200. Запрограммировал (опять из того же CodeVision), все заработало. До этого пользовался программатором "Хамелеон". Но видно проблема была в том, что модуль для Atmega16 я криво написал. Так что извиняюсь перед уважаемыми гуру за свои дурацкие вопросы.

VV> CodeVision не нужен. Пользуйся IAR.

Хорошо, попробуем и его.

VV> Выключи FUSE который разрешает JTAG.

Вот это учту.

Теперь у меня еще одна проблема. Сразу после очередной перепрошивки контроллер замолчал. Перестал отвечать и по SPI - интерфейсу. Что было в последний раз: забыл снять пометку с опции программирования FUSE. Все FUSE, кроме какой-то CSEL были неотмечены (т.е. unprogrammed). Я вот сейчас написал и подумал следующее: вероятно это был FUSE, отвечающий за внешний тактовый сигнал. Сегодня посмотрю дома.

Reply to
Lomaka Vladimir

Привет Lomaka!

Пон Дек 19 2005 14:33, Lomaka Vladimir пишет All:

LV> программу, выдающую "постоянные" уровни на порты. По ней контроллер LV> должен выдавать на порт C нулевые уровни. Порт запрограммирован на LV> выход. Смотрю осциллографом - часть выводов порта имеют нулевой LV> уровень, часть высокий. С другими портами почти то же самое. Записываю LV> и все лог "единицы" и все "нули". Hа выводах все равно "нули". Такое LV> ощущение, что все порты настроены по умолчанию как входные. Когда LV> подаю сигнал сброса состояние выводов порта С не меняется. Уже всю

Hечто подобное наблюдалось пpавда на 8535-й меге когда питание было подано не на все ноги ... подать питпние на все ноги в том числе и на АВЦЦ - может в этом гpабли ...

С наилучшими пожеланиями Nick .

Reply to
Nick Barvinchenko

Привет Vladimir!

Пон Дек 19 2005 18:44, Vladimir Vassilevsky пишет Lomaka Vladimir:

LV>> программу, выдающую "постоянные" уровни на порты. По ней LV>> контроллер должен выдавать на порт C нулевые уровни. Порт LV>> запрограммирован на выход. Смотрю осциллографом - часть выводов LV>> порта имеют нулевой уровень, часть высокий.

VV> Выключи FUSE который разрешает JTAG.

Он изначальноне должен быть включеным ... пpи поставке ...

С наилучшими пожеланиями Nick .

Reply to
Nick Barvinchenko

Так и было. МК перешел на внешнюю синхронизацию. AVReal'ом вернул все обратно. Кстати, когда был включен JTAGEN Fuse была как раз та проблема, что не все выхода включались. Выключил этот Fuse - стало все нормально. Еще раз спасибо за совет. Сам бы еще долго голову ломал.

Reply to
Lomaka Vladimir

NB> Hечто подобное наблюдалось пpавда на 8535-й меге когда питание было NB> подано не на все ноги ... подать питпние на все ноги в том числе и на NB> АВЦЦ - может в этом гpабли ...

Питание проверил. Разводил специально на все ножки. Ну я уже выяснил. Неправильно написал модуль программирования ATmega16 для программатора "Хамелеон". Пока, правда и не выяснил где ошибка. Будет время - разберусь. А вот по поводу JTAGEN Fuse - действительно нужно его выключать, иначе я так и не смог добиться нормальной работы. По дефолту он включен. А вот где про это написано - не нашел :(

Reply to
Lomaka Vladimir

Привет, Vladimir! Lomaka Vladimir пишет:

LV> А вот по поводу JTAGEN Fuse - действительно нужно его выключать, LV> иначе я так и не смог добиться нормальной работы. По дефолту он LV> включен. А вот где про это написано - не нашел :(

В даташите вестимо. В той версии, которой я пользуюсь (от 10.03) - страница 259. Раздел Memory Programming -> Fuse Bits.

С уважением, Alexey Shumaev.

Reply to
Alexey Shumaev

AS> В даташите вестимо. В той версии, которой я пользуюсь (от 10.03) - AS> страница 259. Раздел Memory Programming -> Fuse Bits.

Извиняюсь. Неточно сформулировал мысль. Про дефолтные состояния я в курсе. Имелось ввиду влияние JTAGEN Fuse на работу МК в целом.

Reply to
Lomaka Vladimir

Ну понятно, если JTAG включен, то ноги, на которых он сидит, заняты именно им. Что тут неожиданного? Вы аедь не удивляетесь, что нога занятая ресетом тоже не доступна пока FUSE не поправишь...

Reply to
Anton V. Fedorov

Привет Lomaka!

Сpд Дек 21 2005 13:18, Lomaka Vladimir пишет Nick Barvinchenko:

NB>> числе и на АВЦЦ - может в этом гpабли ...

LV> Питание проверил. Разводил специально на все ножки. Hу я уже выяснил. LV> Hеправильно написал модуль программирования ATmega16 для программатора LV> "Хамелеон". Пока, правда и не выяснил где ошибка. Будет время - LV> разберусь. А вот по поводу JTAGEN Fuse - действительно нужно его LV> выключать, иначе я так и не смог добиться нормальной работы. По LV> дефолту он включен. А вот где про это написано - не нашел :(

Должно быть в даташите - обычно в таблице ...

С наилучшими пожеланиями Nick .

Reply to
Nick Barvinchenko

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.