2016-09-28 5 views
0

ATMEL 328pu에서 사용하기 위해 C로 라이브러리를 만들려고합니다. C에서 소스 파일과 헤더 파일을 만들었지 만 라이브러리를 컴파일하려고 할 때 멈추게됩니다. 나는 유형을 포함하는 또 다른 AVR 라이브러리를 필요가 있다고 생각 :ATMEL328 용 c 라이브러리 생성

  • TWDR
  • TWCR에게 ATMEGA328의 I2C 레지스터입니다

합니다. 오류 메시지의 요약 된 버전과 오류 메시지가 참조하는 .cpp 파일의 일부가 아래에 나와 있습니다.

오류 메시지 :

Build: Debug in my_i2c (compiler: GNU GCC Compiler) Code_blocks/my_i2c/my_i2c/my_i2c.cpp|39|error: use of undeclared identifier 'TWCR'| Build failed: 19 error(s), 0 warning(s) (0 minute(s), 0 second(s))

추출 from.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 컴파일러의 기능을 이해하는 정의해야합니까? 그리고 어떻게하면 좋을까요? 제가 다른 도서관을 포함 시켜서 생각한 것입니까?

+0

컴파일러 명령을 게시해야합니다. – LPs

+0

그게 뭔지 모르겠다 – hoboBob

답변

1

선언되지 않은 식별자를 참조 할 수 없으므로 컴파일러에서 의미를 파악할 수 없습니다.

당신은 아마 당신의 라이브러리의 소스 코드에

#include <avr/io.h> 

을 추가해야합니다.

+0

가끔씩 일어나는 것처럼 보이지 않는 시간에 많은 시간을 보내고 싶지 않았다. – hoboBob