Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR и LCD с контроллером HD4478
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
vashurin
help.gif

Привет всем решил прибегнуть на этот раз к помощи инета в решении проблемы.
суть такова.

есть у меня проект написанный на CVAR , я уже исчерпал доступные мне возможности этого ПО.
и прешил перейти на IAR.

все хорошо но вот в IAR нет библиотеки для ЖКИ.
поиски в интернете дали мне прикрепленный файл к этому сообщению. Я уверен что собравшиеся сдесь люди могут мне помочь.Нажмите для просмотра прикрепленного файла
msalov
А в чём собственно вопрос?
vashurin
Первое что меня интересует.

Можно-ли использовать эти библиотеки в ИАР-е ?

как сделал я:
1. создал папку LCD в папке проекта(чтоб не засорять корневую иара)
2.код

#include <iom8.h>
#include "LCD\LCD.HD4478.Driver.c"

int main()
{
LCD_Init ();
return 0;
}

3. в файле stdafx.h мнеяю на библиотеку своего камня #include <iom8.h>

4. прикомпиляции выдает
Fatal Error[Pe005]: could not open source file "systime.h" F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 10

это означат что не может чтото найти - ищу я , нахожу в интернете.
кладу в папку LCD.

5. выдает кучу ошибок.
Building configuration: M8_GEN_LCD_IAR - Debug
Updating build tree...
main.cpp
Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\systime.h 1
Error[Pe020]: identifier "PD7" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 198
Error[Pe020]: identifier "g_Buffer" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 201
Error[Pe020]: identifier "LCD_Clear" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 216
Error[Pe020]: identifier "DDRA" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 235
Error[Pe020]: identifier "PD5" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 235
Error[Pe020]: identifier "PORTA" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 259
Error[Pe020]: identifier "PD6" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 260
Error[Pe020]: identifier "PD6" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 282
Error[Pe020]: identifier "PINA" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 284
Error[Pe020]: identifier "PD4" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 314
Error[Pe020]: identifier "DDRA" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 315
Error[Pe020]: identifier "PD5" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 315
Error[Pe020]: identifier "PD4" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 360
Error[Pe020]: identifier "PD4" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 373

Total number of errors: 14
Total number of warnings: 1


6. я не смог справиться с

Error[Pe020]: identifier "g_Buffer" is undefined F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\LCD.HD4478.Driver.c 201



может мне пойти ..... другим путем ????????

может есть у кого то
готовое решение моей проблемы, просто не хочется изобретать велосипеД.
msalov
а не думали обратиться за разьяснениями к автору библиотеки?
возможно это неполная версия библиотеки.
vashurin
хотелось бы самому понять.
как приспособить это дело к иару
GarikBaza
А я б поменял имя файла, точки смущают
vashurin
там с точками все нормально.
но учту ща перепишу. и попробую


нет эфекта
MrYuran
Для начала, я думаю, надо определить порты и пины, к которым подключен ваш индикатор и на которые ругается ИАР.
А также буфер g_Buffer
Вообще-то исходники смотрели?
Вроде бы ничего мудрёного...
IgorKossak
Цитата(MrYuran @ Apr 8 2008, 15:27) *
Для начала, я думаю, надо определить порты и пины, к которым подключен ваш индикатор и на которые ругается ИАР.

А именно Project->Options->General Options->System->Enable bit definitions in I/O include files.
vashurin
да порты определил,

я не пойму для чего g_Buffer
в исходниках его нет в инициализации

теперь понятно
ща попробую
IgorKossak
Цитата(vashurin @ Apr 8 2008, 15:39) *
я не пойму для чего g_Buffer
в исходниках его нет в инициализации

Ну так определите его.
vashurin
Описание шин управления и данных между МП и ЖКИ

в файле есть такая строка там я все и определял

определяю

int g_Buffer[33];


Error[Pe153]: expression must have class type F:\_IAR_Project\M8_GEN_LCD_IAR\LCD\HD4478.c 202


не пойму что внем храниться

что это за тип ??

попытка закоментировать все места где используется g_Buffer

выдает

Building configuration: M8_GEN_LCD_IAR - Debug
Updating build tree...
main.cpp
Linking

Error[e12]: Unable to open file 'D:\Program Files\IAR Systems\Embedded Workbench 4.0 Evaluation\avr\LIB\DLIB\
dlAVR-1s-ec_mul-f.r90'

Total number of errors: 1
Total number of warnings: 0
MrYuran
Судя вот по этому
g_Buffer[1].Address = LCD_ROW2_START;
g_Buffer - это массив структур, а вот что за структуры, надо разбираться...

По-моему, можно его просто выкинуть, а ИАР ругается совсем на другое, библиотеку какую-то по ходу найти не могет
msalov
Цитата(MrYuran @ Apr 8 2008, 16:29) *
Судя вот по этому
g_Buffer[1].Address = LCD_ROW2_START;
g_Buffer - это массив структур, а вот что за структуры, надо разбираться...

Судя по этому, эта структура содежит адрес начала строки и скорее всего саму строку, но для полной уверености:
Цитата(gotty @ Apr 8 2008, 15:05) *
а не думали обратиться за разьяснениями к автору библиотеки?
возможно это неполная версия библиотеки.
vashurin
спасибо всем кто принимал сдесь участие,
перелопатил форум и нашел там подобную тему.

вопрос мой не закрыт.

но этот форум можно удалить,
сдесь нет ни чего полезного.
prottoss
Только седня:-) удалось прочитать корреспонденцию, потому извиняйте за задержку. Разъяснения:

1. g_Buffer - не нужен, это из основной программы. Вообще он служит для обновления данных в дисплее синхронно по прерыванию.



2. LCD_Clear() - и ежу понятно зачем нужна. Можно либо выкинуть, либо написать свою - текста нет, сами понимаете из за того же g_Buffer -а.



3. #include "systime.h" можно выкинуть - это хедер системного времени устройства. Задержки делались именно через системное время. Но так как выложил в сеть, сделал задержки средствами компилятора через __delay_cycles(...).



4. Для того, чтобы компилятор не ругался на макросы типа:

Error[Pe020]: identifier "DDRD" is undefined ....HD4478.c 176 надо подключить хедер ioavr.h.

Кстати, советую включать его во все файлы, работающие с переферией МК. ТОгда не надо будет подключать в каждом файле хедер конкретного МК, а достаточно будет определить МК через опции проекта.
Roger
Сегодня целый день пробывал запустить LCD (FDCC 1602L) c использованием этой библиотеки.
Получилось запусить только так...
Код
mcu_set_io();
    
    delay_ms(50);
    LCD_RQCMD();
    LCD_Bus_Write(0x20);
    delay_ms(5);
    LCD_Bus_Write(0x20);
    LCD_Bus_Write(0x80);
    delay_ms(5);
    LCD_Bus_Write(0x00);
    LCD_Bus_Write(0xC0);
    delay_ms(5);
    LCD_Bus_Write(0x00);
    LCD_Bus_Write(0x60);
    delay_ms(5);
    LCD_RQDATA();
    LCD_Bus_Write(0x30);
    LCD_Bus_Write(0x50);

Код
void LCD_Bus_Write(UCHAR data)
{    
  LCD_RQWR();
  UCHAR temp;
  temp = data & 0xf0;        
  LCD_PORTDATA &= 0x0f;    
  LCD_PORTDATA |= temp;    
  LCD_STARTSTB();     
  NOP();            
  LCD_ENDSTB();     

/*    SWAP(data);        
    
    temp = data & 0xf0;    
    LCD_PORTDATA &= 0x0f;    
    LCD_PORTDATA |= temp;    
    LCD_STARTSTB();    
    NOP();            
    LCD_ENDSTB();     
*/

}


Т.е. дисплей запускается если на него подавать сначала старшую тетраду, потом отдельно командой младушю тетраду, а так чтобы использовать закоментированный код, не получается....
Код
    SWAP(data);        
    temp = data & 0xf0;    
    LCD_PORTDATA &= 0x0f;    
    LCD_PORTDATA |= temp;    
    LCD_STARTSTB();    
    NOP();            
    LCD_ENDSTB();


Народ подскажите в чем может быть трабла. Однозначно что в выводе младшей тетрады.... Все уже проверил неоднократно...
LCD весит на PORTC
RS -> PC0
RD/RW -> PC1
E -> PC2
DW4..DW7 -> PC4..PC7

Тестировал как в Proteus так и на железке...
Roger
Проблема была в правильности задержек...

Единственно пока не удалось разобратся с проверкой на готовность LCD..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.