Ассемблер (ASM) для AVR в вопросах и ответах
Видимо, с бутлоадером тут особо никто не заморачивался 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
Честно, ни разу не было надобности в нем, хотя попробовать интересно 
каким образом вектор прерываний привязали к адресу во флеше ?
Tell Me The Truth
Взяли и засунули его в начало. Или что-то друго интересует?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
тоесть, припустим, в диапвзоне адресов 0x00-0xА0 находятся вектора прерываний
значит в эти адреса, при всем моем желании, я никогда ничего не смогу записать и моя прога будет писаться с адреса 0хВ0 ?
значит в эти адреса, при всем моем желании, я никогда ничего не смогу записать и моя прога будет писаться с адреса 0хВ0 ?
Tell Me The Truth
- Реклама
Почему? Глянь на свой код: самый первый адрес содержит прыжок куда-то дальше. Ничто не мешает начать писать программу прямо с нуля. И она будет работать.
НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код, т.е. неизвестно что. Вот что там будет - то и продолжит работать.
Так что в этом случае нельзя использовать прерывания, и всё.
НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код, т.е. неизвестно что. Вот что там будет - то и продолжит работать.
Так что в этом случае нельзя использовать прерывания, и всё.
Ну не надо так категоричноploop писал(а):Так что в этом случае нельзя использовать прерывания, и всё.
Код: Выделить всё
.OGR $000
proga
proga
proga
rjmp PC+2
rjmp preryvanie
proga
proga
...[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Gudd-Head, не учите котят костылям) они еще ходить не научились)
Ставим плюсы: )
Ну почему же? Это как раз такой подвыперт, который ни один СИшный компилятор не осилит. Или они так делают?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
вот. вот это меня и интересует......, почему счетчик команд перебрасывает именно на те адресагде должны были быть прописаны вектора прерываний но в данный момент там находится моя прога....., откуда он знает что там должны находится вектора прерываний ?ploop писал(а):НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код
Tell Me The Truth
Логичней было бы спросить, откуда ТЫ знаешь, что там находятся вектора прерыванийFreshMan писал(а):откуда он знает что там должны находится вектора прерываний ?
Конструктора МК так сделали и поставили тебя перед фактом.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Да вот сделали так разработчики и всё. Могли бы их и с конца разместить, и в середине, но в начале удобней.откуда он знает что там должны находится вектора прерываний ?
Тупо железно. "Запаяли в схеме".
Его не интересует, что там, переходы на подпрограмму обработчик прерывания или какая-то другая ваша часть программы, он просто так сделан и все... Там даже вами могут быть записаны какие-то константы, при этом переход на них может выдать чудесные глюки, самым безобидным из которых будет сбросFreshMan писал(а):почему счетчик команд перебрасывает именно на те адресагде должны были быть прописаны вектора прерываний но в данный момент там находится моя прога.....,
выше ответили...FreshMan писал(а): откуда он знает что там должны находится вектора прерываний ?
ешкин кот....., шото не пойму..... зачем же мы тогда пишем вот эти строки ?
который, как я понял, говорят что с 0х00 начинается наша прога
ведь по факту код проги будет начинаться явно не с этого адреса, при наличии прерываний
Код: Выделить всё
.CSEG
.ORG $0000ведь по факту код проги будет начинаться явно не с этого адреса, при наличии прерываний
Tell Me The Truth
Нет нет, как раз с этого, это тоже прерывание - СБРОС, с него всегда начинается программа. Т.е. вся программа, как бы есть обработчик прерывания "сброс", вот такая вот рекурсия.
Последний раз редактировалось Engineer_Keen Пн сен 02, 2013 15:38:11, всего редактировалось 1 раз.
Нет. Это мы говорим компилятору, КУДА ЗАСУНУТЬ код, который пойдёт дальше. .CSEG .ORG $0000 можно и не писать, они по умолчанию такие и есть.FreshMan писал(а):который, как я понял, говорят что с 0х00 начинается наша прога
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Я тоже не пойму, зачем ты так пишешь?ешкин кот....., шото не пойму..... зачем же мы тогда пишем вот эти строки ?
Я вот как пишу:

INT_VECTOR_SIZE - адрес конца блока прерываний.
дальше после векторов прерываний ?Gudd-Head писал(а):КУДА ЗАСУНУТЬ код, который пойдёт дальше
Tell Me The Truth
Директива .org говорит компилятору: "всё, что дальше я сочинил, суй по этому адресу". Можешь написать там любое число в пределах объёма памяти, туда компилятор его и засунет.
Дальше после директивы .ORG $ХХХХFreshMan писал(а):дальше после векторов прерываний ?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


