본문 바로가기

[Microchip]

(132)
[PIC16F150x EVM]TIMER 인터럽트 테스트 [PIC16F150x EVM]TIMER 인터럽트 테스트 PIC16F1509 에는 3개의 타이머/카운터가 있다. 타이머 입력소스는 시스템클럭의 1/4 또는 T0CKI핀 으로 입력 받을 수 있다. PIC16F1509 타이머 초기화 함수 void InitTimer0(void) { // TMR0 Associate Registers Initial TMR0CS = 0; // Timer0 CLK Source설정 -> FOSC/4 PSA = 0; //Prescaler 사용여부 설정(사용) PS0 = 0; // Prescaler 1:4 PS1 = 1; // Prescaler 1:16 PS1 = 0; // Prescaler 1:256 TMR0 = INTERVAL_1mS; // Initial TMR0 //타이머 인터럽트 레..
[PIC16F1509] FVR 테스트 - 레퍼런스 입력 없이 정밀한 전압 측정하기 [PIC16F1509] FVR 테스트 - 레퍼런스 입력 없이 정밀한 전압 측정하기 PIC16F1509를 사용하다 한가지 문제점이 발생했다. ADC채널이 부족해서 Vref핀을 사용할 수 없는 상황인데 정확한 레퍼런스 측정이 필요한 상황이다. 데이터시트를 찾아보니 FVR이 있다. 이를 이용하면 가능하지 않을까... PIC16F1508 에는 FVR(FIXED VOLTAGE REFERENCE) 이 있어 레퍼런스 전압을 측정할 수 있다. FVR은 3가지 고정 전압으로 설정 가능하다. 4.096V 2.048V 1.024V 이 출력 전압은 ADC, CMP 등의 레퍼런스로 사용할 수 있다. FVR출력을 ADC 로 설정하면 31번 채널에서 ADC값으로 읽을 수 있다. //VFR 초기화 코드 ADFVR0 = 1; ADFV..
[PIC16F150x EVM] PIC16F1509 ADC, PWM 테스트 [PIC16F150x EVM] PIC16F1509 ADC, PWM 테스트 PIC16F1509는 4개의 10비트 PWM출력이 있다. 20Mhz에서 최대 208khz, 6.5bit 해상도로 출력 가능하다. PIC16F1509 PWM초기화 코드 void Pwm1Init(void) { Cbi(TRISC, BIT5);Cbi(ANSELC, BIT5); PWM1CON = 0x00; T2CON = 0b00000111; PR2 = 255; PWM1DCH = PWM1DCL = 0x00; T2CON = 0b00000100; PWM1DCH = 0b00100000; PWM1EN = 1; PWM1OE = 1; PWM1OUT = 0 PWM1POL = 0; } void PWM1_SET(unsigned int Duty){PWM1DCH..
[PIC16F150x EVM] PIC1509 초기화 및 클럭 설정 [PIC16F150x EVM] PIC1509 초기화 및 클럭 설정 PIC16F15xx 시리즈는 Enhanced Mid-range Core 로 저렴하면서 강력한 페리를 가진 MCU로 이전 PIC16시리즈와 클럭 시스템과 약간 다른 점이 있어 설정이 필요하다. 내부 클럭을 사용하면 31Khz에서 16Mhz로 설정 가능하고 기존 코드 호환을 위해 SystemInit()함수에 설정하였다. void SystemInit(void) { //grobal interrupt disable disable(); //Internal Oscillator Frequency Select bits /* 1111 = 16MHz 1110 = 8MHz 1101 = 4MHz 1100 = 2MHz 1011 = 1MHz 1010 = 500 kH..
[PIC16F150x EVM] 보드 제작 [PIC16F150x EVM] 보드 제작 PIC16F15xx 시리즈는 새롭게 출시된 저가격, 저전력의 MCU이다. 시리얼 포트 있고 저렴하기 때문에 저렴한 솔루션으로 사용될 곳이 많을것 같은아 테스트 하기 위해 s-Type 형태로 제작 해 보았다. 저렴한 16bit MCU임에도 10bit ADC, PWM, UART, SPI, I2C가 있고 특이하게 DAC출력까지 있다. 기존 PIC18F14K50 PCB와 동일한 핀맵이므로 PCB를 그대로 사용해서 테스트 했다. s-Type 형태로 제작 해서 기존 확장 보드를 그대로 이용 가능하다. 저렴한 가격 PIC16F1508은 실제로 저렴한 가격인데 쇼핑몰에서 1350에 구매 가능하다.(이번에 PIC16F1509 25개 구매 했다.) PIC16F150x EVM 회로도..
[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 타이머 인터럽트 핸들러..

반응형