본문 바로가기

PIC32 - I2C I2C는 Inter-Integrated Circuit의 약자이다. (IIC하면 없어보이니까 I2C라고 한 것 같다.) 이는 다른 말로 TWI라고도 하는데 이 것은 two-wire interface를 뜻한다. 말 그대로 두 개의 선을 이용해서 통신을 한다는 것이다. 클럭과 DATA라인, 포트 이름으로는 SDA와 SCL이 되겠다. 통신 방법은 별 것 없다. 하나의 마스터가(일반적으로) 하나 혹은 여러 개의 슬레이브와 통신을 한다. eeprom의 경우 data를 읽고 쓸테고, 온도 센서의 경우 원하는 Data를 던제 줄 것이다. 자세한 프로토콜은 네이버에 치면 무지 많으니까 나중에 정리 하도록 하고 PIC32에서 초기화를 하고, 실제로 사용하는 소스를 설명한다. 이 소스에서는 24lc04와 bq20z70(스마.. 더보기
PIC32 - GPIO TRIS 니 MASK 이런 것은 잘 모르겠고, 그냥 LED정도 쉽게 깜박이게 하는 방법정도려나. RA1은 PORTA의 1번 비트를 뜻한다. 이를 읽거나 쓰기 위해서는 _RA1이렇게 해도 되고, PORTABits.RA1이렇게 해도 된다. 그 전에 읽으려면 mPORTASetPinsDigitalIn(BIT_1); 이렇게 하고, 출력하려면 mPORTASetPinsDigitalOut(BIT_1); 으로 한다. '레스터스명'bits.'비트명' = 초기값 더 간단히 하려면 _'비트명' = 초기값 으로 하면 쓸 수 있다. 이는 MPLAB에 C32 Suite complier를 사용했을 때의 방법이다. ccs등의 툴은 다른 접근 방법을 갖는다. 아래는 간단한 예제이다. //디지털 핀 IO 초기화 PORTSetPinsDig.. 더보기
PIC32 - Interrupt Interrupt Control Registers INTCON1: Interrupt Control Register1 bit31-17 Reserved bit16 SS0: Single Vector Shadow Register Set Bit ? bit14 FRZ : Freeze in debug exeption Mode bit 1: Debug Exception Mode에서 수행을 멈춘다. 0: Debug Exception Mode에서도 수행을 계속한다. bit13 Reserved bit12 MVEC: Multi Vector Configuration bit 1: 멀티 벡터 인터럽트를 사용 0: 싱글 벡터 인터럽트를 사용 bit11 Reserved bit10-8 TPC: Temporal Proximity Contr.. 더보기
PIC32 - ADC PIC32에는 16개의 10bit분해능을 갖는 ADC 포트가 있다. ADC Block Diagram 이를 사용하기 위해서 초기화를 해주고, ADC변환이 완료 되었을 때 마다 인터럽트 루틴에서 그 값을 update해주는 방식을 사용했다. 현재 로봇에는 6개의 ADC만을 필요로 하기 때문에 AN0-AN5를 사용하고 나머지는 사용하지 않는다. 인터럽트의 priority는 3으로 한다. (높을수록 우선순위) ADC Control Registers ADCCON1: ADC Control Register1 bit31-16 Reserved bit15 ON 1: ADC 를 킨다. 0: ADC 를 끈다. bit14 FRZ : Freeze in debug exeption Mode bit 1: Debug Exception M.. 더보기