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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

Можно поподробнее?
... настраиваете таймер на переполнение и в прерывании опрашиваете клавиатуру. Если переполнение, например, происходит каждые 10 мсек, то наличие "сигнала" нажатия в течении 10 прерываний подряд и есть факт нажатия.
Skyer
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пт фев 18, 2011 20:37:34

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

Сообщение Skyer »

Предположим я опрошу кнопку и запущу процедуру, а что потом? Как обработать все кнопки? И не проще ли подправить мой код, видел много примеров на таком принципе как у меня, без таймеров, а то я в них не шарю
Skyer
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пт фев 18, 2011 20:37:34

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

Сообщение Skyer »

ploop писал(а):Блин, да вы когда-нибудь научитесь вкладывать простыни кода в файлы???


Я конечно дико извиняюсь, но как уже сказал выше - файл прикрепить не удалось. Вылазит окошко Идет закачка, потом окошко закрывается, а файл так и не прикреплен((((
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Добавьте в архив. Форум не все расширения принимает.
Аватара пользователя
nibiluk
Потрогал лапой паяльник
Сообщения: 383
Зарегистрирован: Пн мар 16, 2009 23:35:42
Откуда: Украина Новоднестровск

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

Сообщение nibiluk »

Всем привет. К то подскожет как написать код, чтоб прочитать по порядку содержимое, сначала PIND0, затем PIND1, и так далее, PIND2,PIND3.PIND4,PIND5,PIND6,PIND7.
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

а зачем такой изврат?
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

nibiluk писал(а):Всем привет. К то подскожет как написать код, чтоб прочитать по порядку содержимое, сначала PIND0, затем PIND1, и так далее, PIND2,PIND3.PIND4,PIND5,PIND6,PIND7.


Только прочитать? А использовать полученные данные не надо?

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

SBIS PIND,0
RJMP P00
;что-то делаем, если PIND0=1
RJMP P1
P00:
;что-то делаем, если PNID0=0
P1:SBIS PIND,1
RJMP P10
;что-то делаем, если PIND1=1
RJMP P2
P10:
;что-то делаем, если PNID1=0
P2:; И Т. Д.
Аватара пользователя
nibiluk
Потрогал лапой паяльник
Сообщения: 383
Зарегистрирован: Пн мар 16, 2009 23:35:42
Откуда: Украина Новоднестровск

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

Сообщение nibiluk »

Спасибо. АСМ только начал учить, много чего не понятно.
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
Ethereal
Родился
Сообщения: 16
Зарегистрирован: Ср янв 19, 2011 00:34:56

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

Сообщение Ethereal »

Skyer писал(а):Всем привет. Такая проблема, решил в качестве примера собрать матричную клавиатуру и опрашивать ее 32ой мегой. В Proteuse схема работает как надо, а вот в железе нет, светодиоды просто друг за другом загораются.

Очередная аргумент в пользу вредности Протеуса.
Человек научился писать программы для МК, но такие, что только в Протеусе и работают.
А не было бы Протеуса, он бы давно научился писать программы, работающие в реале.

Подавление дребезга можно делать по разному.
Можно так. Опрос клавиатуры нужно осуществлять 100 раз в секунду - не чаще.
Если клава прочлась нажатой - это факт нажатия.
Если клава 10 раз подряд прочлась отжатой - факт отжатия.
Если был факт нажатия, то не может быть еще факта нажатия, пока не было факта отжатия.

Можно по другому - дело вкуса.
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

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

Сообщение ВитГо »

Решил написать один большой проект на ассемблере,
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу64.. подумал что на ассемблере код будет короче.. да и быстродействие возможно будет где то чуть больше...

На асм для меги пишу впервые

архив с написанным вкладываю
компилятор ассемблера - tavrasm

В настоящее время у меня следующие проблемы:
1. помоему где то некорректно работаю со стеком - иногда код перезагружается (на экране железки появляется мусор - с экраном работаю через буфер - возникло подозрение что стек растет и доходит до экрана)

2. постоянно в буфер экрана записываются какие то два байта (вижу на экране артифакты).. в коде вроде ничего записывающего по тем адресам нет... но артифакты есть..
думал что это глюки процедуры печати символов - но сдвинул в RAM буфер экрана - и артифакты сдвинулись на новое место на экране - то есть запись идет по фиксированным адресам ОЗУ и соответственно скорее всего процедура печати символов здесь не причем..

3. есть ли команда сохранения флагового регистра ? раньше помню всегда была команды наподобие PUSH AF / POP AF - чтобы сохранить регистр флагов в прерывании - а как это сделать в меге ? на PUSH SREG - компилятор ругнулся..

4. Какой софт отладчик может работать c выходными файлами tavrasm - ткните пож-та.. желательно с описанием настройки.. и хотелось бы чтото попроще протеуса - в принципе сейчас интересует только отладка кода (найти проблемы со стеком, посмотреть кто и что пишет в экранный буфер, посмотреть что делает прерывание с флагами..)

5. Очень был бы благодарен за указание подводных камней в написанном мною коде - лучше я перепишу сейчас... наверняка стилистических и алгоритмических ошибок в этом коде много... укажите мне на них - может быть мои проблемы от этих ошибок и возникли....
Вложения
ACODER.ZIP
(11.67 КБ) 203 скачивания
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

ВитГо писал(а):Решил написать один большой проект на ассемблере,
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу64.. подумал что на ассемблере код будет короче.. да и быстродействие возможно будет где то чуть больше...
а что же это за супер-проект такой, что в мегу64 может не влезть?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

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

Сообщение ВитГо »

ARV писал(а):
ВитГо писал(а):Решил написать один большой проект на ассемблере,
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу64.. подумал что на ассемблере код будет короче.. да и быстродействие возможно будет где то чуть больше...
а что же это за супер-проект такой, что в мегу64 может не влезть?!


кодер передатчика радиоуправления летающими моделями..
вот ссылка на первый вариант http://forum.rcdesign.ru/blogs/50021/blog9239.html (это мой блог на профильном сайте.. там же и обсуждение прошивки, версии, документация) - написан на СИ..
оо! вот кстати ссылка на доку в формате pdf.. там все с картинками :-) vcoder.pdf
но очень многое написать в первом варианте не удалось- и алгоритм повлиял и задачу ставил попроще (чтобы не распыляться бесконечно на функционал).. да и опыта было не много..
сейчас начал второй вариант http://forum.rcdesign.ru/blogs/50021/blog9927.html - дошел достаточно далеко... но использование программной памяти уже перевалило 60%.. причем написано только процентов 40 задачи... да и интерфейс не получился тот что хотел (а то что хотел - займет еще больше места !)
вот и решил на асм перейти.. - и нашел первые грабли.. чую что из-за моего неправильного программирования все проблемы.. - вот и пришел за советом
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

ВитГо писал(а):есть ли команда сохранения флагового регистра ?
.. конечно

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

       in       r31,SREG
push     r31 
...
pop     r31
out     SREG,r31 
 

ВитГо писал(а):может быть мои проблемы от этих ошибок и возникли....
...чаще всего так и бывает :) .... израсходовать 64Кб Flashа - как то с трудом верится...
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

64 кило на ассемблере? :shock:
Если там не табличные данные - вы мазохист :)
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

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

Сообщение ВитГо »

Коты!!
читайте исходные сообщения !
открывайте вложенные файлы !!

Повторю еще раз:
проект перешагнет за 64 кб - если его писать на СИ..
что за проект - можно глянуть в сообщении выше.. (есть ссылка на доку, форумы, блоги)

сейчас хочу переписать проект на асме.. и уверен что все равно займу около 40 кб флеша.. - ну просто поверьте в это и все..
в железке стоит мега64, железка покупная - соответственно что стоит то и использую

во вложенных файлах то что я уже написал.. - там всего на пару кб.. - я только начал.. и уже нашел грабли... прошу ответить на те вопросы которые я поставил в исходном сообщении..

p.s. не обсуждайте кривизну моих идей, вы их не знаете и не видели, обсуждайте лучше кривизну моих рук, ибо код этими руками написанный я вложил для обсуждения и задал конкретные вопросы которые меня интересуют
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

ВитГо писал(а):во вложенных файлах то что я уже написал.. - там всего на пару кб.. - я только начал.. и уже нашел грабли... прошу ответить на те вопросы которые я поставил в исходном сообщении..
... и с каждым новым килобайтом проблем будет больше, хотя бы из-за размера исходника.
Если нужна помощь по написанию конкретной функции на ассемблере - постараюсь помочь (в комментах опишите, что на входе и что надо получить выходе) ... правда пишу в AVR Studio
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Да ладно, не кипятитесь. Просто 64к кода - это реально много.
С SREG разобрались? Глюки не исчезли?
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

... по поводу Вашего кода

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

         IN   temp   ,   PORTC      ; PORTC |= 0x20;
         ORI   temp   ,   0x20
         OUT   PORTC   ,   temp
         IN   temp   ,   PORTC      ; PORTC &= 0xDF; 
         ANDI   temp   ,   0xDF
         OUT   PORTC   ,   temp
         IN   temp   ,   PORTC      ; PORTC |= 0x02;
         ORI   temp   ,   0x02
         OUT   PORTC   ,   temp
экономии при таком стиле записи точно не будет. Все можно описать так

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

sbi PORTC,5
cbi PORTC,5
sbi PORTC,5
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Варнингов компилятора не получали, где массив индикатора?

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

lcd_font.asm(1) : Warning : A .DB segment with an odd number of bytes is detected. A zero byte is added.

И таких дополнений он сделает 256. 256 байт нулей!
ВитГо
Вымогатель припоя
Сообщения: 680
Зарегистрирован: Ср фев 24, 2010 19:16:07

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

Сообщение ВитГо »

ploop писал(а):Варнингов компилятора не получали, где массив индикатора?

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

lcd_font.asm(1) : Warning : A .DB segment with an odd number of bytes is detected. A zero byte is added.

И таких дополнений он сделает 256. 256 байт нулей!


гм.. компилятор ничего не выдает... у меня tavrasm...
по поводу нулей - я это уже увидел (когда считаю адрес символа в таблице то умножаю не на 5 (размер образа символа в таблице) а на 6 как раз по этой причине)... - печать символа будет переписана (как и таблица символов) - этот вариант был оставлен как отладочный, просто чтобы была возможность выводить на экран строки
Ответить

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