Перейти к содержанию

AVR LCD I2C modules, библиотеки на чистом AVR-GCC

добрый день!

 

есть две LCD-библиотеки Arduio, работающие ТАК_КАК_НАДО с модулем I2C_LCD_mjkdz

 

hd44780 / bill perry

NewliquidCrystal / fmalpartida

 

вопрос 1: есть ли у кого "наработки" по переводу этих (одной из двух) библиотек на avr-gcc pure c (на крайняк avr-gcc/c++)?

 

ADD

 

в сети достаточно "вариантов" библиотек на СИ для работы с HD44780, есть даже pfleury_avrlibs (i2cmaster, lcdlibrary, uartlibrary), но все библиотеки дисплея на "обычное" подключение, без I2C, понятно, что как-то можно скрестить i2cmaster и lcdlibrary... но потребуется много всего ... не вариант :о)

 

вопрос 2: нужна библиотек на avr-gcc c прямой работой через I2C модуль, желательно имеющей понятие об MJKDZ, (как пример NewliquidCrystal - имеет конструктор I2C для инициализации и дальше работа с дисплеем, "обычным способом", надеюсь обьяснил понятно)

 

about MJKDZ - это очень специфичный модуль, кто в курсе, тот, надеюсь, понял, кто не в курсе - как говориться, мал клоп, да вонюч :о)

 

итак, можно ссылки, мымсли, комментарии...

 

tag: linux, avr-gcc, ком.строка, makefile, i2c_lcd модуль, NO windows, NO avr-studio/iar/codevision...etc

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы будете смеяться, но "библиотеки ардуино" это и есть чистейший AVR-GCC, вернее, WinAVR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Если хотите слезть с ардуньи, то меняйте и стиль разработки. Вместо поиска библиотеки, надо искать даташит. А потом просто писать по нему программу и всё.

 

2. Выкинуть нахрен этот переходник с I2C и подключиться напрямую к ЖКИ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
итак, можно ссылки, мымсли, комментарии...

В CodeVision эти индикаторы должны поддерживаться. Пробной версии для не слишком сложного проекта вполне хватит. И в этом случае я вообще не вижу смысла в использовании GCC. Ну, или как уже сказали - написать свою реализацию, это не так уж и сложно ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"все готово, шеф, но есть нюансы..."

 

промежуточные результаты, выдает ошибку в avr-studio4:

../lib/arduino_cores/hooks.c:13:6: error: 'void yield()' aliased to undefined symbol '__empty'

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
. . . промежуточные результаты, выдает ошибку в avr-studio4:

../lib/arduino_cores/hooks.c:13:6: error: 'void yield()' aliased to undefined symbol '__empty'

Ну так, ОНО сказало что проблема внутри hooks.c, а именно нет определения для __empty.

(макрос скорее всего, смотрите файл). Сама ф-ия yield() - вызов планировщика для переключения задач.

Обновите софтину на AtmelStudio из последних, может из-за этого (код требует новой версии среды разработки и-или библиотек).

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

static void __empty() {}
void yield(void) __attribute__ ((weak, alias("__empty")));

hooks.c:11:6: error: 'void yield()' aliased to undefined symbol '__empty'

 

avr-studio4 - как есть, обновляться не будет, тулчейны менял... не помогло

как ни будь "адаптировать" под старую версию?

 

спасибо

 

### UPDATE ###

 

AVR 8-bit Toolchain v3.6.1 – Windows 5/14/2018

URL1

 

подсунул этот тулчайн, ошибка та-же...

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код в hooks.c у меня тотже самый. Под AtmelStudio7/avr8-gnu-toolchain-3.6.1.1750. + W10 проект компилируется без ошибок.

Сомневаюсь, что в ардуине обеспечена совместимость снизу вверх, да и сверху вниз тоже.

Берите последнюю версию среды разработки и перетягивайте код под нее, а не наоборот.

ps

"раскройте" макрос в функцию, чтобы без алиаса. Может (вдруг) это будет единственная ошибка.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну да, я уже сам подумываю об этом :о) доберусь, гляну... (хотя там не все так просто, с обьявлением "слабого символа" и "синонима"...)

по поводу старших версий студии - не планируется

а 4я студия исключительно для отработки и факультативного изучения

родная ось - линух

 

в 7й студии как собирал проект? (импорт из arduino/ino или маунальное создание пустого проекта и перекидывание в ручную)

я не смог в 7ю студию добавить расширение arduino_ide_for_atmel_studio_xxx.vsix, ни в ручном ни в каком режиме, в инете предлогают обновить Visual-Studio до последней... ну я забил на это "великое действо", создавал проекты с "нуля")

 

p.s.

ясен пень, дотошно проверил, на 6 и 7-ке собирается нормально...

поэтому склоняюсь к тому, что все таки сама 4ка что-то делает "не то" :о), надо еще "выхлоп" поизучать

 

### UPDATE ###

 

немного подрихтовал, теперь непонятная проблема с линковщиком

выкус лога в приложении

avrstudio4_links2.txt

 

 

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если в h-файлах кроме объявлений содержится код, то такие грабли это не ошибка, а закономерность.

Проверяйте "двойные" и транзитные включения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

некоторая мысль по этому поводу)

 

в h-файлах кроме объявлений содержится код

h & c/cpp файлы по сути это одно и то-же, и, по идее, это не является ошибкой в С (тем более в С++)

 

вполне корректный код

 

//
// main.h
//
void func1(void);
void func2(void) { printf("func2()\n"); }

//
// main.c
//
#include "main.h"
void func1(void) { printf("func1()\n"); }
int  main (void) { printf("main()\n");  }

 

 

проблема-то именно в версии студии (avrstudio4)

 

изучил выхлопы студий, нашел некторые "особенности"

- в 7й студии удобно определяются "ключи" для С и С+

- в 4й студии можно сделать "либо для всех", либо "персонально" для каждого "файла" с/с++

(пока на этом этапе)

 

все имхо и, как обычно, я ни чего не понимаю :laughing:

спасибо

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация