|
|
  |
AVR и Siemens M55 |
|
|
|
Jan 23 2008, 18:02
|

Участник

Группа: Участник
Сообщений: 29
Регистрация: 11-12-07
Из: г.Кемерово
Пользователь №: 33 175

|
Доброго здоровья всем! **** У меня вопрос немного не по теме, может кто работал с Multi Media Card (MMC) **** Не могу разобраться с адресацией, подскажите плиз! Выдал команду CMD17 для чтения блока данных, далее следует 32 бита адреса, а в чем указать его, в блоках (по 512 байт) или в байтах от общего объема карты? И где там младший, а где старший байт адреса?
|
|
|
|
|
Jan 23 2008, 20:18
|

Местный
  
Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476

|
Цитата(Andrew_KMR @ Jan 23 2008, 21:02)  Доброго здоровья всем! **** У меня вопрос немного не по теме, может кто работал с Multi Media Card (MMC) **** Не могу разобраться с адресацией, подскажите плиз! Выдал команду CMD17 для чтения блока данных, далее следует 32 бита адреса, а в чем указать его, в блоках (по 512 байт) или в байтах от общего объема карты? И где там младший, а где старший байт адреса?  Значит сразу надо перейти на секторную работу с карточкой,и сектора умножать на 512.Пролучившийся результат вставлять в 32 битный регистр,с право младший бит.После прочитать 512 байт увеличить сектор на один и умножить на 512 ,вставить и снова считать и тд.
--------------------
|
|
|
|
|
Jan 24 2008, 04:25
|

Участник

Группа: Участник
Сообщений: 29
Регистрация: 11-12-07
Из: г.Кемерово
Пользователь №: 33 175

|
Цитата(yarunt @ Jan 23 2008, 23:18)  Спасибо за ответ! А если я в четырех байтах адреса просто буду плюсовать по 512 тоже самое получится? Вот не знаю как реализовать арифметику... два регистра сложить могу, а тут их три! Ведь младший насколько я понял всегда будет = 0 ------------------------------------------------- ; Константа 0x0200 -> 512 Dec ; 0x00 уходит в самый младший байт адреса ; 0x02 плюсуем к младшему байту адреса ldi temp,0x02 add Low_byte,temp clr temp adc Medium_byte,temp ------------------------------------------------- Два регистра складываю с констанотой
Сообщение отредактировал Andrew_KMR - Jan 24 2008, 04:26
|
|
|
|
|
Jan 24 2008, 07:13
|

Местный
  
Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476

|
Цитата(Andrew_KMR @ Jan 24 2008, 08:25)  Спасибо за ответ! А если я в четырех байтах адреса просто буду плюсовать по 512 тоже самое получится? Вот не знаю как реализовать арифметику... два регистра сложить могу, а тут их три! Ведь младший насколько я понял всегда будет = 0 ------------------------------------------------- ; Константа 0x0200 -> 512 Dec ; 0x00 уходит в самый младший байт адреса ; 0x02 плюсуем к младшему байту адреса ldi temp,0x02 add Low_byte,temp clr temp adc Medium_byte,temp ------------------------------------------------- Два регистра складываю с констанотой Точно, только забыл надо перед каждым прочтением сектора 17 команду повторять. Умножить можно так или 9 раз сдвинуть регистр в лево ,или переставлять 3в4,2в3,1в2,1затереть и раз сдвинуть в лево регистр Плюсовать ло 512байт нет смысла ,когда работеш с большими масивами
Сообщение отредактировал yarunt - Jan 24 2008, 07:23
--------------------
|
|
|
|
|
Jan 24 2008, 18:15
|
Группа: Участник
Сообщений: 11
Регистрация: 16-06-06
Из: г. Тула
Пользователь №: 18 121

|
Цитата(Stalker27 @ Jan 23 2008, 12:14)  А под какой контроллер? LS020B8 - То что написано на приклеенной к дисплею бумажке!
--------------------
С уважением, А. Зуйков
|
|
|
|
|
Jan 25 2008, 10:26
|

Участник

Группа: Участник
Сообщений: 29
Регистрация: 11-12-07
Из: г.Кемерово
Пользователь №: 33 175

|
Спасибо! С адресацией разобрался! Толь вот еще есть Erase Group и Write Protect Group, смутно понимаю для чего они и можно ли писать и читать по их адресам или это служебная область? Еще интересно, кто как высчитывает размер карты и оставшееся свободное место? Про регистр CSD знаю, он у меня почему-то читается в 18 байт, а не в 16... Может у кого есть более подробное описание к MMC или SD картам? Или ссылки какие... Премного благодарен за ответы!
Сообщение отредактировал Andrew_KMR - Jan 25 2008, 10:29
|
|
|
|
|
Jan 25 2008, 10:54
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Andrew_KMR @ Jan 25 2008, 13:26)  Спасибо! С адресацией разобрался! Толь вот еще есть Erase Group и Write Protect Group, смутно понимаю для чего они и можно ли писать и читать по их адресам или это служебная область? Еще интересно, кто как высчитывает размер карты и оставшееся свободное место? Про регистр CSD знаю, он у меня почему-то читается в 18 байт, а не в 16... Может у кого есть более подробное описание к MMC или SD картам? Или ссылки какие... Премного благодарен за ответы!  Работа с MMC|SD описана у elm-chan. Там же есть файловая система, простая быстрая и непрожорливая. Без файловой системы карточка это большая свалка битов/байтов/килобайтов... http://elm-chan.org/fsw/ff/00index_e.html
|
|
|
|
|
Jan 30 2008, 13:35
|
Частый гость
 
Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064

|
смотрю библиотеки выложенные в форуме и во многих написано такое (в процедуре стирания экрана): Код ldi r24,0x09 rcall lcd_wrcmd ldi r24,0x84 rcall lcd_wrcmd ldi r24,0x0B rcall lcd_wrcmd ldi r24,0xB0 rcall lcd_wrcmd //передаём 0xFF 0xB6B1 раз(если кол-во раз равно 0xB580,как по Using_the_Siemens_S65.pdf,экран заполняется не полностью??) однако почему-то выводя фонт 8 на 14 задают х=7 а у=13 а тут задают 132 и 176... Экран очищается полностью - просто нужно 131 и 175 задавать и не слать несколько лишних сот байт. (что тоже занимает пусть немного, но времени при стирании экрана). p.s. может кто подскажет какой-нибудь заоптимизированный на скокрость алгоритм софтварного SPI ?
|
|
|
|
|
Feb 3 2008, 22:30
|

Участник

Группа: Участник
Сообщений: 29
Регистрация: 11-12-07
Из: г.Кемерово
Пользователь №: 33 175

|
Возникла идея! Если нет осцилографа, а нужно посмотреть обмен данными по SPI, использовать MMC как промежуточный буфер. Ведь скорость у MMC до 25МГц! Выдаем команду на запись блока и переключаем карту на изучаемое устройство, после записи 512 байт увидим занятость карты после чего прочтем данные. Правда паузы между посылками не увидим... Как думаете, прокатит такой вариант, скажем для изучения нового дисплея? Чтобы хоть инициализацию выловить.
|
|
|
|
|
Feb 5 2008, 06:35
|
Частый гость
 
Группа: Свой
Сообщений: 162
Регистрация: 7-12-07
Из: Могилев
Пользователь №: 33 064

|
Об этом и написано в даташите на этот контроллер... а если не важно для какого LCD посмотрите на сайте МЭЛТ-а у них примеры инициализации и работы с их ЖКИ есть прямо на сайте. вот например ЖКИ 128х64 точки http://www.gaw.ru/html.cgi/txt/lcd/lcm/mel...f/MT-12864J.htm
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|