Я пытаюсь создать библиотеку на 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, чтобы компилятор понял функции? и как мне это сделать, это как я думал, включив другую библиотеку?