реклама на сайте
подробности

 
 
> Правильное подключение библиотек IAR для AVR
Dele
сообщение Apr 18 2012, 10:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 12-06-10
Пользователь №: 57 898



Добрый день!
Не могу подключить нормально библиотеку для работы с LCD, библиотеку нашел тут http://life.netimperia.com/2010/08/08/hd44780-avr/
Создал в протеусе проект с дисплеем и atmega16 но до заливки прошивки дело так и не дошло...
Сам я только познаю азы программирования под МК. Воспользовался IAR, мне он показался удобным...
Так вот, файлы с архива засунул в C:\Program Files\IAR Systems\Embedded Workbench 6.0\avr\inc конкретно hd44780.c, hd44780.h Но не запускается ничего, выдает ошибки, что ему еще надо?

#include <ioavr.h>
#include <hd44780.h>
#include <intrinsics.h>
#include <delay.h>
#include <stdlib.h>
#include <iom16.h>

void lcd_puts(const char *s)
{
register char c;

while ( (c = *s++) )
{
HD44780_SEND_CHAR©;
}

}

int main(void)
{

hd44780_init();


HD44780_SEND_CURSOR_POS(0, 0);


lcd_puts("Counter");


return 0;
}

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dele
сообщение Apr 21 2012, 21:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 12-06-10
Пользователь №: 57 898



Так же поменял в заголовочном файле дисплея типы unit8_t на unsignet char, добавил некоторые заголовочные файлы типа delay.h и io.h из CVAVR так как их не хватало в IAR
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  led_avr_prot.rar ( 29.94 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 23 2012, 06:12
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Посмотрел на ваш архив. Причина в том, что кто-то закомментировал все содержимое hd44780.c:
CODE
/*    <-------
#include "hd44780.h"

  ......
    // Входим в режим работы и устанавливем направление курсора и сдвиг экрана.
    HD44780_SEND_ENTRY_MODE(HD44780_CONFIG_CURSOR_DIRECTION, HD44780_CONFIG_CURSOR_LCD_SHIFT);

}

*/   <-------------

QUOTE (Dele @ Apr 22 2012, 00:45) *
Так же поменял в заголовочном файле дисплея типы unit8_t на unsignet char,
Глупость. Добавили ненужной писаниниы и ухудшили портируемость.
QUOTE (Dele @ Apr 22 2012, 00:45) *
добавил некоторые заголовочные файлы типа delay.h и io.h из CVAVR так как их не хватало в IAR
Может быть их не зря не хватало? ИАР может не переварить системные заголовочные файлы от CVAVR. Просто потому, что в них могут использоваться какие-то нестандартные расширения компилятора (не говоря уже о том, что CVAVR является компилятором не С, а "языка, похожего на С"). Для задержек в IAR AVR есть встроенная (intrinsic) функция __delay_cycles().


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Dele
сообщение Apr 23 2012, 08:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 12-06-10
Пользователь №: 57 898



Цитата(Сергей Борщ @ Apr 23 2012, 09:12) *
Посмотрел на ваш архив. Причина в том, что кто-то закомментировал все содержимое hd44780.c:
Код
/*    <-------
#include "hd44780.h"

  ......
    // Входим в режим работы и устанавливем направление курсора и сдвиг экрана.
    HD44780_SEND_ENTRY_MODE(HD44780_CONFIG_CURSOR_DIRECTION, HD44780_CONFIG_CURSOR_LCD_SHIFT);

}

*/   <-------------

Глупость. Добавили ненужной писаниниы и ухудшили портируемость.
Может быть их не зря не хватало? ИАР может не переварить системные заголовочные файлы от CVAVR. Просто потому, что в них могут использоваться какие-то нестандартные расширения компилятора (не говоря уже о том, что CVAVR является компилятором не С, а "языка, похожего на С"). Для задержек в IAR AVR есть встроенная (intrinsic) функция __delay_cycles().


unit8_t на unsignet char Поменял потому что IAR вообще не знал что такое unit8_t. Файлы с CVAVR вроде как нормально переварил, не ругался особо, когда закоментировал .с файл, сейчас уже другая проблема, порты как то не так называются судя по всему...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 23 2012, 09:02
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Dele @ Apr 23 2012, 11:44) *
unit8_t на unsignet char Поменял потому что IAR вообще не знал что такое unit8_t.
Знал, как и любой компилятор, поддерживающий стандарт С99. Вероятно автор этих примеров забыл добавить в начало заголовочного файла #include <stdint.h>. Или он добавил, а вы в настройках проекта выбрали использование библиотеки CLIB, а это в IAR такой способ указать поддержку стандарта C89 (в котором такого заголовочного файла еще не было). Чтобы работать в стандарте C99 надо выбрать библиотеку DLIB.
QUOTE (Dele @ Apr 23 2012, 11:44) *
сейчас уже другая проблема, порты как то не так называются судя по всему...
Вероятно в CVAVR есть дополнительные #define для номеров битов, вроде #define PD0 0. Но какой смысл сначала HD44780_CONFIG_D0_PIN превращать из 0 в PD0 при помощи HD44780_PORT_DATA_PIN(HD44780_CONFIG_D0_PIN), а потом обратно в 0 при помощи #define PD0 0? Достаточно было написать
CODE
    /*if(d & (1 << 0)) { c |= (1 << HD44780_PORT_DATA_PIN(HD44780_CONFIG_D0_PIN)); }*/
    if(d & (1 << 0)) { c |= 1 << HD44780_CONFIG_D0_PIN; }

В общем как-то уж очень мутно написана эта библиотека.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dele   Правильное подключение библиотек IAR для AVR   Apr 18 2012, 10:14
- - MrYuran   Цитата(Dele @ Apr 18 2012, 14:14) Так вот...   Apr 18 2012, 10:33
- - Dele   Этот заголовочный файл включил в проект, правой к...   Apr 19 2012, 10:10
|- - Сергей Борщ   QUOTE (Dele @ Apr 19 2012, 13:10) Стало м...   Apr 19 2012, 10:22
- - Dele   Включил, все так же. Видимо библиотека не устраива...   Apr 20 2012, 10:43
|- - Сергей Борщ   QUOTE (Dele @ Apr 20 2012, 13:43) Включил...   Apr 20 2012, 11:13
|- - _Артём_   Цитата(Dele @ Apr 22 2012, 00:45) Так же ...   Apr 21 2012, 23:59
||- - ReAl   Цитата(_Артём_ @ Apr 22 2012, 02:59) 2. Н...   Apr 22 2012, 15:13
||- - _Артём_   Цитата(ReAl @ Apr 22 2012, 18:13) Должно ...   Apr 24 2012, 14:22
- - Dele   Так же все, закинул файлы в общую папку, подключил...   Apr 23 2012, 06:56
- - Dele   Да, походу библиотека непонятная какая то, я вот с...   Apr 23 2012, 09:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 19:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016