Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
1

Перевод ASCII-кода в адреса SRAM хранимых констант AVR

12.01.2013, 22:43. Просмотров 2719. Ответов 30
Метки нет (Все метки)

Доброе время суток.

Столкнулся с проблемой перевода ASCII кода в адреса SRAM хранимых констант директивы .db

Суть в чем:

Используя ASCII код (45 - 46; 48 -57; 65 - 90) необходимо указать адрес SRAM хранимых констант директивы .db
от 0 до 37


Есть предположения как можно организовать эту процедуру ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2013, 22:43
Ответы с готовыми решениями:

AVR. Копирование программы в SRAM
Доброго всем дня, хорошего настроения, друзья. Направьте, кто может. Вот что...

Размещение констант во flash-памяти AVR?
Уважаемые коллеги! Осваиваю графический экранчик, написал для него в отдельном...

Обращение к регистрам через адреса (ASM, AVR Studio)
Здравствуйте, есть такой вопрос: к примеру у меня в SRAM хранятся реальные...

Отладчик кода AVR
Уважаемые профессионалы и любители, хотелось бы узнать Ваше мнение. Каким...

Небольшой эксперимент в написании кода на си. Avr
// Работает. Минус: находится первое же сообщение, но, АКТУАЛЬНОЕ сообщение...

30
Grey
Тутошний я
1698 / 864 / 153
Регистрация: 03.11.2009
Сообщений: 2,636
Записей в блоге: 1
17.01.2013, 00:20 2
sasha0192, а можно пару примеров с использованием кодов 45 - 46, 65 - 90
Как или для чего с помощью минуса и точки указывать на SRAM?
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 08:45  [ТС] 3
Так смысли (45 - 46; 48 -57; 65 - 90) это коды ASCII, например код 45 соответствует символу "-",
48 -> "0"
49 -> "1" и так далее.

Проще говоря используя код ASCII указать на адрес кода семисегментного индикатора.

Есть конечно вариант опрашивать каждый символ... но слишком объемный код получится...

Может как-то по формуле высчитывать...
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
17.01.2013, 09:02 4
...а завести массив заранее определенных констант кодов и делать выборку по индексу религия не позволяет?
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 09:09  [ТС] 5
Цитата Сообщение от raxp Посмотреть сообщение
...а завести массив заранее определенных констант кодов
Это сделано.


Цитата Сообщение от raxp Посмотреть сообщение
делать выборку по индексу
Вот!

В том то и дело то что Индексом (код индекса) служит код ASCII и начитается он с 45 - 46; 48 -57; 65 - 90.
0
Grey
Тутошний я
1698 / 864 / 153
Регистрация: 03.11.2009
Сообщений: 2,636
Записей в блоге: 1
17.01.2013, 18:24 6
Цитата Сообщение от sasha0192 Посмотреть сообщение
том то и дело то что Индексом (код индекса) служит код ASCII и начитается он с 45 - 46; 48 -57; 65 - 90.
Можно по этим адресам записать нужные ASCII коды. Но например для ATmega 8 адреса SRAM начинаются с 96. Соответственно к ASCII кодам прибавлять например 60, и считывать.
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 19:32  [ТС] 7
Цитата Сообщение от Grey Посмотреть сообщение
Соответственно к ASCII кодам прибавлять например 60, и считывать.
Да, думал... но компилятору вить в .dseg не записать готовые маски для семисегментника.
0
Grey
Тутошний я
1698 / 864 / 153
Регистрация: 03.11.2009
Сообщений: 2,636
Записей в блоге: 1
17.01.2013, 19:38 8
sasha0192, если это не большой секрет, рассказуй полную идею чего делаешь. Я не представляю как на семисегментнеке выводить буквы.
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 19:45  [ТС] 9
Цитата Сообщение от Grey Посмотреть сообщение
Я не представляю как на семисегментнеке выводить буквы.
Так тоже самое, что и цифры только все буквы соответственно не вывести

Добавлено через 57 секунд
Цитата Сообщение от Grey Посмотреть сообщение
если это не большой секрет, рассказуй полную идею чего делаешь.
Драйвер для 8 разрядного семисегментного индикатора
0
Grey
Тутошний я
1698 / 864 / 153
Регистрация: 03.11.2009
Сообщений: 2,636
Записей в блоге: 1
17.01.2013, 21:01 10

Не по теме:

Я так и думал что вопрос не правильно сформулирован :)


Цитата Сообщение от sasha0192 Посмотреть сообщение
но компилятору вить в .dseg не записать готовые маски для семисегментника.
Переходи на другие компиляторы. Хотя не понимаю почему не записать.
Цитата Сообщение от sasha0192 Посмотреть сообщение
только все буквы соответственно не вывести
Переходи на знакосинтезирующие и графические дисплеи. И с кодировкой не нужно будет мучаться.
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 23:05  [ТС] 11
Переходи на другие компиляторы. Хотя не понимаю почему не записать.
Пока студия устраивает.

Каждую ячейку ОЗУ записывать?
долго...
это не флеш .db не прокатит.

Переходи на знакосинтезирующие и графические дисплеи. И с кодировкой не нужно будет мучаться.
Так уж сними работал...
Сейчас нужен светодиодный индикатор а точнее драйвер семисегментника, чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
0
Grey
17.01.2013, 23:13
  #12

Не по теме:

чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
Поэтому ты решил добавить второй контроллер в качестве драйвера? Впрочем тебе видней

0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
17.01.2013, 23:18 13
Сейчас нужен светодиодный индикатор а точнее драйвер семисегментника, чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
...не хотите тратить лишних ног контроллера - сдвиговые регистры или SPI http://www.cyberforum.ru/post2425994.html
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
18.01.2013, 08:53  [ТС] 14
Цитата Сообщение от Grey Посмотреть сообщение
Не по теме:
чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
Поэтому ты решил добавить второй контроллер в качестве драйвера? Впрочем тебе видней
Да! потому что это удобно.
Не нужно тратить машинного времени на обработку данных индикации так-как все это может сделать драйвер.

Цитата Сообщение от raxp Посмотреть сообщение
...не хотите тратить лишних ног контроллера - сдвиговые регистры или SPI BA56-11EWA. Варианты подключения
Дороговато... Icdarom.ru MAX7219ENG+
Гораздо дешевле драйвер на контроллере сделать!
Так же есть возможность выбора интерфейса SPI, UART, I2C.

Цитата Сообщение от raxp Посмотреть сообщение
сдвиговые регистры
На них и сделано, 74HC595
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
18.01.2013, 09:05 15
А у меги разве нет косвенной адрессации, например как у пиков?
У пика адрес для обращения к регистру записывается в FSR (0x04) регистр и при обращении к нулевому регистру (0x00) мы фактически обращаемся к регистру адрес которого записан в FSR.
Например для обнуления 100 регистров общего назначения начиная с 0x20 адреса мы записываем в FSR число 0x20, далее обнуляем нулевой регистр CLRF 0x00, и инкрементируем адрес INCRF FSR , делаем это сто раз в цикле. В рез-те в место 100 команд CLRF 0xXX нам понадобиться 12 команд нашей подпрограммы.
Также есть еще регистр PLATCH для загрузки адреса перехода.

Но это у пиков. У АВР тоже это должно быть.
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
18.01.2013, 09:15  [ТС] 16
Цитата Сообщение от russo turisto Посмотреть сообщение
А у меги разве нет косвенной адрессации, например как у пиков?
Есть. С использованием регистровых пар - X, Y, Z

Цитата Сообщение от russo turisto Посмотреть сообщение
Например для обнуления 100 регистров общего назначения начиная с 0x20 адреса мы записываем в FSR число 0x20, далее обнуляем нулевой регистр CLRF 0x00, и инкрементируем адрес INCRF FSR , делаем это сто раз в цикле. В рез-те в место 100 команд CLRF 0xXX нам понадобиться 12 команд нашей подпрограммы.
Да, возможно такое... если через цикл, то 100 байт однотипными данными только запишем...

Цитата Сообщение от russo turisto Посмотреть сообщение
Также есть еще регистр PLATCH для загрузки адреса перехода.
Так все адреса являются переходными...

Цитата Сообщение от russo turisto Посмотреть сообщение
Но это у пиков. У АВР тоже это должно быть.
Да... наверное все чрез цикл придется делать... компилятор не на все способен.
0
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
18.01.2013, 10:37 17
На них и сделано, 74HC595
так какие ноги контроллера вы тогда экономите? Cхему в тему, разговор безпредметный.
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
18.01.2013, 19:19 18
Вот для семисегментика подпрограмма
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//-------------- Returns mask for common cathode 7-seg. display
unsigned short mask(unsigned short num) {
  switch (num) {
    case 0 : return 0x3F;                                
    case 1 : return 0x06;
    case 2 : return 0x5B;
    case 3 : return 0x4F;
    case 4 : return 0x66;
    case 5 : return 0x6D;
    case 6 : return 0x7D;
    case 7 : return 0x07;
    case 8 : return 0x7F;
    case 9 : return 0x6F;
  } //case end
}
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
18.01.2013, 21:35  [ТС] 19
Цитата Сообщение от raxp Посмотреть сообщение
так какие ноги контроллера вы тогда экономите? Cхему в тему, разговор безпредметный.
Вот блок схема, думаю все сразу понятно где ноги МК экономим и машинное время.
0
Миниатюры
Перевод ASCII-кода в адреса SRAM хранимых констант AVR  
raxp
10188 / 6571 / 492
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
19.01.2013, 11:34 20
Угу, понятно и без этого. Непонятно, что вы еще пытаетесь сэкономить. Схема нужна не функциональная, а электрическая принципиальная.
0
19.01.2013, 11:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 11:34

Некий фрагмент кода не работает (AVR Studio 4)
Работа в AVR Studio 4: Помогите, какими директивами нужно дополнить этот...

В IAR for AVR не работает интерактивная часть редактора кода
Привет народ, дело такое. Поставил IAR - уж больно мне захотелось операциями...

Перевод 16-ричного кода в символ ASCII
Здравствуйте, форумчане! Не могу разобраться с выводом символа аски:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru