|
LCD и IAR, Не могу заставить работать |
|
|
|
May 30 2006, 05:52
|

Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536

|
Раньше писал на CV перешел на IAR. Нашел исходник для работы с LCD HD44780, написан был для ICC, переделал под IAR не могу никак заставить работать. Сначала думал что задержки не работают, они были организованы через for, заменил на стандартные, все-равно никакого эффекта, Тестовая плата и индикатор рабочие, старые прошивки сделанные в CV работают нормально. Проц Мега16, кварц 8 МГц, R/W у индикатора висит на земле, шина 4 бит. индикатор WinStar 1602A Помогите разобраться в чем причина. Исходники прилагаются...
Сообщение отредактировал ILYCHOFF - May 30 2006, 06:07
|
|
|
|
|
 |
Ответов
|
May 30 2006, 07:18
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
Цитата(ILYCHOFF @ May 30 2006, 08:52)  Помогите разобраться в чем причина. Попробуй поковырять это. 4-бит. 1Х16 какой-то самсунговский индикатор, с которым противно было работать. одна строка, а вывод как в две по 8 но не рядом стоящие. ИАР. Работает точно. Это просто упражнения для попробовать. Так что оптимизировать-непаханое поле.
m48.rar ( 3.31 килобайт )
Кол-во скачиваний: 210
|
|
|
|
|
May 30 2006, 07:35
|

Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536

|
Цитата(aleksey_g @ May 30 2006, 11:18)  Цитата(ILYCHOFF @ May 30 2006, 08:52)  Помогите разобраться в чем причина.
Попробуй поковырять это. 4-бит. 1Х16 какой-то самсунговский индикатор, с которым противно было работать. одна строка, а вывод как в две по 8 но не рядом стоящие. ИАР. Работает точно. Это просто упражнения для попробовать. Так что оптимизировать-непаханое поле.
m48.rar ( 3.31 килобайт )
Кол-во скачиваний: 210Спасибо посмотрю.... Вот переписал инициализацию так void lcd_init(void) { delay_ms(50); LCDDDR = 0xF5; LCDPORT = 0x00; delay_us(100); LCDPORT = (DB5 + DB4); LCDPORT |= E; LCDPORT &= ~E; delay_us(100); LCDPORT |= E; LCDPORT &= ~E; delay_us(100); LCDPORT |= E; LCDPORT &= ~E; delay_us(100); LCDPORT = DB5; LCDPORT |= E; LCDPORT &= ~E; delay_us(40); lcd_write_byte(CTRL,0x28); lcd_write_byte(CTRL,0x0c); lcd_write_byte(CTRL,0x01); delay_us(500); lcd_write_byte(CTRL,0x06); delay_us(50); } все равно не работает... Цитата(A_Bolshev @ May 30 2006, 11:17)  Цитата(ILYCHOFF @ May 30 2006, 09:52)  Раньше писал на CV перешел на IAR.
Нашел исходник для работы с LCD HD44780, написан был для ICC, переделал под IAR не могу никак заставить работать.
Помогите разобраться в чем причина.
попробуйте симулировать в VMLAB - там есть остановка по неверным командам на LCD. Вам не кажется, что уже достаточно навязывать всем этот курс. Я помощи просил, а не вашу "щепотку си"...
|
|
|
|
|
May 30 2006, 08:14
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
а если так ? Код void lcd_init(void) { delay_ms(50); LCDDDR = 0xF5; LCDPORT = (DB5 + DB4); delay_us(100); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_ms(5); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_us(100); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_us(100); LCDPORT = DB5; delay_us(100); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_us(40); lcd_write_byte(CTRL,0x28); lcd_write_byte(CTRL,0x0c); lcd_write_byte(CTRL,0x01); delay_us(500); lcd_write_byte(CTRL,0x06); delay_us(50); }
|
|
|
|
|
May 30 2006, 08:25
|

Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536

|
Цитата(&-rey @ May 30 2006, 12:14)  а если так ? Код void lcd_init(void) { delay_ms(50); LCDDDR = 0xF5; LCDPORT = (DB5 + DB4); delay_us(100); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_ms(5); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_us(100); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_us(100); LCDPORT = DB5; delay_us(100); LCDPORT |= E; delay_us(450); LCDPORT &= ~E; delay_us(40); lcd_write_byte(CTRL,0x28); lcd_write_byte(CTRL,0x0c); lcd_write_byte(CTRL,0x01); delay_us(500); lcd_write_byte(CTRL,0x06); delay_us(50); } Все равно не работает, может у кого есть исходник рабочий для 16*2, просто сравнить, и задержки посмотреть уже не знаю на что думать...
|
|
|
|
|
May 30 2006, 11:37
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589

|
Цитата(ILYCHOFF @ May 30 2006, 12:25)  Все равно не работает, может у кого есть исходник рабочий для 16*2, просто сравнить, и задержки посмотреть уже не знаю на что думать...  Попробуйте это: Код #include <avr_macros.h> #include "delay.h"
#define EN PORTD #define EN_Bit 7 #define RS PORTD #define RS_Bit 5
#define D PORTB
#define lcd_delay 15
// Запись в lcd: mode=0 команда, mode=1 данные void lcd_write(unsigned char data, unsigned char mode) { if (mode) {SETBIT(RS,RS_Bit);} else {CLEARBIT(RS,RS_Bit);} SETBIT(EN,EN_Bit); D = (D & 0xF0) | (data >> 4); // старший ниббл delay_us(lcd_delay); CLEARBIT(EN,EN_Bit); delay_us(lcd_delay); D = (D & 0xF0) | (data & 0x0F); // младший ниббл SETBIT(EN,EN_Bit); delay_us(lcd_delay); CLEARBIT(EN,EN_Bit); delay_us(lcd_delay*5); }
void lcd_init(void) { lcd_write(0x33, 0); delay_ms(5); lcd_write(0x32, 0); lcd_write(0x28, 0); // 4 бит, 2 строки lcd_write(0x08, 0); // полное выключение дисплея lcd_write(0x01, 0); delay_ms(5); // очистка дисплея lcd_write(0x06, 0); // сдвиг курсора вправо lcd_write(0x0C, 0); // включение дисплея, мигающий курсор // InitCGram(); } Работает так например: Код lcd_init(); lcd_write('Z', 1); ПС В lcd_init комментарии некорректны. ППС А за delay.h большое спасибо. Еще бы найти что-нибудь чтобы можно было в IAR-е писать PORTD.3 = 1;
--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
|
|
|
|
Сообщений в этой теме
ILYCHOFF LCD и IAR May 30 2006, 05:52 MMP Инициализация вроде так должна быть:
задержка 15 м... May 30 2006, 06:53 ILYCHOFF Цитата(MMP @ May 30 2006, 10:53) Инициали... May 30 2006, 07:09 &-rey согласен с MMP насчет DB4 DB5
вот только насчет за... May 30 2006, 07:11    &-rey Цитата(ILYCHOFF @ May 30 2006, 11:25) Все... May 30 2006, 08:41     ILYCHOFF Цитата(&-rey @ May 30 2006, 12:4... May 30 2006, 08:47      &-rey Цитата(ILYCHOFF @ May 30 2006, 11:47) По ... May 30 2006, 08:56 BVU Цитата(ILYCHOFF @ May 30 2006, 09:52) Ран... May 30 2006, 07:37 ILYCHOFF Задержки реализованы следующим образом
#ifndef D... May 30 2006, 07:46 BVU Посмотрите здесь, может дело прояснится:
http://el... May 30 2006, 09:04 defunct Цитата(ILYCHOFF @ May 30 2006, 11:25) Все... May 30 2006, 11:11 ILYCHOFF А что вам мешает писать
PORTB_Bit1=1;
~PORTB_Bit1... May 30 2006, 11:54 otrog То что нельзя записать так:
КодADCSRA.ADEN = 1;
А ... May 30 2006, 12:09 prottoss Привет всем!
Не вдавался в подробности обс... May 30 2006, 14:16 WHALE А ведь вам A_Bolshev ,нисмотря не на что,неплохой ... May 30 2006, 18:07 ILYCHOFF Всем спасибо за ответы разобрался все заработало к... Jun 1 2006, 06:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|