Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR и Siemens M55
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
QuickWitted
Цитата(bodja74 @ Jan 15 2008, 23:36) *
Предлагаю кому не лень и не жалко повыкладывать свои библиотеки и куски кода ,можно будет сделать некий минипроект по этой тематике и выложить на вебстраничку для последователей.


+1

Со схемами если можно...

Могу разместить страничку по этой теме на моём сайте...
Stalker27
Собрал следующий проект http://hobbyelektronik.org/VB/gLCD/S1D15G14/index.htm. Проблема в том, что на экране ни чего не появляется. Возможно ли определить работоспособность дисплея? В чем может быть проблема?
Cyber_RAT
Определить работоспособность дисплея со 100 процентной вероятностью можно только вставив его в заведомо рабочий телефон.

to bodja74. жду с нетерпением... как раз подхожу к стадии своего проекта когда нужно формировать пачку картинок для меню и заставок....
yarunt
Цитата(Stalker27 @ Jan 17 2008, 16:10) *
Собрал следующий проект http://hobbyelektronik.org/VB/gLCD/S1D15G14/index.htm. Проблема в том, что на экране ни чего не появляется. Возможно ли определить работоспособность дисплея? В чем может быть проблема?

Может сам дисплей виноват ,были случаи инвертирования бита соманды.
Если есть мега 8 можно проверить этими хексами.
Подключатся к ней так
CLK-portd1
DATA-portd2
CS-portd3
RESET-portd6
Работает даже на частоте внутреннего генератора 1мгц
На дисплее должны быть 3 полосы основных цветов.
Stalker27
Цитата(yarunt @ Jan 18 2008, 14:04) *
Если есть мега 8 можно проверить этими хексами.

У меня есть ATMega16, нет ли хекса под него? Дисплей куплен в магазине, и проверить я его не могу вставив в телефон. Кстати, может у кого есть исходник для LPH88 под CodeVisionAVR?
yarunt
Цитата(Stalker27 @ Jan 18 2008, 15:18) *
У меня есть ATMega16, нет ли хекса под него? Дисплей куплен в магазине, и проверить я его не могу вставив в телефон. Кстати, может у кого есть исходник для LPH88 под CodeVisionAVR?

Под атмегу16.
Ножки также назначены
Stalker27
Цитата(yarunt @ Jan 18 2008, 15:49) *
Под атмегу16.
Ножки также назначены


А почему не к аппаратному SPI? Быстрей же вроде должно работать. У кого-нибудь есть хоть какой исходник CodeVisionAVR?
NN1317
народ, просвятите...
у меня в данный момент нет возможности измерить, но вопрос меня волнует. сколько жрет подсветка дисплея? и каким максимальным напряжением ее питать? я пробовал 9 вольт, вроде нормально, но скока ей надо действительно?
и еще - кто пользовался микрухами-повышалками напряжения. сколько жрет такая микруха в рабочем состоянии(т.е. когда дисплей подключен)? и при каком примерном напряжении питания микросхемы это измерялось.
SashaGubov
Цитата(NN1317 @ Jan 18 2008, 23:33) *
народ, просвятите...
у меня в данный момент нет возможности измерить, но вопрос меня волнует. сколько жрет подсветка дисплея? и каким максимальным напряжением ее питать? я пробовал 9 вольт, вроде нормально, но скока ей надо действительно?
и еще - кто пользовался микрухами-повышалками напряжения. сколько жрет такая микруха в рабочем состоянии(т.е. когда дисплей подключен)? и при каком примерном напряжении питания микросхемы это измерялось.


только что подключил LM3519 (20мА-само ограничивает, регулеровка по ШИМ) прекрасно работает

ЗЫ: а если не подключать Reset будет дисплейчик работать?
NN1317
а какое входное/выходное напряжение?
SashaGubov
Цитата(NN1317 @ Jan 19 2008, 21:39) *
а какое входное/выходное напряжение?

входное 3.3 , а выходное тестер отказывается мерять, на 50% где-то 15 вольт
NN1317
на 50% чего?!
SashaGubov
скважности шима
NN1317
ясна, спасибо. я просто приглядываюсь к батарее для мелкого девайса который хочу собрать.
yarunt
Цитата(Stalker27 @ Jan 18 2008, 16:30) *
А почему не к аппаратному SPI? Быстрей же вроде должно работать. У кого-нибудь есть хоть какой исходник CodeVisionAVR?

А потому что SPI нужен 9 бит cool.gif
Stalker27
Переделал исходник для дисплеев LPH88 с WinAvr на CodeVisionAVR, но не уверен в правильности. Проверьте пожалуйста у кого есть такой. help.gif
Cyber_RAT
Вроде где-то видел, но не могу вспомнить где...
как сделать чтобы изображение залить в дисплей а потом вывести сразу? (не в синхронизации дело, просто чтобы черный экран - а потом сразу Бац wink.gif ибо некрасиво менюшки рисуются sad.gif)
zaw
Выкладываю свою библиотеку для IAR под МЕГУ 16. в main.h можно поменять тактовую частоту и тип контроллера, SPI аппаратный, схема подключения описана в s65.h после комментария "Разряды управления". Это все работает!
Cyber_RAT
нашел...
1.инициализируем.
2. команду в дисплей 0х00, 0х40 (все черным залито) (если экран у нас белый а текст черный, то 0х00, 0х80 - это зальет все белым)
3. выводим картинку на экран
4. команду в дисплей 0х00, 0х00 (БАЦ wink.gif и картинка на экране)

по крайней мере у меня софтовый SPI и иначе видно как картинка заполняется...
yarunt
Цитата(Cyber_RAT @ Jan 23 2008, 10:38) *
2. команду в дисплей 0х00, 0х40 (все черным залито) (если экран у нас белый а текст черный, то 0х00,

А если предидущую картинку не надо затирать?
Stalker27
Цитата(zaw @ Jan 22 2008, 23:38) *
Выкладываю свою библиотеку для IAR под МЕГУ 16. в main.h можно поменять тактовую частоту и тип контроллера, SPI аппаратный, схема подключения описана в s65.h после комментария "Разряды управления". Это все работает!


А под какой контроллер?
NN1317
2Stalker27: ЫЫЫ. читай внимательнее.
Cyber_RAT
Цитата(yarunt @ Jan 23 2008, 10:51) *
А если предидущую картинку не надо затирать?

ну если не надо предыдущую затирать, то значит обновлять нужно меньше... и прорисуется все быстрее... я когда вывожу несколько цифр так как выше не делаю smile.gif
Stalker27
Цитата(NN1317 @ Jan 23 2008, 12:41) *
2Stalker27: ЫЫЫ. читай внимательнее.


Не микроконтроллер, а контроллер дисплея(LS020, LPH88 или L2F50), в s65.h не указано.
yarunt
Цитата(Cyber_RAT @ Jan 23 2008, 10:38) *
нашел...
1.инициализируем.
2. команду в дисплей 0х00, 0х40 (все черным залито) (если экран у нас белый а текст черный, то 0х00, 0х80 - это зальет все белым)
3. выводим картинку на экран
4. команду в дисплей 0х00, 0х00 (БАЦ wink.gif и картинка на экране)

по крайней мере у меня софтовый SPI и иначе видно как картинка заполняется...

Я так понял,что мы имеем
$0040-очищаем дисплей в чорный
$0080-очищаем дисплей в белый
$0000-получаем засветку экрана ,но я непойму у меня это конец инициализации и загружается один раз. После эту команду отключить уже не могу
Andrew_KMR
Доброго здоровья всем!

**** У меня вопрос немного не по теме, может кто работал с Multi Media Card (MMC) ****

Не могу разобраться с адресацией, подскажите плиз!
Выдал команду CMD17 для чтения блока данных, далее следует 32 бита адреса, а
в чем указать его, в блоках (по 512 байт) или в байтах от общего объема карты?
И где там младший, а где старший байт адреса?

help.gif
yarunt
Цитата(Andrew_KMR @ Jan 23 2008, 21:02) *
Доброго здоровья всем!

**** У меня вопрос немного не по теме, может кто работал с Multi Media Card (MMC) ****

Не могу разобраться с адресацией, подскажите плиз!
Выдал команду CMD17 для чтения блока данных, далее следует 32 бита адреса, а
в чем указать его, в блоках (по 512 байт) или в байтах от общего объема карты?
И где там младший, а где старший байт адреса?

help.gif

Значит сразу надо перейти на секторную работу с карточкой,и сектора умножать на 512.Пролучившийся результат вставлять в 32 битный регистр,с право младший бит.После
прочитать 512 байт увеличить сектор на один и умножить на 512 ,вставить и снова считать и тд.
Andrew_KMR
Цитата(yarunt @ Jan 23 2008, 23:18) *

Спасибо за ответ! a14.gif

А если я в четырех байтах адреса просто буду плюсовать по 512 тоже самое получится?
Вот не знаю как реализовать арифметику...
два регистра сложить могу, а тут их три!
Ведь младший насколько я понял всегда будет = 0
-------------------------------------------------
; Константа 0x0200 -> 512 Dec
; 0x00 уходит в самый младший байт адреса
; 0x02 плюсуем к младшему байту адреса
ldi temp,0x02
add Low_byte,temp
clr temp
adc Medium_byte,temp
-------------------------------------------------
Два регистра складываю с констанотой
Cyber_RAT
я делал вычисление адреса так...
zh:zl - номер сектора на ММС

r16,r17,r18,r19 - адрес
clr r19 - так как кратно 512 - то всегда будет = 0
mov r18,zl
mov r17,zh ;т.е. мы сдвинули уже на 8 т.е. умножили на 256
clr r16
lsl r18 - сдвигом умножаем еще на 2 (256*2)
rol r17
rol r16
получаем в итоге адрес кратный 512.. а работаю с секторами от 1 до N

yarunt: у меня 0х00 0х00 восстанавливает экран... т.е. была картинка, дали 0х00 0х40 - все стало черным, даем 0х00 0х00 - опять та же картинка на экране
yarunt
Цитата(Andrew_KMR @ Jan 24 2008, 08:25) *
Спасибо за ответ! a14.gif

А если я в четырех байтах адреса просто буду плюсовать по 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байт нет смысла ,когда работеш с большими масивами
zaw
Цитата(Stalker27 @ Jan 23 2008, 12:14) *
А под какой контроллер?

LS020B8 - То что написано на приклеенной к дисплею бумажке!
Andrew_KMR
Спасибо!
С адресацией разобрался!
Толь вот еще есть Erase Group и Write Protect Group, смутно понимаю
для чего они и можно ли писать и читать по их адресам или это служебная область?
Еще интересно, кто как высчитывает размер карты и оставшееся свободное место?
Про регистр CSD знаю, он у меня почему-то читается в 18 байт, а не в 16...
Может у кого есть более подробное описание к MMC или SD картам?
Или ссылки какие...
Премного благодарен за ответы!
smile.gif
Qwertty
Цитата(Andrew_KMR @ Jan 25 2008, 13:26) *
Спасибо!
С адресацией разобрался!
Толь вот еще есть Erase Group и Write Protect Group, смутно понимаю
для чего они и можно ли писать и читать по их адресам или это служебная область?
Еще интересно, кто как высчитывает размер карты и оставшееся свободное место?
Про регистр CSD знаю, он у меня почему-то читается в 18 байт, а не в 16...
Может у кого есть более подробное описание к MMC или SD картам?
Или ссылки какие...
Премного благодарен за ответы!
smile.gif

Работа с MMC|SD описана у elm-chan. Там же есть файловая система, простая быстрая и непрожорливая. Без файловой системы карточка это большая свалка битов/байтов/килобайтов...
http://elm-chan.org/fsw/ff/00index_e.html
Cyber_RAT
смотрю библиотеки выложенные в форуме и во многих написано такое (в процедуре стирания экрана):
Код
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... 07.gif
Экран очищается полностью - просто нужно 131 и 175 задавать и не слать несколько лишних сот байт. (что тоже занимает пусть немного, но времени при стирании экрана).
p.s. может кто подскажет какой-нибудь заоптимизированный на скокрость алгоритм софтварного SPI ? help.gif
Зверюга
Господа, а как насчет FPS?
Я пока никаких сложных картинок не выводил на дисплей, а FPS измерял очищая экран. У меня получилось 10.

Работаю с ATmega32 на частоте 16 МГц, SPI настроен так:

SPCR = (1<<SPE)|(1<<MSTR)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);

Причем, когда убираю флаг двойной скорости SPI и когда ставлю его, скорость не меняется. Может что-то с SPI намудрено?

Кто до скольки разгонял?
Andrew_KMR
Возникла идея!
Если нет осцилографа, а нужно посмотреть обмен данными по SPI, использовать MMC
как промежуточный буфер. Ведь скорость у MMC до 25МГц! smile.gif
Выдаем команду на запись блока и переключаем карту на изучаемое устройство, после
записи 512 байт увидим занятость карты после чего прочтем данные.
Правда паузы между посылками не увидим...
Как думаете, прокатит такой вариант, скажем для изучения нового дисплея?
Чтобы хоть инициализацию выловить.
InvisibleFed
Вопрос по LCD (хоть и не сименс). Заметил, что многие современные телефоны то Nokia имеют LCD с почти одинаковым интерфейсом (не SPI). Причем это не зависит от разрешения и количества цветов. Вот, например.
Дана распиновка, а описание интерфейса я так и не нашел. Точно такой же интерфейс используется в более современных N71, N73, N93 с 240x320 TFT, и еще в куче нокий. Что за зверь? С чем его едят? Найти доку на оглашенный там Epson тоже не удалось.
Cyber_RAT
Судя по картинке обыкновенный паралельный интерфейс (8 линий данных, выбор команда/данные, сброс, чтение/запись и тд), а вот что там за команды должны бегать - знает производитель этого контроллера и спецы из НОКИЯ (и делиться обычно никто не хочет этой информацией).
Поэтому либо искать по инету - может где найдется даташит, или цеплять снифер на дисплей в телефоне и разбираться.
InvisibleFed
Хорошо, коды команд я допустим не знаю, но сам принцип обмена? когда подавать команды, когда данные? Пример есть может от известного LCD?
Cyber_RAT
Об этом и написано в даташите на этот контроллер... а если не важно для какого LCD посмотрите на сайте МЭЛТ-а у них примеры инициализации и работы с их ЖКИ есть прямо на сайте.
вот например ЖКИ 128х64 точки
http://www.gaw.ru/html.cgi/txt/lcd/lcm/mel...f/MT-12864J.htm
Qwertty
Вообще из разъема можно очень много узнать. В этом конкретном случае имеем 8-ми биную шину, вход выбора соманды/данные (0-команды, 1 - данные), и два строба - для записи и для чтения.
yarunt
Народ, кто знает относительно дешовый но более крупный дисплей ,с известным протоколом инициализации
InvisibleFed
Сегодня притарил с убитый Siemens C75. Предварительно глянул сервис-мануал на него - сигналы пуля в пулю как у S65. Не ясно че конкретно за контроллер - на нем есть только маркировка "M 5 39 01333 D 031A". Внешне очень похож на три рассматриваемых дисплея от S65, но другой (другое расположение элементов на гибкой плате, контакты по середине). Кто пытал такого? Сам скоро тоже займусь.
Nanobyte
Цитата(yarunt @ Feb 8 2008, 13:03) *
Народ, кто знает относительно дешовый но более крупный дисплей ,с известным протоколом инициализации

Может, этот подойдёт:
http://www.qsl.net/dk7nt/lcd7650/lcd7650index.html
yarunt
Цитата(Nanobyte @ Feb 8 2008, 16:30) *
Может, этот подойдёт:
http://www.qsl.net/dk7nt/lcd7650/lcd7650index.html

Этот на 5 мм шире ls020. Мне бы раза в два крупнее
Nanobyte
Цитата(yarunt @ Feb 8 2008, 22:33) *
Этот на 5 мм шире ls020. Мне бы раза в два крупнее

Может, один из этих подойдёт:
http://www.tdmegalit.ru/monitors.php
Cyber_RAT
bodja74:
Осмелюсь еще одну вещь попросить от вашего конвертера.
если картинку выводить на повернутый индикатор (176х132), и в конвертере тоже так ее преобразовывать, то картинка выводится снизу вверх...
т.е. исходная
1111111111
2222222222
3333333333
4444444444
................


а на индикаторе
..............
4444444444
3333333333
2222222222
1111111111
sad.gif т.е. или конвертить под 132 на 176 и выводить по другому, или выводить наоборот начиная с последней строки картинки, а это лишние телодвижения контроллера. И если не сложно такую вещь в бинарничек (может кому полезно будет) добивать картинку до 512 байтной кратности (для записи на ММС блока картинок, чтобы оперировать секторами) и еще добавить сохранение картинок в один файл последовательным массивом - одна за другой.
p.s. и самая раздражающая вещь - по умолчанию стоит bmp - и хоть ты тресни. При открытии новой картинки приходится выбирать каждый раз если они не в bmp... может лучше сразу фильр на bmp, jpg, gif (и возможность потом выбрать уже конкретно то что надо?)
Andrew_KMR
Цитата(bodja74 @ Jan 15 2008, 20:36) *


Здравствуйте!
Как у Вас обстоят дела с конвертером?

Я тут мастерю SPI-сниффер на двух 74HC595A, для чтения до 16 бит данных.
Контроллер Mega128, в качестве буфера использую ОЗУ контроллера 4кБ, кварц 20 МГц.
Если у кого имеются наработки в данном направлении буду рад пообщаться! smile.gif
Cyber_RAT
на немецком форуме появилась последовательность команд для шутдауна индикатора ls020xxxx
на http://brne.narod.ru/siemens-s65.html - стартовая (расписана по регистрам, и powerOFF) только пока не проверял. (тоже для ls020)
bodja74
Цитата(Cyber_RAT @ Feb 18 2008, 23:18) *
bodja74:
Осмелюсь еще одну вещь попросить от вашего конвертера.
если картинку выводить на повернутый индикатор (176х132), и в конвертере тоже так ее преобразовывать, то картинка выводится снизу вверх...
т.е. исходная

У меня считывание с верхней левой точки вправо и по строкам вниз.Если перевернутый экран то или править прогу для МК или переворачивать картинку в редакторе,сохранять и потом через конвертор.
Пока так ,потом может сканирование снизу вверх.

Цитата
может лучше сразу фильр на bmp, jpg, gif (и возможность потом выбрать уже конкретно то что надо?)

Да ,попрравим.

По поводу памяти думаю сделать програмульку типа менеджера ,чтобы собирать картинки в один файл бинарника ну + еще пару служебных байт .Но пока ориентируюсь на 25F2048 и 25F4096 (последнюю пока купить не могу) ,загрузчики для этих микрух я уже выкладывал.

Цитата
Я тут мастерю SPI-сниффер на двух 74HC595A, для чтения до 16 бит данных.
Контроллер Mega128, в качестве буфера использую ОЗУ контроллера 4кБ, кварц 20 МГц.
Если у кого имеются наработки в данном направлении буду рад пообщаться!


Похоже у этого экрана вывод данных идет двухстороний ,тоесть в обе стороны как в МК некоторых семейств.Так что ,здесь нужно будет еще определяться в какую сторону бегут данные.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.