본문 바로가기

로봇 만들기 - AVR

AVRGCC(WINAVR) 에서 PORT 한 핀씩 제어하기

매우간단한 문제인데 삽질을 심하게 해서 적어둔다.

난 WINAVR 20080610 버전을 설치해두었다.

보통 PORT에서 한핀을 제어하기 위해서

PORTC = PORTC & 0x01; 이런식의 구문을 사용하는 경우가 많다.

그런데 전혀 제어가 되지 않아서 한참 보다가...

avr-libc 문서를 보니..

원래 예전에는 sbi - Set Bit Instruction, cbi - Clear Bit ...  이런 명령어가 비트별로 제어하는 명령어가 있었는데
지금은 없어졌단다.


사용자 삽입 이미지


결론은 PORTC |= _BV(0);        //PORTC의 0번 비트를 셋.
          PORTC &= ~_BV(0);     //PORTC의 0번 비트를 클리어.

이런식으로 써야 한다는 것.

WINAVR 혹은 AVRGCC는 공짜로 좋은것임에 틀림없지만 뭔가 너무 변화가 많은듯....