Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Видимо, с бутлоадером тут особо никто не заморачивался :)))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Честно, ни разу не было надобности в нем, хотя попробовать интересно :dont_know:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

каким образом вектор прерываний привязали к адресу во флеше ?
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Взяли и засунули его в начало. Или что-то друго интересует?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

тоесть, припустим, в диапвзоне адресов 0x00-0xА0 находятся вектора прерываний
значит в эти адреса, при всем моем желании, я никогда ничего не смогу записать и моя прога будет писаться с адреса 0хВ0 ?
Tell Me The Truth
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Почему? Глянь на свой код: самый первый адрес содержит прыжок куда-то дальше. Ничто не мешает начать писать программу прямо с нуля. И она будет работать.
НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код, т.е. неизвестно что. Вот что там будет - то и продолжит работать.

Так что в этом случае нельзя использовать прерывания, и всё.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

ploop писал(а):Так что в этом случае нельзя использовать прерывания, и всё.
Ну не надо так категорично :)

Код: Выделить всё

.OGR $000
proga
proga
proga
rjmp PC+2
rjmp preryvanie
proga
proga
...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Gudd-Head, не учите котят костылям) они еще ходить не научились)
Ставим плюсы: )
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Ну почему же? Это как раз такой подвыперт, который ни один СИшный компилятор не осилит. Или они так делают?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ploop писал(а):НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код
вот. вот это меня и интересует......, почему счетчик команд перебрасывает именно на те адресагде должны были быть прописаны вектора прерываний но в данный момент там находится моя прога....., откуда он знает что там должны находится вектора прерываний ?
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):откуда он знает что там должны находится вектора прерываний ?
Логичней было бы спросить, откуда ТЫ знаешь, что там находятся вектора прерываний :)))
Конструктора МК так сделали и поставили тебя перед фактом.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

откуда он знает что там должны находится вектора прерываний ?
Да вот сделали так разработчики и всё. Могли бы их и с конца разместить, и в середине, но в начале удобней.
Тупо железно. "Запаяли в схеме".
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

FreshMan писал(а):почему счетчик команд перебрасывает именно на те адресагде должны были быть прописаны вектора прерываний но в данный момент там находится моя прога.....,
Его не интересует, что там, переходы на подпрограмму обработчик прерывания или какая-то другая ваша часть программы, он просто так сделан и все... Там даже вами могут быть записаны какие-то константы, при этом переход на них может выдать чудесные глюки, самым безобидным из которых будет сброс :)))
FreshMan писал(а): откуда он знает что там должны находится вектора прерываний ?
выше ответили...
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ешкин кот....., шото не пойму..... зачем же мы тогда пишем вот эти строки ?

Код: Выделить всё

.CSEG
.ORG $0000
который, как я понял, говорят что с 0х00 начинается наша прога
ведь по факту код проги будет начинаться явно не с этого адреса, при наличии прерываний
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Нет нет, как раз с этого, это тоже прерывание - СБРОС, с него всегда начинается программа. Т.е. вся программа, как бы есть обработчик прерывания "сброс", вот такая вот рекурсия.
Последний раз редактировалось Engineer_Keen Пн сен 02, 2013 15:38:11, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):который, как я понял, говорят что с 0х00 начинается наша прога
Нет. Это мы говорим компилятору, КУДА ЗАСУНУТЬ код, который пойдёт дальше. .CSEG .ORG $0000 можно и не писать, они по умолчанию такие и есть.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

ешкин кот....., шото не пойму..... зачем же мы тогда пишем вот эти строки ?
Я тоже не пойму, зачем ты так пишешь? :)))
Я вот как пишу:

Изображение

INT_VECTOR_SIZE - адрес конца блока прерываний.
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Gudd-Head писал(а):КУДА ЗАСУНУТЬ код, который пойдёт дальше
дальше после векторов прерываний ?
Tell Me The Truth
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Директива .org говорит компилятору: "всё, что дальше я сочинил, суй по этому адресу". Можешь написать там любое число в пределах объёма памяти, туда компилятор его и засунет.
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):дальше после векторов прерываний ?
Дальше после директивы .ORG $ХХХХ
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

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