Дисплей от Siemens S65

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

Yellow Tiger Ну я про оптимизацию компилятором и говорил :)
Krik99 Ды проц 55 МГц, AT91SAM7S256 и 72МГц STM32F103RET6 на LPC денег нема =)
Where technology meets enjoyment.
Реклама
Аватара пользователя
Yellow Tiger
Сверлит текстолит когтями
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

neonix писал(а):Ну я про оптимизацию компилятором и говорил :)
Но тогда одинаково получается - что инкремент, что декремент, у CvAvr получается SUBI. :)
А вот борландовский компилятор убирать ненужное в приращении счетчика (i++) "mov axe,i" не умел, и у многих других компиляторов, при использовании постфиксного ин-/де-кремента, предыдущее значение переменной сохранялось в аккумуляторе. 8) С тех пор я привык операции со счетчиками (но не с индексами) делать только префиксными. :)
Реклама
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

WinAVR видать тоже не умеет нормально инкремент делать, приходится делать через одно место :)) Как и куча всяких странных ситуаций когда происходит непонятное падение производительности.
Where technology meets enjoyment.
Аватара пользователя
Yellow Tiger
Сверлит текстолит когтями
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

А, так это все про GCC говорилось... ясно. :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

to neonix AT91SAM7S256 дык зачем такой большой? я вот думаю использовать AT91SAM7S32 или AT91SAM7S64 и какраз для изучения ARM подойдет. :)
Изображение
Реклама
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

При изменениии обьемов Flash растет и количество RAM, это позволяет не так сильно оптимизировать код при изучении ARMов, плюс надо учитывать то что проц 32 разрядный, обьем кода будет больше чем у восьмибитников. Так что имхо лучше взять побольше, темболее цены не так сильно растут при изменении размеров флеши. Если решите брать AT91SAM7S32 берите лучше AT91SAM7S321 у него есть USB и портов больше. Кстати в STM32F103RET6 обьем флеши 512кб и 64кб RAM, плюс флеш быстрее чем у атмеля. Пока он мне больше всех армов нравится, правда архитектура новая у него, и режим thumb2 вместо старых ARM и Thumb режимов у ARM7.
Where technology meets enjoyment.
Реклама
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

neonix писал(а):При изменениии обьемов Flash растет и количество RAM, это позволяет не так сильно оптимизировать код при изучении ARMов, плюс надо учитывать то что проц 32 разрядный, обьем кода будет больше чем у восьмибитников. Так что имхо лучше взять побольше, темболее цены не так сильно растут при изменении размеров флеши. Если решите брать AT91SAM7S32 берите лучше AT91SAM7S321 у него есть USB и портов больше. Кстати в STM32F103RET6 обьем флеши 512кб и 64кб RAM, плюс флеш быстрее чем у атмеля. Пока он мне больше всех армов нравится, правда архитектура новая у него, и режим thumb2 вместо старых ARM и Thumb режимов у ARM7.

Дык в Thumb наборе команд у него должно в два раза меньше памяти хаваться под командный код, ну а разрядность переменных сам задаёшь. Кстати, AT91SAM7S32 действительно сильно "кастрированный" в плане периферии. А никто не интересовался ARM9ми? В большинстве корейских мобилок именно они 320х240 экранами крутят...
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Сообщение neonix »

STM32F103 режим Thumb 2 (чтото среднее между ARM и Thumb режимами ARM7).
Дык ARM9 недорогих , и в паябельных корпусах не встречал как то. У Атмела есть парочку у STM видел и все.
Where technology meets enjoyment.
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Сообщение ELcat »

Всем! Помогите, пожалуйста в глупом вопросе - купил на выходных экран от C65 LPH9135-3 002 0.4mm G6042062 40грн отдал (сдуру перепутал с S65), не могу найтина него даташит. Есть у кого-нибудь описание, коды или лучше не связываться и отпереть на базар обратно?
kirillovroman
Родился
Сообщения: 4
Зарегистрирован: Чт сен 17, 2009 23:56:48
Откуда: Ekaterinburg

Сообщение kirillovroman »

Спасибо за либу Антибиотик. Подключил дисплей с ls020 на борту. батарейка отображжается все остальное каракули. Полностью убираю картинки, пробую напечатать текст выдает одну каракулю и все на этом. причем при перезапусках МК, каждый раз область видимости каракули меняется... В чем может быть дело?
kirillovroman
Родился
Сообщения: 4
Зарегистрирован: Чт сен 17, 2009 23:56:48
Откуда: Ekaterinburg

Сообщение kirillovroman »

все разобрался. надо посылать 8-ми битный цвет текста
kirillovroman
Родился
Сообщения: 4
Зарегистрирован: Чт сен 17, 2009 23:56:48
Откуда: Ekaterinburg

Сообщение kirillovroman »

ELcat писал(а):Всем! Помогите, пожалуйста в глупом вопросе - купил на выходных экран от C65 LPH9135-3 002 0.4mm G6042062 40грн отдал (сдуру перепутал с S65), не могу найтина него даташит. Есть у кого-нибудь описание, коды или лучше не связываться и отпереть на базар обратно?


Может эта ссылка поможет http://serdisplib.sourceforge.net/ser/nokcol_15g10.html
Вы бы фотку дисплея выложили...
kirillovroman
Родился
Сообщения: 4
Зарегистрирован: Чт сен 17, 2009 23:56:48
Откуда: Ekaterinburg

Сообщение kirillovroman »

Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

Решил перевести библиотеку для L2F50 с WINAVR на CVAVR ,вроде совсем разобрался но вот непонятно в коде winavr-оском что делает:
for (i=0; i<9; i++)
{
lcd_dat0(pgm_read_byte(&disctl[i]));
}
вроде все просто при прохождении цикла увеличивает значение его и переходит на следующий челен массива и отправляет эти значения в функцию lcd_dat0, но непонятно что в winavr делает pgm_read_byte.
И в функции вывода массива на дисплей unsigned char bmp_x = pgm_read_word(data++);//Размер по X , непонятно что делает pgm_read_word .
Подскажите как это записать под cvavr больше сложнайстей с переходом не возникло…
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

Нельзя всё знать, достаточно понимать.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

По вашей ссылке нужно пройти регестрацию с одобрение админа=)

Попробал иницилизирвоать без pgm_read_byte тупо из масива выплевыпать в спи , есть результаты но чтото все медлено работает вомного рас ,также есть подтупливания просто задержки которых явно в программе нету...
Поэтому вопрос неснимает так всетоки что такое в winavr pgm_read_byte?
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Man писал(а):...Поэтому вопрос неснимает так всетоки что такое в winavr pgm_read_byte?

pgm_read_byte() возвращает байт, прочитанный из программной памяти по указанному (аргумент ф-и) адресу, pgm_read_word() соответственно возвращает 2 байта.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

вместо pgm_read.... не пишите ничего. При инициализации массива вместо PROGMEM не пишите ничего, перед именем типа модификатор доступа к памяти flash укажите.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Сообщение Man »

С инициилизацией вчера еше разобрался вот шас ,осталась последняя функция :

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

void lcd_bmp(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t *data)
{
 uint16_t bmp_x = pgm_read_word(data++);   //Размер по X
 uint16_t bmp_y = pgm_read_word(data++);    //Размер по Y

  PORTB &= ~_BV(LCD_CS);  // select display
 
  lcd_cmd(SD_CSET);
  lcd_dat0(0x08+x1);  // start is 8, not 0
  lcd_dat0(0x01+(x1 >> 8));
  lcd_dat0(0x08+x2+x1);  // is 00x8B = 0x83+8
  lcd_dat0(0x01+(x2+x1 >> 8));

  lcd_cmd(SD_PSET);
  lcd_dat0(y1);
  lcd_dat0(y2+y1);
 
  lcd_cmd(RAMWR);

 for(uint8_t y = 0; y < bmp_y; y++)         
  for(uint8_t x = 0; x < bmp_x; x++)
   lcd_dat16(pgm_read_word(data++));   //Передача данных в LCD 

  PORTB |= _BV(LCD_CS);  // deselect display   
}

вот непонятно:
uint16_t bmp_x = pgm_read_word(data++); //Размер по X
uint16_t bmp_y = pgm_read_word(data++); //Размер по Y

создаем переменную 16 битную uint16_t bmp_x,присваиваем ей значеине какое ? берем входяшие в функцию значение data и инкрементируем его чтоли?Входное значение для функции берется из масива в winavr это так :
lcd_bmp(24, 8, 83, 159, (uint16_t *) &title);
масив определяется так :
const uint16_t title[] PROGMEM = { 84, 160, 65535, 65535, 65535, 27876, 26081, 19649***(дальше пошло 13440 значений)
}
также lcd_dat16(pgm_read_word(data++));
вызваем функцию lcd_dat16 отправляем в нее значения data++ откуда она их берет какой элемент масива читает... :(
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Man писал(а): непонятно что делает pgm_read_word .

http://www.nongnu.org/avr-libc/user-man ... 0354b3f027
Ответить

Вернуться в «Периферия»