Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 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
LexRoss
Cyber_RAT, спасибо за ответ.
И еще: что подавать на шину данных? Про контроллер ничего не известно. Я пробовал подавать с порта мк tiny2313 все комбинации с небольшой задержкой, ничего не заработало.
Cyber_RAT
а вот что подавать - это надо или даташит искать, или снифить в мобильнике весь обмен и потом разбираться...

ибо все подряд - не прокатит.
SashaGubov
способ поворота можно изменить на 90 градусов? по наибольшей ширине L2F50
МП41
Такое ощущение, что Ваш вопрос из кривого электронного переводчика вышел.
sherr
Подключил LS020 к lpc2148, пока вывожу цветные полосы. Неприятно поразила крайне низкая контрастность.
Как можно ее увеличить? Напряжение питания дисплея 3,3 вольта.
Juras Pr.
Обычно контрастность нормальная, странно. Может в формировании цветов ошибка?
sherr
Я ошибся - не контрастность низкая, а цвета перепутаны -- ffff- белый ; но- 0000 - светло-серый,
а то что должно быть красным,зеленым и синим ( F800,07E0,001F соответственно)--темно синее
и темно-фиолетовое, намного темнее чем 0000. SPI аппаратный, 16 бит , скорости пробовал разные.
Подскажите,где копать...
МП41
Похоже на сдвиг на 1 бит. Посмотрите конфигурацию SPI.
sherr
Но при сдвиге SPI разве прошла бы инициализация ?
Код
void spisw(u16 data)
{      u16 dummy;
    S0SPDR = data;
    while(!(S0SPSR & (1<<SPSR_SPIF)));
    dummy =S0SPDR;
    //delay_us(10);
}

void spiInit(void)
{    
    // setup SCK pin P04
    PINSEL0 &= ~(3<<8);
    PINSEL0 |= 1<<8;
    // setup MISO pin P05
    PINSEL0 &= ~(3<<10);
    PINSEL0 |= 1<<10;
    // setup MOSI pin P06
    PINSEL0 &= ~(3<<12);
    PINSEL0 |= 1<<12;
    // setup SSEL pin P07    for  master  manually  driving
    //PINSEL0 &= ~(3<<14);
    //PINSEL0 |= 1<<14;

    // set maximum SPI rate --  1.2 mhz
    S0SPCCR = 50;
    // set master mode, clock polarity and phase
    S0SPCR = 0x0024; // MASTER, -16bit
}

void spicmd( u16 cmd){  // command  transfer
RSHI;//  command
CSLO;// chip  select
spisw(cmd);
delay_c(5);//  ~0.8  us
CSHI;
//delay_c(3);
}

void spidat( u16 cmd){//  data  transfer
RSLO;// data
CSLO;
spisw(cmd );
delay_c(5);
CSHI;
//delay_c(3);
}


Извиняюсь за отвратные комментарии .
МП41
Да, инициализация не прошла бы. В какой режим конфигурируете экран (8 или 16 бит)?
sherr
В 16 бит; причем попробовал softSPI - результат аналогичный.
Код
void spiss(u16 data)
{     SCK0;if (data & 32768) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 16384) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 8192) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 4096) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 2048) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 1024) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 512) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 256) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 128) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 64) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 32) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 16) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 8) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 4) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 2) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
     SCK0;if (data & 1) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);

    //delay_us(10);
}


В 8-битном режиме пробовал также --- и цвета искажает не меньше .
Qwertty
Цитата(sherr @ Feb 19 2009, 19:55) *
В 16 бит; причем попробовал softSPI - результат аналогичный.

Попробуйте SCK вернуть в 0:
Код
void spiss(u16 data)
{    
     SCK0;if (data & 1) DAT1;else DAT0;delay_c(5);SCK1;delay_c(5);
             SCK0;         // <- добавить
    //delay_us(10);
}
sherr
Не помогло, единственный результат - цвета стали такими же как с аппаратным SPI. Может неисправен сам
дисплей ?
sherr
Похоже дисплей таки неисправен; подключил LPH8836 и цвета нормальные с аппаратным SPI (правда 8 бит).
Всем спасибо a14.gif a14.gif
Juras Pr.
Цитата(sherr @ Feb 19 2009, 20:09) *
Не помогло, единственный результат - цвета стали такими же как с аппаратным SPI. Может неисправен сам
дисплей ?

Неисправность, если она имеется, то странная какая-то smile.gif. У LPH8836 ведь команды совсем другие, поэтому если LPH8836 заработал как надо, то это ещё не доказывает неисправность конкретного LS020.
sherr
Ну естественно команды другие, драйвер я переписал под них...
SashaGubov
гоню поток через USART в 1 мбит ( в реальности меньше), частота кварца - 14,7460 МГц..
LCD_SCK=0;if (data & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
LCD_SCK=0;if (data & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1;
на меге8 й успевало а на меге88 уже нет crying.gif
подскажите как быстрее выводить программно пожалуйста.. может через ассемблер?
SashaGubov
перевел в программный spi, при задании области вывода и после команды lcd_cmd(RAMWR); начинают лезть помехи на екранчике до окончание вывода и комманды LCD_CS=1; в чем глюк?
011119xx
Особенность данного дисплея в том, что он способен принимать данные даже если CS=1. Об этом где-то ранее было сказано. Сам в этом убедился на практике.
SashaGubov
Цитата(011119xx @ Feb 25 2009, 07:22) *
Особенность данного дисплея в том, что он способен принимать данные даже если CS=1. Об этом где-то ранее было сказано. Сам в этом убедился на практике.

так проблема как-раз в том что по екрану ползут помехи пока CS=0 smile3046.gif
SashaGubov
вся проблема была в полярности клока)
BPSNSK
А никто не сталкивался с дисплеем LPH8675-2 от Panasonic EB-X70? Он смахивает на LPH8836, разрешение то же 132х176, правда конец шлейфа у LPH8675-2 не такой, как у LPH8836 (у этого для SPI), а выведены все линии. То есть в трубе используется параллельный интерфейс обмена. Ну в режиме SPI наверно так же можно подключить, если в нём стоит контроллер типа HD667xx. По командам разновидности контроллеров Hitachi совпадают, интересно?
МП41
Судя по молчанию поисковиков... информации нуль.
pteriks
Сил не хватило перечитать всю тему, но похоже на LS020 (LR38826) даташит так и не нашли, а не смотрели на самсунговский S6D0110 ? Я тоже собирась поработать с дисплейчиком S65, но пока на работе нет времени им заниматься, дома ищу инфу по нему, вот и наткнулся на S6D0110 и на хитачевский HD66766R, скажите кто-нибудь с ними разбирался?
МП41
Как видите, и без даташита с LS020 вполне можно работать. cool.gif
pteriks
А проблему с тем что видно прорисовку экрана решили?
Electronik1983
Не, ну народ, вот реально это все не гемор ли? Просто я паял-писал дисплей к контроллеру, сделал портативный осцилл, но дело все остановилось на том, когда компилятор мне сказал, что памяти не хватает у контроллера под мою программу. И видео-поток ваще гемор пустить на такой дисплей, т.к. телефон, как мне кажется работает по какому то другому протоколу, нежели чем был снят каким то челом (немец вроде). А обновление пару раз за секунду - это не айс нихрена.
Извеняюсь за столь критичное отношение к этому, но если кто то со мной не согласен - пишите в личку.
А еще хочу сказать - творите, творите и творите! Это никогда еще никому не мешало.
С уважением, Electronik.
Cyber_RAT
гм..
у меня кадров 12 в секунду на меге32 (без разгона на 16 мгц кварц) получается, причем это перерисовка всего экрана...
А то что у вас программа не влазит в контроллер, так это вообще-то проблема не дисплея, а ваша!!! (или возьмите другой контроллер с большим количеством флеша (озу))
МП41
Надо либо на ассемблере писать программу, либо на нормальном компиляторе. И конечно, оптимально делать алгоритм.
pteriks
У меня тоже где-то 10-12 кадров в секунду вышло на весь экран на 16-й меге (16МГц)(хотя это условно, ведь экран тупо заполнялся покадрово разными цветами, что будет при чтении-выводе картинки я не знаю), сначала на LS020 делал, но при попытке запихать экран в сделанную под его размер оправку видимо повредил его, перестал нормально работать, теперь вот на L2F50 мучу, единственное неудобство по сравнению с LS020, это направление прорисовки только по X, так что пришлось програмно контролировать прорисовку шрифтов вдоль X, а так в принципе работать можно =)
pteriks
Недавно появилось свобордное время, написал прогу для передачи картинки 132x176 с компа в контроллер для вывода на дисплей, передача через виртуальный com порт (на FT232), работает на скорости 2 мегабита в секунду, оказывается экранчик, несмотря на жалобы некоторых, весьма неплохо отображает картинку, раньше недувалось оценить это, ввиду отсутствия контроллера с большим объемом памяти (хотя на мой взгляд, информацию, не относящуюся к коду, рамещать в контроллеере нецелесообразно, но скорось тут похоже критична, попробую найти время поработать с SD картами, возможно удастся рационально решить проблему передачи картинки с карты памяти в дисплей, сейчас мне судить сложно, поскольку с картами памяти не работал, имею только общее представление, но есть одна задумка)
k34Nex
Тоже на днях начал писать свою библиотеку для SD карт. Юзаю Мегу16 + CVAVR. Написал небольшую библиотеку для чтения одного файла с карты с ФАТ16. Читает норм, но когда вешаю дисплей вместе с картой на спи, ничего не работает толком. Дисплей инициализируется, карта нет. Говорили что дисплей даже при поднятом CS принимает данные?.. Может карту на софт спи повесить?
Krik99
Карту на софтовый SPI лутче не вешать, так-как он там двунаправленый. А вот дисплей на софтовый SPI повесить... думаю будет в самый раз. Сам щя хочю пробовать пересадить дисплей на софтовый СПИ, говорят он вроде быстрее апаратного.
PS А вообще идея с SD картой очень неплохая, жаль что в наличие только MMC sad.gif.
Juras Pr.
Цитата(Krik99 @ Apr 3 2009, 23:38) *
...Сам щя хочю пробовать пересадить дисплей на софтовый СПИ, говорят он вроде быстрее апаратного.

Софтовый SPI медленнее аппаратного. На аппаратном SPI можно достичь скорости, равной половине тактовой частоты микроконтроллера, а на софтовом так не получится.
k34Nex
Сори за оффтоп, поможет кто нибудь с программным СПИ ? Нашел исходник под ПИК, но он не работает. Заранее спс.

Сори за оффтоп, поможет кто нибудь с программным СПИ ? Нашел исходник под ПИК, но он не работает. Заранее спс.
Juras Pr.
Цитата(k34Nex @ Apr 4 2009, 20:25) *
Сори за оффтоп, поможет кто нибудь с программным СПИ ? Нашел исходник под ПИК, но он не работает. Заранее спс.

Software SPI Master
AVR320: Software SPI Master
http://avr-asm.tripod.com/avrspi.html
k34Nex
Там код на асме, я его нивкакую не воспринимаю) На Си слуайно нет ни у кого?
Juras Pr.
Цитата(k34Nex @ Apr 4 2009, 20:44) *
Там код на асме, я его нивкакую не воспринимаю) На Си слуайно нет ни у кого?

Software SPI
k34Nex
Спс, нашел, все работает) Смог вывести картинку с флешки на дисплей))
Cyber_RAT
а чем не устраивает 2 устройства на 1 аппаратном SPI?
у меня дисплей и ММС(SD) висят и все нормально... CS-ами вручную дергаю...
Все равно у вас оба девайса одновременно не работают.
Цитата
PS А вообще идея с SD картой очень неплохая, жаль что в наличие только MMC

а какая разница? инициализацию чуть усложнить и поддерживается все подряд и SD и MMC и SDHC...
Nanobyte
Цитата(Cyber_RAT @ Apr 6 2009, 09:01) *
... инициализацию чуть усложнить и поддерживается все подряд и SD и MMC и SDHC...

Да вроде и усложнять не надо, если использовать просто как MMC.
Cyber_RAT
Цитата(Nanobyte @ Apr 6 2009, 12:43) *
Да вроде и усложнять не надо, если использовать просто как MMC.

4 гиговая SD и 2 gb microSD не захотели кушать cmd1, а вот ACMD41 пожалуйста... (sdhc еще и cmd8 хотят).
так что не все новые карты будут ММС
Alex@ndr
Цитата(Alex_1811 @ Nov 18 2008, 09:34) *
Вот моя программа для создания шрифта. Может пригодится. (возможно уже выкладывал)

Не могли бы Вы выложить исходники программы, или добавить возможность созданя бОльших шрифтов(100х100) и разворот на 90градусов?
John Silver
Где то на форуме проскакивала информация о редакторе шрифтов SG Bitmap Font Editor.
Считаю ее незаслуженно обошли вниманием.
Из всех рассмотренных я выбрал именно её.
Там можно сделать шрифт любого размера.
Экспорт с помощью макроса (из-за этого я ее и выбрал, как хошь так и экспортируй).

Офф сайт:
http://armag.wolfram.ru/sgfed.htm
Мой макрос экспорта:
Нажмите для просмотра прикрепленного файлаСканирует пикселы снизу-вверх, слева-направо; байты заполняет целиком, без нулей; последний байт добавляет нулями при необходимости. Т.е. упаковывает (не архивирует).
Он же в двоичном формате (наглядно видно цифры):
Нажмите для просмотра прикрепленного файла
Шрифт цифры 10х30:
Нажмите для просмотра прикрепленного файла
Lexxa
Мысли останавливаются.
Пытаюсь подключить LSD s65 ls020.
Включил по схеме из Using the Siemens S65 – Display.pdf
Контроллер ATMega32.
Среда CodeVisionAVR 1.2.5.8.
За основу взят код для ATMega8 пользователя k34Nex (стр.5х темы)
Перевесил соответственно выводы, внес соответствующие изменения в прогу. Результат нулевой.
Замечу, что выполнение программы останавливается на
void lcd_wrcmd16(ui16 cmd)
{
LCD_CS=0;
LCD_RS=1;
SPDR=(cmd>>8);
while (SPSR.7!=1); // вот тут бесконечный цикл получается
delay_us(5);
SPDR=cmd;
while (SPSR.7!=1);
delay_us(5);
LCD_CS=1;
}

выяснил это морганием на ноге PA0.

Вопрос.
Linker error: global RAM variables size: 2142 bytes is too large - как этот же код компилится на ATMega8

Код:

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.5 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 10.10.2008
Author : F4CG
Company : F4CG
Comments:


Chip type : ATmega32
Program type : Application
Clock frequency : 20,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
char textcolor;
char backcolor;

#include <mega32.h>
#include <spi.h>
#include <fonts.h>
#include <defines.c>
#include <delay.h>
#include <disp.lib>
#include <delay.h>


void putbyte(char byte,char x,char y){
char a,i,c=0b1000000;
for (i=0;i<8;i++){
a=(byte & c);
if (a) {lcd_pset(x,y,textcolor);}
else {lcd_pset(x,y,backcolor);};
c=c/10;
y++;
}
}



void init_avr(void)
{
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=In Func0=In
// State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=T State0=T
PORTB=0x00;
DDRB=0x2C;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0xFF;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 250,000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;
}


void main(void)
{
char f,i;
init_avr();
textcolor = red;
backcolor = white;
LCD_RESET=1;
lcd_init();
fill_screen(red);
lcd_str_fl("HELLO",0,black);
//lcd_fillrect(0, 30, 132, 60,grey);
//lcd_fillrect(0, 60, 132, 90,violet);
//lcd_fillrect(0, 90, 132, 120,brown);
//lcd_fillrect(0, 120, 132, 150,orange);
//lcd_fillrect(0, 150, 132, 176,sky);
PORTA = 0x00;
DDRA = 0x01;
while (1)
{
PORTA.0 = 0;
delay_ms(1000);
PORTA.0 = 1;
delay_ms(1000);
}

}

P.S. Если в ф-ции включить void put_char(char c,u08 font,ui16 color) вместо первого ch=font8x14... поставить ch=font8x8, то компилится.

На экране ничего.
Чё не так делаю. Это первый опыт с LCD.
Cyber_RAT
на какие ноги меги подключены выводы индикатора?
дайте схему чтобы не гадать, а то были люди, которые считали, что аппаратный spi будет с любой ноги меги работать wink.gif и для исходника тег CODE используйте - читабельнее будет
а ругается у вас на ОЗУ а не Flash... ОЗУ у atmega8 1 кб
Lexxa
Проблему сОЗУ победил сохранением констант во флеш.
Исправил начальную инициализацию PORTB и D, зацикливание ушло)
Экран ничего не показывает. Ощущение, что инициализация не прошла, т.к. нет мусора.

Код
/*
PB5 MOSI - LCD_DAT
PB7 SCK - LCD_CLK
PB4 ~SS - LCD_CS
PD4 OC1B - LCD_RESET
PD7 OC2 - LCD_RS
*/

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xF0;

// Port D initialization
// Func7=Out Func6=In Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=T State4=0 State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x90;

// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 3579,545 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;


Может надо как-то ещё включить SPI, типа фьюзы какие нибудь?

Какузнать, что SPI правильно работает?
sasamy
Пара вопросов по lph88 (hd66773) - есть аппаратный spi который может работать в 16-битном режиме с dma, мешается стартовый байт - он нарушает выравнивание на границе слова передаваемого блока, собственно вопросы:
1 если засунуть перед стартовым байтом нулевой байт (для выравнивания) - не сойдет ли сума контроллер ? или он просто проигнорирует его тк ожидает стартовый байт со своим id.
2 можно ли засунуть нулевой байт после выбора регистра перед передачей данных этому регистру ?
это все будет передаваться одним блоком - нет возможности дергать cs - он опустится перед передачей блока и поднимется только после передачи блока.
decipherer
Поосторожнее надо с контроллером, у меня вот так скис LS020. Из-за случайно пропущенной инструкции в контроллер писалась всякая чушь и как результат похоже сдох бустер, а возможно ещё что-то. Теперь инициализируется в 8-битном режиме, белый фон вместо чёрного и прочие радости жизни
Cyber_RAT
Lexxa выложите весь проект, по кускам ничего не понятно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.