Ассемблер (ASM) для AVR в вопросах и ответах
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 писал(а):дальше после векторов прерываний ?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Позволю уточнить - не "по этому адресу", а "начиная с адреса".ploop писал(а):Директива .org говорит компилятору: "всё, что дальше я сочинил, суй по этому адресу". Можешь написать там любое число в пределах объёма памяти, туда компилятор его и засунет.
И вообще, было ведь уже - http://radiokot.ru/forum/viewtopic.php?f=57&t=72364
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Только INT_VECTORS_SIZEploop писал(а):INT_VECTOR_SIZE - адрес конца блока прерываний.
Ставим плюсы: )
ibiza11, на вкус и цвет 
Это скриншот кода работающего проекта, который компилировался gavrasm'ом. Последний хорош тем, что ему не нужны .inc - файлы (или как они там называются) контроллера. Все поддерживаемые варианты в нём уже зашиты.
Достаточно указать вначале файла директиву .device (например .device ATmega48)
Но некоторых "привычных" дефайнов нет, как и вышеназванного.
Так что вначале было так:
Это скриншот кода работающего проекта, который компилировался gavrasm'ом. Последний хорош тем, что ему не нужны .inc - файлы (или как они там называются) контроллера. Все поддерживаемые варианты в нём уже зашиты.
Достаточно указать вначале файла директиву .device (например .device ATmega48)
Но некоторых "привычных" дефайнов нет, как и вышеназванного.
Так что вначале было так:
Код: Выделить всё
.equ INT_VECTOR_SIZE = 0x01A ; Размер таблицы прерываний для ATmega48мне кажется они зашиты именно inc файлами, не?))) хотя я не буду спорить, я не работал в gavrasm'еВсе поддерживаемые варианты в нём уже зашиты.
не пробовали с именем, которое я предложил скомпилировать? может все таки есть?)))
Ставим плюсы: )
А кто их знает, исходники есть, но не смотрел.мне кажется они зашиты именно inc файлами, не?
Хм, скомпилил, вы правы. Значит тогда была досадная опечатка, которую не заметил. Ну да чёрт с ней, не суть. Уже больше года на ассемблере не пишу
1) вычитал что в младших моделях AVR стек организован на аппаратном уровне, в остальных моделях - на програмном............, в чем разница и почему это так сделано
2) в каком офоциальном документе от производителя описывается принцип работы МК "взагалi" т.е. от момента сброса и далее.
3) может кто в курсе как называется сия книга http://autoelectric.xirad.ru/index.php/ ... avr/69-pop хотелось бы ее скачать и почитывать перед сном
2) в каком офоциальном документе от производителя описывается принцип работы МК "взагалi" т.е. от момента сброса и далее.
3) может кто в курсе как называется сия книга http://autoelectric.xirad.ru/index.php/ ... avr/69-pop хотелось бы ее скачать и почитывать перед сном
Tell Me The Truth
1) Стек всегда реализуется аппаратно (если мы говорим про аппаратный стек
). Только в моделях, в которых нет оперативной памяти, для стека используется небольшой буфер, который больше никуда использовать нельзя.
2) В даташите. Хотя что там описывать, во время сброса инициализируется периферия, управление передаётся на вектор RESET и всё.
3) Сия информация есть на сайте производителя. А так же в сети полно переводов.
2) В даташите. Хотя что там описывать, во время сброса инициализируется периферия, управление передаётся на вектор RESET и всё.
3) Сия информация есть на сайте производителя. А так же в сети полно переводов.


