개발자/Algorithm
I2C 2 byte unsigned char pointer의 데이터를 unsigned integer로 변환
지구빵집
2014. 3. 25. 17:56
반응형
아래 코드는 I2C unsinged int 값을 2 byte unsigned char로 변환하여 나눠서 저장. address pointer=하위바이트,
* address pointer+1=상위바이트 순으로 저장하는 코드 역으로 작업하는 코드는 그 아래~
주석 참고하시고, Atmega 2560에서 사용하는 코드입니다.
/**
* I2C unsinged int 값을 2 byte unsigned char로 변환하여 나눠서 저장. address pointer=하위바이트,
* address pointer+1=상위바이트 순으로 저장. * @param integer unsigned int, 변환할 정수값 * @param pchar unsigned char *, 변환하여 return하는 문자열 포인터 * @return */ void Int2Char(unsigned int integer, unsigned char *pchar) { *pchar = (unsigned char) ((integer>>8)&0xFF); *(pchar+1) = (unsigned char) (integer&0xFF); return; } void IntToChar(unsigned int integer, unsigned char *pchar, unsigned char pc_opt) { if (pc_opt) { *pchar = (unsigned char) ((integer>>8)&0xFF); *(pchar+1) = (unsigned char) (integer&0xFF); } else { *(pchar+1) = (unsigned char) ((integer>>8)&0xFF); *pchar = (unsigned char) (integer&0xFF); } } /** * I2C 2 byte unsigned char pointer의 데이터를 unsigned integer로 변환 * @param pchar unsigned char *, 변환할 문자열 포인터 * @return unsigned int, 변환하여 return하는 정수값 */ unsigned int Char2Int(unsigned char *pchar) { /* unsigned int lui_temp; lui_temp = ((unsigned int )*(pchar+1)<<8)+ *(pchar); return lui_temp; */ return ((((unsigned int)*(pchar))<<8)+ *(pchar + 1)); } unsigned int CharToInt(unsigned char *pchar, unsigned char pc_opt) { unsigned int lui_temp; if (pc_opt) { lui_temp = ((unsigned int )*(pchar)<<8)+ *(pchar + 1); } else { lui_temp = ((unsigned int )*(pchar+1)<<8)+ *(pchar); } return lui_temp; }
반응형