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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

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

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

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

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

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

Сообщение FreshMan »

ploop писал(а):НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код

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

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

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

FreshMan писал(а):откуда он знает что там должны находится вектора прерываний ?

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

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

Сообщение ploop »

откуда он знает что там должны находится вектора прерываний ?

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

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

Сообщение Engineer_Keen »

FreshMan писал(а):почему счетчик команд перебрасывает именно на те адресагде должны были быть прописаны вектора прерываний но в данный момент там находится моя прога.....,

Его не интересует, что там, переходы на подпрограмму обработчик прерывания или какая-то другая ваша часть программы, он просто так сделан и все... Там даже вами могут быть записаны какие-то константы, при этом переход на них может выдать чудесные глюки, самым безобидным из которых будет сброс :)))
FreshMan писал(а): откуда он знает что там должны находится вектора прерываний ?

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

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

Сообщение FreshMan »

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

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

.CSEG
.ORG $0000

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

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

Сообщение Engineer_Keen »

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

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

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

FreshMan писал(а):который, как я понял, говорят что с 0х00 начинается наша прога

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

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

Сообщение ploop »

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

Я тоже не пойму, зачем ты так пишешь? :)))
Я вот как пишу:

Изображение

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

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

Сообщение FreshMan »

Gudd-Head писал(а):КУДА ЗАСУНУТЬ код, который пойдёт дальше

дальше после векторов прерываний ?
Tell Me The Truth
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

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

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

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

FreshMan писал(а):дальше после векторов прерываний ?

Дальше после директивы .ORG $ХХХХ
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

ploop писал(а):Директива .org говорит компилятору: "всё, что дальше я сочинил, суй по этому адресу". Можешь написать там любое число в пределах объёма памяти, туда компилятор его и засунет.

Позволю уточнить - не "по этому адресу", а "начиная с адреса".
И вообще, было ведь уже - viewtopic.php?f=57&t=72364
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

ploop писал(а):INT_VECTOR_SIZE - адрес конца блока прерываний.
Только INT_VECTORS_SIZE
Ставим плюсы: )
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

ibiza11, на вкус и цвет :)

Это скриншот кода работающего проекта, который компилировался gavrasm'ом. Последний хорош тем, что ему не нужны .inc - файлы (или как они там называются) контроллера. Все поддерживаемые варианты в нём уже зашиты.
Достаточно указать вначале файла директиву .device (например .device ATmega48)

Но некоторых "привычных" дефайнов нет, как и вышеназванного.
Так что вначале было так:

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

.equ INT_VECTOR_SIZE = 0x01A            ; Размер таблицы прерываний для ATmega48
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Все поддерживаемые варианты в нём уже зашиты.
мне кажется они зашиты именно inc файлами, не?))) хотя я не буду спорить, я не работал в gavrasm'е
не пробовали с именем, которое я предложил скомпилировать? может все таки есть?)))
Ставим плюсы: )
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

мне кажется они зашиты именно inc файлами, не?

А кто их знает, исходники есть, но не смотрел.

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

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

Сообщение FreshMan »

1) вычитал что в младших моделях AVR стек организован на аппаратном уровне, в остальных моделях - на програмном............, в чем разница и почему это так сделано
2) в каком офоциальном документе от производителя описывается принцип работы МК "взагалi" т.е. от момента сброса и далее.
3) может кто в курсе как называется сия книга http://autoelectric.xirad.ru/index.php/ ... avr/69-pop хотелось бы ее скачать и почитывать перед сном :))
Tell Me The Truth
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

1) Стек всегда реализуется аппаратно (если мы говорим про аппаратный стек :) ). Только в моделях, в которых нет оперативной памяти, для стека используется небольшой буфер, который больше никуда использовать нельзя.
2) В даташите. Хотя что там описывать, во время сброса инициализируется периферия, управление передаётся на вектор RESET и всё.
3) Сия информация есть на сайте производителя. А так же в сети полно переводов.
Ответить

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