Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Чт апр 26, 2018 08:15:59

Подключаю библиотеку для 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

Не понимаю где он хочет, что бы была скобка? :?
Подскажите плз.

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

Чт апр 26, 2018 09:57:26

Причём тут "библиотека для OLED" и код, который Вы сюда выложили ?

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

Чт апр 26, 2018 10:11:11

Причём тут "библиотека для OLED" и код, который Вы сюда выложили ?

OLED работает по I2C.
Это инициализация TWI функций на сколько я понимаю. В Вложении библиотека полностью.
Вложения
SSD1306C.rar
(238.32 KiB) Скачиваний: 266

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

Чт апр 26, 2018 14:01:39

приведите всю ругань компилятора целиком.
в архиве в i2c_master.h зачем-то скобки вокруг unsigned char в прототипе функции. Без них все собирается avr-gcc.

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

Чт апр 26, 2018 14:34:26

[В Вложении библиотека полностью.

Код в архиве отличается от того, что Вы дали в первом посте. Как раз в 8-ой строке. Это чтобы всех запутать? :))

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

Чт апр 26, 2018 18:00:47

[В Вложении библиотека полностью.

Код в архиве отличается от того, что Вы дали в первом посте. Как раз в 8-ой строке. Это чтобы всех запутать? :))


Да, прошу прощения, это мои извращения там были. Не обращайте на эту строчку внимания в вложенном файле. Оригинальный код я привел в первом посте. Компилятор ругается на все конструкции типа:
Код:
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 KiB) Скачиваний: 450

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

Чт апр 26, 2018 18:37:05

uint8_t неопределен на момент включения указанного файла (неза-typedef-ен)

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

Чт апр 26, 2018 20:27:08

Почему у автора это работает? И что нужно сделать, что бы работало в моем случае?

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

Чт апр 26, 2018 21:52:33

Использовать stdint.h

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

Ср май 02, 2018 15:20:51

Использовать stdint.h

Так он заинклюден в main (см. влож. скрин).
Вложения
CVAVR Error I2C- Stdint.h.png
(168.46 KiB) Скачиваний: 589

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

Ср май 02, 2018 19:29:25

Так ошибка же не в main возникает.
Воткните туда куда просит.

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

Чт май 03, 2018 10:30:23

Ну Ок, воткнул в I2C-master. Так еще страшнее (см. влож. скрин)...
Вложения
Error I2C-master.png
(190.93 KiB) Скачиваний: 565

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

Чт май 03, 2018 11:18:21

Ну Ок, воткнул в I2C-master. Так еще страшнее (см. влож. скрин)...

так теперь ругается на файл 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 поможет Вам. Иначе, как Вам помочь

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

Чт май 03, 2018 11:59:16

Подставил в SSD1306.с...
Вложения
Error I2C-master.png
(168.38 KiB) Скачиваний: 345

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

Чт май 03, 2018 12:14:27

Что делает строка
Код:
#define uint8_t

понимаете?

После этой строки, препроцессор всякий раз, когда встретит uint8_t заменит uint8_t на пустую строку. Очевидно, что это не правильно.
Код:
void sendCommand(uint8_t command) {

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