[Microchip]/PIC16F2014. 11. 1. 22:24

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 SW1_PORT      PORTB
#define Sw1Init()      Sbi(TRISB, SW1_BIT);Cbi(ANSELB, SW1_BIT);nRBPU=0;Sbi(WPUB, SW1_BIT);
#define GetSw1()      !(SW1_PORT&SW1_BIT)
#define WaitForSw1()  

//-----------------------------------------------------------------------------



Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC16F2014. 6. 16. 01:26

PIC16F724 EVM 보드 제작

PIC16F724 EVM 보드 제작



마이크로칩사의 저전력 MCU PIC16F724 를 테스트 할 수 있는 EVM보드를 제작 했다

기존 확장 테스트 보드와 핀맵이 호환되도록 SM-Type EVM 형태로 제작 했고  PIC16F723 EVM 보드와 비교하면 핀수가 증가된 형태이다


가장 큰 특징으로 저렴하면서도 저전력에 16채널 터치인터페이스를 지원 한다



Microchip's family of Extreme Low Power MCUs featuring nanoWatt XLP(TM) Technology



Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC16F2013. 4. 7. 23:00

[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 tmr0 intpt
 T0IE = 1; 

 // Initialize for Timer1 time Resource
 // Timer1 enable, system clock, 1:1 prescale
 T1CON  = 0b11000101;

 // Cap Sense Module
 // CPSON
 CPSON  = 1;
 
 //Cap Sensing Osc Range Bits(18uA)
 CPSRNG0 = 1;
 CPSRNG1 = 1;
 
 // init to channel select = 0 (4 LSb's) 
 CPSCON1 = 0x00;      
}

 

 

 

 

 

mTouch Capacitive Touch 테스트 동영상

기존 Touch Sensing 테스를 위해 제작해 둔 보드를 이용하여 테스트 했다. 터치에 따라 FND에 출력하는 예제 이다.

 

 

Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC16F2012. 11. 15. 05:51

[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

 

 //타이머 인터럽트 레지스터 초기화

 T0IF = 0;     //Clear TMR0 Interrupt Flag

 T0IE = 1;     //Enable TMR0 Interrupt


 GIE = 1;     //Enable Global Interrupt

}





MCU_TimerCal 프로그램을 이용해  간단히 1ms에 대한 설정값을 구할 수 있다.



#define INTERVAL_1mS 0x82


volatile unsigned int gTimeTick1_1ms = 0;

//인터럽트 핸들러 

interrupt ServiceRoutine() 

{

   // Timer0 Interrupt 발생하면

   if(T0IF)

  { 

    TMR0 = INTERVAL_1mS;  // Initial TMR0

    T0IF = 0;     // Clear Interrupt Flag


gTimeTick1_1ms++;

//Led1Toggle();

  }

}








Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC16F2012. 8. 28. 06:39

[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;
 ADFVR1 = 1;
 FVREN = 1;

 

 

 

예로  ADC값이 500, AVR 값이 882 일 경우

V = 500/882*4.096 = 2.321V

로 Vref없어도 비교적 정확히 전압값을 읽을 수 있다.

 

 

그런데 정밀한 Vref는 아니기 때문에 흔들리긴 한다.

디지털 값으로 10정도 인데 계산해 보면 22mV정도 흔들리는것 같다. 외부에 정밀 레퍼런스를 연결하는것이 가장 정확하겠지만.. 여건상 또는 비용문제로 FVR을 이용하면 간단히 해결하기에 좋은것 같다.

 

한가지 아쉬운점은 FVR을 VREF로 직접 입력하지 못하는것인데..

새로출시된 PIC16F18xx는 가능하다고 한다.

 

ADPREF<1:0>: A/D Positive Voltage Reference Configuration bits
00 = VREF+ is connected to VDD
01 = Reserved
10 = VREF+ is connected to external VREF+ pin(1)
11 = Reserved (PIC16F18XX : FVR)

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요