... настраиваете таймер на переполнение и в прерывании опрашиваете клавиатуру. Если переполнение, например, происходит каждые 10 мсек, то наличие "сигнала" нажатия в течении 10 прерываний подряд и есть факт нажатия.Можно поподробнее?
Ассемблер (ASM) для AVR в вопросах и ответах
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Предположим я опрошу кнопку и запущу процедуру, а что потом? Как обработать все кнопки? И не проще ли подправить мой код, видел много примеров на таком принципе как у меня, без таймеров, а то я в них не шарю
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ploop писал(а):Блин, да вы когда-нибудь научитесь вкладывать простыни кода в файлы???
Я конечно дико извиняюсь, но как уже сказал выше - файл прикрепить не удалось. Вылазит окошко Идет закачка, потом окошко закрывается, а файл так и не прикреплен((((
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавьте в архив. Форум не все расширения принимает.
- nibiluk
- Потрогал лапой паяльник
- Сообщения: 383
- Зарегистрирован: Пн мар 16, 2009 23:35:42
- Откуда: Украина Новоднестровск
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Всем привет. К то подскожет как написать код, чтоб прочитать по порядку содержимое, сначала PIND0, затем PIND1, и так далее, PIND2,PIND3.PIND4,PIND5,PIND6,PIND7.
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
а зачем такой изврат?
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
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 в вопросах и ответах
Спасибо. АСМ только начал учить, много чего не понятно.
Всем известно что любая микросхема работает на дыме, и если волшебный дым из неё вышел то она перестает работать.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Skyer писал(а):Всем привет. Такая проблема, решил в качестве примера собрать матричную клавиатуру и опрашивать ее 32ой мегой. В Proteuse схема работает как надо, а вот в железе нет, светодиоды просто друг за другом загораются.
Очередная аргумент в пользу вредности Протеуса.
Человек научился писать программы для МК, но такие, что только в Протеусе и работают.
А не было бы Протеуса, он бы давно научился писать программы, работающие в реале.
Подавление дребезга можно делать по разному.
Можно так. Опрос клавиатуры нужно осуществлять 100 раз в секунду - не чаще.
Если клава прочлась нажатой - это факт нажатия.
Если клава 10 раз подряд прочлась отжатой - факт отжатия.
Если был факт нажатия, то не может быть еще факта нажатия, пока не было факта отжатия.
Можно по другому - дело вкуса.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Решил написать один большой проект на ассемблере,
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу64.. подумал что на ассемблере код будет короче.. да и быстродействие возможно будет где то чуть больше...
На асм для меги пишу впервые
архив с написанным вкладываю
компилятор ассемблера - tavrasm
В настоящее время у меня следующие проблемы:
1. помоему где то некорректно работаю со стеком - иногда код перезагружается (на экране железки появляется мусор - с экраном работаю через буфер - возникло подозрение что стек растет и доходит до экрана)
2. постоянно в буфер экрана записываются какие то два байта (вижу на экране артифакты).. в коде вроде ничего записывающего по тем адресам нет... но артифакты есть..
думал что это глюки процедуры печати символов - но сдвинул в RAM буфер экрана - и артифакты сдвинулись на новое место на экране - то есть запись идет по фиксированным адресам ОЗУ и соответственно скорее всего процедура печати символов здесь не причем..
3. есть ли команда сохранения флагового регистра ? раньше помню всегда была команды наподобие PUSH AF / POP AF - чтобы сохранить регистр флагов в прерывании - а как это сделать в меге ? на PUSH SREG - компилятор ругнулся..
4. Какой софт отладчик может работать c выходными файлами tavrasm - ткните пож-та.. желательно с описанием настройки.. и хотелось бы чтото попроще протеуса - в принципе сейчас интересует только отладка кода (найти проблемы со стеком, посмотреть кто и что пишет в экранный буфер, посмотреть что делает прерывание с флагами..)
5. Очень был бы благодарен за указание подводных камней в написанном мною коде - лучше я перепишу сейчас... наверняка стилистических и алгоритмических ошибок в этом коде много... укажите мне на них - может быть мои проблемы от этих ошибок и возникли....
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу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 в вопросах и ответах
а что же это за супер-проект такой, что в мегу64 может не влезть?!ВитГо писал(а):Решил написать один большой проект на ассемблере,
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу64.. подумал что на ассемблере код будет короче.. да и быстродействие возможно будет где то чуть больше...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ARV писал(а):а что же это за супер-проект такой, что в мегу64 может не влезть?!ВитГо писал(а):Решил написать один большой проект на ассемблере,
знаю что на СИ было бы проще - но к сожалению код на СИ не умещается в мегу64.. подумал что на ассемблере код будет короче.. да и быстродействие возможно будет где то чуть больше...
кодер передатчика радиоуправления летающими моделями..
вот ссылка на первый вариант http://forum.rcdesign.ru/blogs/50021/blog9239.html (это мой блог на профильном сайте.. там же и обсуждение прошивки, версии, документация) - написан на СИ..
оо! вот кстати ссылка на доку в формате pdf.. там все с картинками
но очень многое написать в первом варианте не удалось- и алгоритм повлиял и задачу ставил попроще (чтобы не распыляться бесконечно на функционал).. да и опыта было не много..
сейчас начал второй вариант http://forum.rcdesign.ru/blogs/50021/blog9927.html - дошел достаточно далеко... но использование программной памяти уже перевалило 60%.. причем написано только процентов 40 задачи... да и интерфейс не получился тот что хотел (а то что хотел - займет еще больше места !)
вот и решил на асм перейти.. - и нашел первые грабли.. чую что из-за моего неправильного программирования все проблемы.. - вот и пришел за советом
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
.. конечноВитГо писал(а):есть ли команда сохранения флагового регистра ?
Код: Выделить всё
in r31,SREG
push r31
...
pop r31
out SREG,r31
...чаще всего так и бываетВитГо писал(а):может быть мои проблемы от этих ошибок и возникли....
Re: Ассемблер (ASM) для AVR в вопросах и ответах
64 кило на ассемблере?
Если там не табличные данные - вы мазохист
Если там не табличные данные - вы мазохист
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Коты!!
читайте исходные сообщения !
открывайте вложенные файлы !!
Повторю еще раз:
проект перешагнет за 64 кб - если его писать на СИ..
что за проект - можно глянуть в сообщении выше.. (есть ссылка на доку, форумы, блоги)
сейчас хочу переписать проект на асме.. и уверен что все равно займу около 40 кб флеша.. - ну просто поверьте в это и все..
в железке стоит мега64, железка покупная - соответственно что стоит то и использую
во вложенных файлах то что я уже написал.. - там всего на пару кб.. - я только начал.. и уже нашел грабли... прошу ответить на те вопросы которые я поставил в исходном сообщении..
p.s. не обсуждайте кривизну моих идей, вы их не знаете и не видели, обсуждайте лучше кривизну моих рук, ибо код этими руками написанный я вложил для обсуждения и задал конкретные вопросы которые меня интересуют
читайте исходные сообщения !
открывайте вложенные файлы !!
Повторю еще раз:
проект перешагнет за 64 кб - если его писать на СИ..
что за проект - можно глянуть в сообщении выше.. (есть ссылка на доку, форумы, блоги)
сейчас хочу переписать проект на асме.. и уверен что все равно займу около 40 кб флеша.. - ну просто поверьте в это и все..
в железке стоит мега64, железка покупная - соответственно что стоит то и использую
во вложенных файлах то что я уже написал.. - там всего на пару кб.. - я только начал.. и уже нашел грабли... прошу ответить на те вопросы которые я поставил в исходном сообщении..
p.s. не обсуждайте кривизну моих идей, вы их не знаете и не видели, обсуждайте лучше кривизну моих рук, ибо код этими руками написанный я вложил для обсуждения и задал конкретные вопросы которые меня интересуют
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
... и с каждым новым килобайтом проблем будет больше, хотя бы из-за размера исходника.ВитГо писал(а):во вложенных файлах то что я уже написал.. - там всего на пару кб.. - я только начал.. и уже нашел грабли... прошу ответить на те вопросы которые я поставил в исходном сообщении..
Если нужна помощь по написанию конкретной функции на ассемблере - постараюсь помочь (в комментах опишите, что на входе и что надо получить выходе) ... правда пишу в AVR Studio
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Да ладно, не кипятитесь. Просто 64к кода - это реально много.
С SREG разобрались? Глюки не исчезли?
С SREG разобрались? Глюки не исчезли?
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Ассемблер (ASM) для AVR в вопросах и ответах
... по поводу Вашего кода экономии при таком стиле записи точно не будет. Все можно описать так
Код: Выделить всё
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
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Варнингов компилятора не получали, где массив индикатора?
И таких дополнений он сделает 256. 256 байт нулей!
Код: Выделить всё
lcd_font.asm(1) : Warning : A .DB segment with an odd number of bytes is detected. A zero byte is added.И таких дополнений он сделает 256. 256 байт нулей!
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 как раз по этой причине)... - печать символа будет переписана (как и таблица символов) - этот вариант был оставлен как отладочный, просто чтобы была возможность выводить на экран строки
