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

Обсуждаем контроллеры компании Atmel.
akl
Друг Кота
Сообщения: 4443
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Я создавал массив символов во FLASH (правда у меня цифры 24х40 и усеченный шрифт 16х24). Перед выводом создавал образ экрана, точнее его части, т.к. ОЗУ хватало только на 64 строки (индикатор 400*240 пикселей), где делал распаковку текущего символа на строки и загрузку в ОЗУ. Естественно, постоянная часть, которая уже была отправлена в ОЗУ индикатора не трогалась.
СпойлерИзображение
Вложения
индикатор LS без стрелки.jpg
(32.78 КБ) 493 скачивания
trofim2
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

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

Сообщение trofim2 »

Если памяти во FLASH достаточно, то можно под каждый символ отводить максимальную ширину, тогда адрес легко вычисляется. Первый байт знакогенератора - ширина символа.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

trofim2 писал(а):Если памяти во FLASH достаточно, то можно под каждый символ отводить максимальную ширину, тогда адрес легко вычисляется.
255 символов 32х32 пиксела (далеко не гигантский шрифт) займут всего ничего 255*32*8=65280 байт... а так - да, можно отводить и максимальную ширину...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

255 символов 32х32 пиксела (далеко не гигантский шрифт) займут всего ничего 255*32*8=65280 байт...

Разве не 255*32*4?
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

С выводом чего то отдельного или только цифр, или даже группы картинок из таблицы разобрался. И текст развернуть могу, MHz -это один символ. Цифры использую тоже 24х40 без засечек.
СпойлерИзображение



Сейчас именно таблицу ASCII хочу перевести.

Во вложении таблица со смайлами 24х24 которые на фото.
trofim2
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

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

Сообщение trofim2 »

trofim2 писал(а):Если памяти во FLASH достаточно, то можно под каждый символ отводить максимальную ширину, тогда адрес легко вычисляется.
255 символов 32х32 пиксела (далеко не гигантский шрифт) займут всего ничего 255*32*8=65280 байт... а так - да, можно отводить и максимальную ширину...

Для М128 это всего половина памяти.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

1. При описании каждого символа шрифта указываетс его ширина. Т.е. в массиве байтов, описывающих пикселы символа первый байт задает ширину этого символа.

Да, спасибо. Этим способом и воспользуюсь.
По предварительным подсчётам:
При средней ширине символа в 8 байт некоторые символы (ориентировочно) получатся до 12-ти байт +1 байт ширина символа.
Даже если округлю до 15 байт на символ в две строки - памяти хватит.

Большое спасибо.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Сделал первым способом. По коду громоздко, если средняя ширина одного знака 7px, то по максимуму все увеличиваются до 11px (в полтора раза), + 1 байт ширина, +1 - "0", итого 24 байта на знак. Но возможно буду ещё увеличивать до 16х18, когда дисплеи 240х320 придут. А это примерно 72 байта на знак выйдет (16*1,5*3). Чем цветнее дисплей, тем мельче пиксель.
СпойлерИзображение

В голове ещё третий способ нарисовался. Посмотрю, что будет по памяти, и возможно сделаю "не вашим не нашим", т.е несколько таблиц с символами (шириной 2, 4, 7, 11 px), символы задавать кодами и через условие делать перенаправление на таблицы.

PS Да, с разными таблицами буду пробовать, экономия по памяти получится ощутимая, так как можно некоторые символы кириллицы и латиницы (17 насчитал ABCEHKMOPTXaceopy, а 17х72=1224 байта) на один знак вешать.

PS2 С переменной шириной шрифта определился, но от ASCII отказываюсь, т. к. на больших шрифтах весьма не рационально.
Последний раз редактировалось shonty Чт янв 17, 2019 10:26:35, всего редактировалось 5 раз.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15539
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Может почитать про "масштабируемые шрифты" для форточек...
Только вот ГДЕ?
:dont_know:
:(
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

shonty писал(а):некоторые символы кириллицы и латиницы (17 насчитал ABCEHKMOPTXaceopy
вообще-то, должно быть 12 заглавных букв, совпадающих с латиницей.
кстати, в автомобильных номерах используются только буквы, совпадающие по начертанию с латиницей. и мне помнится, что их 12...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

вообще-то, должно быть 12 заглавных букв, совпадающих с латиницей.

Видимо Y и У, но это как написать.

Решение можно найти и более оригинальное, но я пока не виртуоз, а сразу всё впитать в себя не успеваю, да и дозировать нужно.
На этом этапе сделаю по пониманию материала.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19039
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

да, это буква "У".
"Требованиями и условиями ГОСТа обозначено, что на автомобильных номерах могут быть использованы 12 букв из алфавита кириллицы — А, В, Е, К, М, Н, О, Р, С, Т, У и Х, так как только они имеют аналогичные буквы в латинице."
Источник: http://pravo-auto.com/kakie-bukvy-ispol ... ah-rossii/
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

2. Создается отдельная таблица, в которой хранится ширина и адрес начала символа в знакогенераторе, а сам знакогенератор в отдельной таблице

Всё таки решился сделать вторым способом. Хочу уточнить несколько деталей.
1. Байт ширины символа без разницы где размещать: в индексной таблице или таблице знакогенератора?
2. (Основной вопрос) Поиск адреса начала символа в знакогенераторе. Извините за делетантство, но на ум приходит ввести 3 параметра: это 1-й множитель, 2-й множитель (или число проходов первого параметра) + слагаемое (в качестве довеска, не все ж числа делятся без остатка).
МКС
Встал на лапы
Сообщения: 147
Зарегистрирован: Чт янв 10, 2013 21:03:18

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

Сообщение МКС »

Здравствуйте ребята! Прогу пишу на Ассемблере для МК Atmega8. Подскажите как из регистровой пары (например Х - регистр) сделать двухбайтный счетчик с инкрементом и декрементом?
trofim2
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

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

Сообщение trofim2 »

adiw xl,1 - инкремент
sbiw xl,1 - декремент
МКС
Встал на лапы
Сообщения: 147
Зарегистрирован: Чт янв 10, 2013 21:03:18

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

Сообщение МКС »

Т.е. при достижении числа 256 xl обнулится, а в младшем бите xh запишется 1?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15539
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

В случае с adiw/sbiw обрабатывается сразу вся регистровая пара
Xh:Xl, а не раздельно младший и старший байты.
8)
МКС
Встал на лапы
Сообщения: 147
Зарегистрирован: Чт янв 10, 2013 21:03:18

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

Сообщение МКС »

Ок! Благодарю всех за ответы!
akl
Друг Кота
Сообщения: 4443
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Иногда бывает полезно псевдочтение в регистр с целью изменить содержимое регистровой пары.

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

LD R0,X+; инкремент XH:XL
LD R0,-X; декремент XH:XL
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Хм, приколюха. Не знал. Спасибо.
Docendo discimus
Ответить

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