Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR LCD I2C modules, библиотеки на чистом AVR-GCC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
sunjob
добрый день!

есть две 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
MrYuran
Вы будете смеяться, но "библиотеки ардуино" это и есть чистейший AVR-GCC, вернее, WinAVR
VladislavS
1. Если хотите слезть с ардуньи, то меняйте и стиль разработки. Вместо поиска библиотеки, надо искать даташит. А потом просто писать по нему программу и всё.

2. Выкинуть нахрен этот переходник с I2C и подключиться напрямую к ЖКИ.
kovigor
Цитата(sunjob @ Jun 1 2018, 13:08) *
итак, можно ссылки, мымсли, комментарии...

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

промежуточные результаты, выдает ошибку в avr-studio4:
Код
../lib/arduino_cores/hooks.c:13:6: error: 'void yield()' aliased to undefined symbol '__empty'
k155la3
Цитата(sunjob @ Jun 3 2018, 13:36) *
. . . промежуточные результаты, выдает ошибку в avr-studio4:
Код
../lib/arduino_cores/hooks.c:13:6: error: 'void yield()' aliased to undefined symbol '__empty'

Ну так, ОНО сказало что проблема внутри hooks.c, а именно нет определения для __empty.
(макрос скорее всего, смотрите файл). Сама ф-ия yield() - вызов планировщика для переключения задач.
Обновите софтину на AtmelStudio из последних, может из-за этого (код требует новой версии среды разработки и-или библиотек).


sunjob
Код
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

подсунул этот тулчайн, ошибка та-же...
k155la3
Код в hooks.c у меня тотже самый. Под AtmelStudio7/avr8-gnu-toolchain-3.6.1.1750. + W10 проект компилируется без ошибок.
Сомневаюсь, что в ардуине обеспечена совместимость снизу вверх, да и сверху вниз тоже.
Берите последнюю версию среды разработки и перетягивайте код под нее, а не наоборот.
ps
"раскройте" макрос в функцию, чтобы без алиаса. Может (вдруг) это будет единственная ошибка.
sunjob
ну да, я уже сам подумываю об этом :о) доберусь, гляну... (хотя там не все так просто, с обьявлением "слабого символа" и "синонима"...)
по поводу старших версий студии - не планируется
а 4я студия исключительно для отработки и факультативного изучения
родная ось - линух

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

p.s.
ясен пень, дотошно проверил, на 6 и 7-ке собирается нормально...
поэтому склоняюсь к тому, что все таки сама 4ка что-то делает "не то" :о), надо еще "выхлоп" поизучать

### UPDATE ###

немного подрихтовал, теперь непонятная проблема с линковщиком
выкус лога в приложении
Нажмите для просмотра прикрепленного файла

k155la3
Если в h-файлах кроме объявлений содержится код, то такие грабли это не ошибка, а закономерность.
Проверяйте "двойные" и транзитные включения.
sunjob
некоторая мысль по этому поводу)

Цитата
в 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.gif
спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.