본문 바로가기

PIC16F723

(9)
PIC16F723 내부 풀업저항 설정 PIC16F723 내부 풀업저항 설정 PIC16F723/PIC16F724 EVM 보드에서는 P_A7(PB7)이 저항을 통해 스위치로 연결되어 있다. MCU에서 풀업이 필요하다. PIC16F723에는 GPIOB에 내부 풀업저항이 있고 WPUB(WEAK PULL-UP PORTB REGISTER) 레지스터를 통해 설정 가능하다.1일경우 플업이 된다. 여기서 주의 사항은 OPTION_REG 에서 RBPU비트를 0으로 설정해 주어야 풀업이 가능하다. 실제 코드에서는 아래와 같이 정의해 주면 된다.//-----------------------------------------------------------------------------//Switch Driver #define SW1_BIT BIT7 #define..
[mTouch] PIC16F274 Capacitive Touch 테스트 [mTouch] PIC16F274 Capacitive Touch 테스트 MICROCHIP사는 Capacitive Touch Sensing 솔루션으로 mTouch 를 제공하고 있다. PIC16F723은 하드웨어 적으로 8채널의 capacitive sensing module 을 제공하고 PIC16F724는 16채널을 제공한다. CPS0~CPS15 핀을 이용하면 부가적인 하드웨어 필요 없이 터치 센싱이 가능하다. CAPACITIVE SENSING MODULE 초기화 코드 void CapInit(void) { // Initialize for Timer0 time base OPTION = 0b11000010; // Timer0 init ( Prescaler:TMR0, 1:8 ) T0IF = 0; // enable..
[PIC16F723] RF 전송 테스트 - 무선으로 ACD값 그래프 표시 하기 [PIC16F723] RF 전송 테스트 - 무선으로 ACD값 그래프 표시 하기 PIC16F723은 마아크로칩사의 저렴한 저전력 MCU(실제 쇼핑몰에서 600원대에 구매 했다)이다. 저전력으로 구동할 수 있는 어플리케이션으로 RF가 좋은데 915(433)Mhz RF 모듈로 ADC값을 전송하는 테스트를 해 보았다. 테스트 보드는 기존에 다른 용도로 제작되었던 보드인데 핀맵이 호환되므로 PIC16F723 보드를 연결하여 사용이 가능하다. RF모듈 드라이버 코드 //----------------------------------------------------------------------------- #define NRF_PWR_UP BIT6 #define NRF_PWR_HIGH() Sbi(PORTB, NRF..
[PIC16F73] SPI 테스트 [PIC16F73] SPI 테스트 - FOSC/4 (or TCY) - FOSC/16 (or 4 • TCY) - FOSC/64 (or 16 • TCY) - (Timer2 output)/2 data rate of 5 Mbps(at FOSC = 20 MHz). PIC16F723 SPI 블록도 PIC16F723 SPI 레지스터 PIC16F723 SPI초기화 함수 void SPI0_Init(void) { //RC3 pin => SCK output //RC4 pin => SDI input //RC5 pin => SDO output SSPBUF = 0x00; //SSPBUF Clear ADCON1 = 0x06; Cbi(TRISC, (BIT3|BIT5)); Sbi(TRISC, (BIT4)); SSPSTAT = 0; S..
[PIC16F723] Timer0 인터럽트 테스트 [PIC16F723] Timer0 인터럽트 테스트 PIC16F723 타이머 구조 OPTION레지스터를 이용하여 Timer0관련 클럭 설정을 할 수 있다. PIC16F723 타이머 초기화 void InitTimer0(void) { // TMR0 Associate Registers Initial PS0 = 1 // Prescaler 1:4 TMR0 = INTERVAL_1mS; // Initial TMR0 // Interrupt Associate Registers Initial T0IF = 0; //Clear TMR0 Interrupt Flag T0IE = 1; //Enable TMR0 Interrupt GIE = 1; //Enable Global Interrupt } PIC16F723 타이머 인터럽트 핸들러..
[PIC16F723-S EVM] ADC테스트 - TFT LCD에 그래프 표시 [PIC16F723-S EVM] ADC테스트 - TFT LCD에 그래프 표시 PIC16F723은 저렴한 MCU 임에도 8bit ADC가 13채널이 있다. 8bit라 약간 아쉬움이 있지만 VREF도 있고 속도도 빨라 여러가지로 사용가능할것 같다. PIC16F723 ADC 블록도 PIC16F723 ADC 레지스터 PIC16F723 ADC 초기화 함수 //ADC Initialize void AdcInit(void) { // initial A/D channel 0,1 Sbi(TRISA, BIT0); Sbi(ANSELA, BIT0); VCFG1 = 0; //Low Voltage refences = VSS VCFG0 = 0; //High Voltage refences = VDD GODONE = 0; //A/D Co..
[PIC16F723 EVM] UART 테스트 [PIC16F723 EVM] UART 테스트 PIC16F723 UART 블록도 PIC16F723 UART 보레이트 설정 PIC16F723 UART 초기화 함수 // Serial Prot0 Utility Fuction Routine void U0_Init(unsigned char baud) { U0_SetBaud(baud); TRISC6 = 0; // TX Output TRISC7 = 1; // RX Input TXSTA = 0b00000100; // 8bit Transmission, Asynchronous Mode // High Speed, RCSTA = 0b10000000; // Serial Port Enable, 8bit Reception ` TXEN = 1; // TX Enable CREN = 1;..
[PIC16F723] 클럭 설정 - 성능 측정 [PIC16F723] 클럭 설정 - 성능 측정 PIC16F723 은 최대 20Mhz로 동작 가능하고 내부 오실레이터 이용시 16Mhz로 동작한다. 입력 클럭의 설정은 Config레지스터를 이용하여 설정 가능하다. 디폴트는 내부 오실레이터이다. __CONFIG(WDTE_OFF&PLLEN_ON&FOSC_INTOSCCLK&MCLRE_ON); 내부 오실레이터 구조 PIC16F72x 는 내부에 1%정밀도의 오실레이터가 있기 때문에 외부 실레이터 연결할 필요 없이 간단히 사용할 수 있다. 최대 16Mhz까지 가능하고 디폴트 8Mhz로 동작한다. 오실레이터 관련 설정은 OSCCON 레지스터에서 가능하다. void SystemInit(void) { //grobal interrupt disable disable(); /..