AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
19.03.2017, 22:09
|
|
Временная регистрация
Регистрация: 12.11.2008
Адрес: LT
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 33 раз(а) в 23 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
Сообщение от H4LF
|
Для АТмеги16 же надо выключить эту опцию (Wrap Relative Jumps)
|
Вот на это точно нужно обратить внимание. Даже и не подозревал о её существовании. При включенной опции при компиляции кода для атмеги16 должен выдаваться варнинг.
|
|
|
|
19.03.2017, 22:23
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Пятигорск
Сообщений: 222
Сказал спасибо: 11
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
Проблема не в том какую команду применять rjmp или jmp, а в том ,что поменялись адреса векторов. Как будто я пишу для какова то другого МК.
Цитата:
|
включить опцию "Wrap Relative Jumps"
|
тоже не помогло.
Рассматривая листинги пришел к неожиданному выводу Студия все делает правильно и программатор пишет правильно, а процессор РАБОТАЕТ. но не правильно. В данном случае вектор переполнения ТМР2 указан не на своем месте, но в HEX файле он находится именно там где указан, но МК при этом работает. У меня появилась пугающая догадка, неужели китайцы изменили кристалл? ![Вы в своем уме?](images/smilies/icon_fool.gif) Но разве такое может быть? И МК подписан лазером( я таким больше доверяю) ,а не краской. Или я что-то не правильно понял? Все фьюзы - по умолчанию.
|
|
|
|
19.03.2017, 22:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 23.10.2007
Адрес: Великие Луки
Сообщений: 2,942
Сказал спасибо: 730
Сказали Спасибо 1,855 раз(а) в 881 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
Сообщение от wlad773
|
И МК подписан лазером
|
Случайно не ATmega168? Можете не отвечать.
|
|
|
Сказали "Спасибо" georg65
|
|
|
20.03.2017, 00:33
|
|
Временная регистрация
Регистрация: 12.11.2008
Адрес: LT
Сообщений: 69
Сказал спасибо: 12
Сказали Спасибо 33 раз(а) в 23 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
А программатор Chip ID читать умеет? Может и правда перемаркирован.
Даже правильнее назвать - сигнатура. Для 16А должна быть: 1E9403.
Последний раз редактировалось usr10000; 20.03.2017 в 00:41.
|
|
|
Сказали "Спасибо" usr10000
|
|
|
20.03.2017, 06:50
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
Сообщение от wlad773
|
Рассматривая листинги пришел к неожиданному выводу Студия все делает правильно и программатор пишет правильно, а процессор РАБОТАЕТ. но не правильно. В данном случае вектор переполнения ТМР2 указан не на своем месте, но в HEX файле он находится именно там где указан, но МК при этом работает. У меня появилась пугающая догадка, неужели китайцы изменили кристалл? Но разве такое может быть? И МК подписан лазером( я таким больше доверяю) ,а не краской. Или я что-то не правильно понял? Все фьюзы - по умолчанию.
|
Господиии!!!!
Вам же уже не один раз объясняли: у одних контроллеров вектор прерывания занимает два слова, у других - одно! Пишите программы соответствующим образом и не будет проблем. Скажем, для MEGA16 можно написать так:
Код:
|
.def RESETvector = 0
.def INT0vector = 2
.def INT1vector = 4
.def TIM2_CMPvector = 6
........
.def XYZvector = NN
.CSEG
.org RESETvector
rjmp Begin
.org INT0vector
reti
.org INT1vector
rjmp INT1_handler
.....
.org XYZvector
reti |
Какие инструкции переходов (jmp/rjmp) использовать для векторов прерываний, зависит от размера программы.
PS: Описание таблицы векторов уже имеются в заголовочном файле для каждого конкретного типа МК. Или опять непонятно?
|
|
|
|
20.03.2017, 09:02
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Пятигорск
Сообщений: 222
Сказал спасибо: 11
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
Сообщение от georg65
|
Случайно не ATmega168? Можете не отвечать.
|
Нет. ATmega16A AU.
Для 16А должна быть: 1E9403.
Никогда не обращал внимания на сигнатуры и даже не догадался бы их сравнивать. Для моей 16А = 1Е9502 ![Дьявольски зол](images/smilies/icon_twisted.gif) Что соответствует атмега32. При изменении чипа программаторе, все шьется а работает будто ат16а. Надо посмотреть pdf какие отличия.
|
|
|
|
20.03.2017, 09:22
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Пятигорск
Сообщений: 222
Сказал спасибо: 11
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
usr10000, Ай да светлая голова. Да пусть, с тобой, всегда прибудет сила. Да был бы рядом обнял бы тебя крепко (чисто по мужски конечно). А я уж думал рассудок у меня помутился, И народ, смотрю, посмеиваться начал. Вот такие заподлянки иной раз наши соседи, китайцы, готовят. Но удивительно, что заказывал 1-2 десятка, и несколько штук уже использовал и такого гемора не было. Неохота перепаивать чип, Оставлю как есть, но надо будет запомнить и сделать пометку. ![Очень счастлив](images/smilies/icon_grin.gif) ![Очень счастлив](images/smilies/icon_grin.gif)
|
|
|
|
20.03.2017, 09:29
|
|
Прописка
Регистрация: 06.05.2008
Адрес: Пятигорск
Сообщений: 222
Сказал спасибо: 11
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
georg65, Вам тоже поставил "спасибо". Дважды пытались намекнуть, но нет у меня привычки проверять сигнатуры. Привык верить надписям. И если вижу , что на сарае написано х.й, каждый раз проверяю.
|
|
|
|
20.03.2017, 09:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 23.10.2007
Адрес: Великие Луки
Сообщений: 2,942
Сказал спасибо: 730
Сказали Спасибо 1,855 раз(а) в 881 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
wlad773, удачи, я тоже, пока размышлял, чему-то научился
|
|
|
|
20.03.2017, 19:28
|
|
Вид на жительство
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
|
Re: Atmega16a Вектора прерываний
Осталось выяснить что за программатор использовался и какая программа для прошивки. Вообще-то это должно быть обязанностью прошивающей программы проверять сигнатуру наличного кристалла на соответствие указанному.
Например студия 6.2 с программатором STK500 (перешитый из USBASP) не даёт прошить ATmega328P при указанной в программе ATmega168P. Даже не стирает, выкидывает ошибку в которой показывает прочитанную сигнатуру и какая должна быть.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:36.
|
|