c создание библиотеки для ATMEL328

Я пытаюсь создать библиотеку на C для использования в ATMEL 328pu. Я сделал исходный код и файлы заголовков на C, но при попытке скомпилировать библиотеку они не застревают. Я думаю, мне нужна другая библиотека AVR, содержащая типы:

  • ТВДР
  • ТВКР

Какие регистры i2c в ATMEGA328. Ниже можно увидеть сокращенную версию сообщения об ошибке, за которой следует часть файла .cpp, на которую также ссылается сообщение об ошибке.

Сообщение об ошибке:

Сборка: отладка в my_i2c (компилятор: компилятор GNU GCC) Code_blocks/my_i2c/my_i2c/my_i2c.cpp|39|ошибка: использование необъявленного идентификатора 'TWCR'| Ошибка сборки: 19 ошибок, 0 предупреждений (0 минут, 0 секунд))

Выдержка из файла .cpp:

#include "my_i2c.h"

/////////////////////WRITE BIT////////////////////
void my_i2c :: i2cWriteBit (uint8_t i2cAdd, uint8_t i2cReg, uint8_t i2cBit, bool i2cBool) {
uint8_t writeBuff;
writeBuff = i2cRead(i2cAdd, i2cReg); //read uint8_t
i2cBool == true ? writeBuff |= 1 << i2cBit : writeBuff &= ~(1 << i2cBit);
i2cWrite (i2cAdd, i2cReg, writeBuff);
}


/////////////////////WRITE uint8_t////////////////////
void my_i2c :: i2cWrite (uint8_t i2cAdd, uint8_t i2cReg, uint8_t i2cData) {
/////START CONDITION////
TWCR = 0b10100100; //(TWINT)(TWSTA)(TWEN) - Set START condition
while (!(TWCR & 0b10000000)) { //Wait for TWI to set TWINT
}

Нужно ли мне определять, что такое TWCR и TWDR, чтобы компилятор понял функции? и как мне это сделать, это как я думал, включив другую библиотеку?


person hoboBob    schedule 28.09.2016    source источник
comment
Вы должны опубликовать команду компилятора.   -  person LPs    schedule 28.09.2016
comment
я не знаю что это такое   -  person hoboBob    schedule 28.09.2016


Ответы (1)


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

Вы, вероятно, должны добавить

#include <avr/io.h>

к исходному коду вашей библиотеки.

person unwind    schedule 28.09.2016
comment
Верхний человек, спасибо, я не хотел тратить часы на неправильную дорожку, как это иногда случается. - person hoboBob; 28.09.2016