Ругается компилятор

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Ругается компилятор

Сообщение dds7sdd »

Подключаю библиотеку для OLED на SSD1306 в CVAVR. Компилятор пишет:"Line 8: '(' expected".
Код:

Код: Выделить всё

#ifndef I2C_MASTER_H
#define I2C_MASTER_H

#define I2C_READ 0x01
#define I2C_WRITE 0x00

void i2c_init(void);
uint8_t i2c_start(uint8_t address);
uint8_t i2c_write(uint8_t data);
uint8_t i2c_read_ack(void);
uint8_t i2c_read_nack(void);
uint8_t i2c_transmit(uint8_t address, uint8_t* data, uint16_t length);
uint8_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length);
uint8_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length);
uint8_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length);
void i2c_stop(void);

#endif // I2C_MASTER_H
Не понимаю где он хочет, что бы была скобка? :?
Подскажите плз.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Ругается компилятор

Сообщение Аlex »

Причём тут "библиотека для OLED" и код, который Вы сюда выложили ?
Реклама
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Ругается компилятор

Сообщение dds7sdd »

[uquote="Аlex",url="/forum/viewtopic.php?p=3363276#p3363276"]Причём тут "библиотека для OLED" и код, который Вы сюда выложили ?[/uquote]
OLED работает по I2C.
Это инициализация TWI функций на сколько я понимаю. В Вложении библиотека полностью.
Вложения
SSD1306C.rar
(238.32 КБ) 285 скачиваний
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: Ругается компилятор

Сообщение arkhnchul »

приведите всю ругань компилятора целиком.
в архиве в i2c_master.h зачем-то скобки вокруг unsigned char в прототипе функции. Без них все собирается avr-gcc.
Реклама
Эиком - электронные компоненты и радиодетали
viiv
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Re: Ругается компилятор

Сообщение viiv »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=3363282#p3363282"][В Вложении библиотека полностью.[/uquote]
Код в архиве отличается от того, что Вы дали в первом посте. Как раз в 8-ой строке. Это чтобы всех запутать? :))
Реклама
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Ругается компилятор

Сообщение dds7sdd »

[uquote="viiv",url="/forum/viewtopic.php?p=3363455#p3363455"][uquote="dds7sdd",url="/forum/viewtopic.php?p=3363282#p3363282"][В Вложении библиотека полностью.[/uquote]
Код в архиве отличается от того, что Вы дали в первом посте. Как раз в 8-ой строке. Это чтобы всех запутать? :))[/uquote]

Да, прошу прощения, это мои извращения там были. Не обращайте на эту строчку внимания в вложенном файле. Оригинальный код я привел в первом посте. Компилятор ругается на все конструкции типа:

Код: Выделить всё

uint8_t i2c_start(uint8_t address);
uint8_t i2c_write(uint8_t data);
uint8_t i2c_read_ack(void);
и т. д.
Если убрать восьмую строчку он начнет точно так же говорить о ожидаемой скобке и про девятую и т. д.
Привожу скрин с руганиной CVAVR.
Вложения
CVAVR Error I2C.png
(94.73 КБ) 468 скачиваний
Реклама
viiv
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Re: Ругается компилятор

Сообщение viiv »

uint8_t неопределен на момент включения указанного файла (неза-typedef-ен)
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Ругается компилятор

Сообщение dds7sdd »

Почему у автора это работает? И что нужно сделать, что бы работало в моем случае?
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Ругается компилятор

Сообщение uk8amk »

Использовать stdint.h
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Ругается компилятор

Сообщение dds7sdd »

[uquote="uk8amk",url="/forum/viewtopic.php?p=3363793#p3363793"]Использовать stdint.h[/uquote]
Так он заинклюден в main (см. влож. скрин).
Вложения
CVAVR Error I2C- Stdint.h.png
(168.46 КБ) 607 скачиваний
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Ругается компилятор

Сообщение uk8amk »

Так ошибка же не в main возникает.
Воткните туда куда просит.
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Ругается компилятор

Сообщение dds7sdd »

Ну Ок, воткнул в I2C-master. Так еще страшнее (см. влож. скрин)...
Вложения
Error I2C-master.png
(190.93 КБ) 581 скачивание
viiv
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Re: Ругается компилятор

Сообщение viiv »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=3367988#p3367988"]Ну Ок, воткнул в I2C-master. Так еще страшнее (см. влож. скрин)...[/uquote]
так теперь ругается на файл ssd1306IIC.c :-)

dds7sdd, в Си раздельная компиляция. т.е. каждый файл исходника (*.с) компилируется независимо от других. Если в ssd1306IIC.c используются нестандарные типы (например, uint16_t, ...), то они должны быть определены в этом файле (ssd1306IIC.c) ДО ИХ ИСПОЛЬЗОВНИЯ. Определены ли эти типы в других файлах-исходниках (main.c, i2c_master.c, ...) в момент компиляции ssd1306IIC.c не играет никакой роли.

PS Не все посмотрел :-) На i2c_master.c тоже ругается. Вы хотите перенести проект gcc под CVAVR? Советы:
1) хотябы минимально почитать книжки по Си
2) исправляйте самую первую ошибку - не смотрите на кучу других. Часто они (другие ошибки) являются следствием тех, которые компилятор выдал ранее. Как только исправили первую ошибку - компилируйте и опять исправляейте самую первую ошибку.

Если уж спрашиваете, то приводите всю информацию. Например, вижу у Вас в проекте *.h файлы (pgmspace.h, io.h ...) - это часть CVAVR (у меня нет CVAVR) или Вы их взяли из avr-libc? Если это не часть CVAVR, то желательно и их привести во вложении. Тогда, возможно, тот у кого есть CVAVR поможет Вам. Иначе, как Вам помочь
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Ругается компилятор

Сообщение dds7sdd »

Подставил в SSD1306.с...
Вложения
Error I2C-master.png
(168.38 КБ) 363 скачивания
viiv
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Re: Ругается компилятор

Сообщение viiv »

Что делает строка

Код: Выделить всё

#define uint8_t
понимаете?

После этой строки, препроцессор всякий раз, когда встретит uint8_t заменит uint8_t на пустую строку. Очевидно, что это не правильно.

Код: Выделить всё

void sendCommand(uint8_t command) {
препроцессор заменит это на

Код: Выделить всё

void sendCommand(command) {
а компилятор предсказуемо выдаст ошибку.
Ответить

Вернуться в «Разные вопросы по МК»