Вопрос по ATmega16

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

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

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


Вопрос по ATmega16
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

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


Вопрос по ATmega16


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

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

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

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

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

Вот это учту.

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


Re: Вопрос по ATmega16
Привет Lomaka!

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

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

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

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


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


Вопрос по ATmega16
Привет Vladimir!

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

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

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

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

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


Вопрос по ATmega16

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


Re: Вопрос по ATmega16
Привет Lomaka!

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

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

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


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


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

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


Re: Вопрос по ATmega16
Привет, Vladimir!
Lomaka Vladimir пишет:

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

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

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




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

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


Re: Вопрос по ATmega16

Quoted text here. Click to load it

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

--
Best regards,
Anton Fedorov

Site Timeline