[Microchip]/PIC24F2013. 1. 12. 23:30

[PIC24F16KA EVM] ADC 테스트 - TSL251 Light to Voltage Converter

[PIC24F16KA EVM] ADC 테스트 - TSL251 Light to Voltage Converter

 

 

PIC24F16KA는 500ksps 10bit ADC를 내장하고 있다.

하드웨어적으로 약간의 차이는 있지만 코드는 dsPIC33 ADC 테스트와 거의 호환이 된다.

 

 

 

 

PIC24F ADC 테스트 동영상

PIC24의 ADC는 10bit이고 광센서 TSL251 Light to Voltage Converter를 이용해서 ADC값을 출력해 보았다.

LX1971 센서와 비교해서 광센서의 성능차이도 확이해 볼 수 있다.

 

 

 

 

PIC24F ADC 초기화코드

void AdcInit(void)
{
 //ADCON1 레지스터 설정
 AD1CON1bits.SAMP = 0;  //ADC 샘플/홀드 홀딩
 AD1CON1bits.ASAM = 1;  //ADC 변환 즉시 샘플링 시작 설정
// AD1CON1bits.SIMSAM=0;  //순서대로 멀티플 채널 샘플 설정
 AD1CON1bits.SSRC = 7;  //샘플 클럭 설정: 내부 카운터 샘플링 끝나고 변환시작
 AD1CON1bits.FORM = 0;  //데이터 출력 형식: Integer

 //AD1CON2 레지스터
 AD1CON2bits.CSCNA=0;  //CH0+ 입력에 대한 스캔 입력 설정: Scan inputs
 AD1CON2bits.VCFG = 0;  //AD변환 기준 전압 설정: Vreg+ = Vdd, Vreg- = Vss

 //AD1CON3 레지스터
 AD1CON3bits.ADCS = 0x3F; //ADC 변환 클럭 설정 : 최대치 설정
        //Tad=Tcy*(ADCS+1)=(1/40M)*64 = 1.6us (625KHz)
        //10비트 ADC 변환 시간 Tc = 12*Tad = 19.2us (52KHz)
 AD1CON3bits.SAMC=31;   //Auto Sample Time = 31*Tad
 AD1CON3bits.ADRC=0;   //ADC Clock을 시스템 클럭 사용 설정

 //AD1CHS0 레지스터 :
// AD1CHS0=0;     //디폴트 값

 //AD1CSSL 레지스터 : AN0 ~ AN15 아날로그 입력 핀 설정
 AD1CSSL = 0;
  Sbi(AD1CSSL, BIT0);  //AN0 ~ AN1 AD 입력 핀 설정


 //ADC1 인터럽트 설정  
 IFS0bits.AD1IF = 0;   //ADC1 인터럽트 플래그 클리어
 IEC0bits.AD1IE = 0;   //ADC1 인터럽트 시작 설정

 //ADC1 컨버터 동작 개시 설정
 AD1CON1bits.ADON = 1;  //ADC1 컨버터 동작
}

 

 

#define adc_WaitForCoversion()    while(!AD1CON1bits.DONE)
#define adc_GetData()       (ADC1BUF0)
#define adc_SetChannel(Ch)     //AD1CSSL = ~(Ch);AD1PCFGL = (Ch); 
#define adc_Run()       AD1CON1bits.SAMP = 0;

 

 

//Read ADC Value
unsigned int AdcRead(unsigned char Channel)
{
 adc_SetChannel(Channel);
 adc_Run();

 adc_WaitForCoversion();

 return adc_GetData();
}

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC24F2013. 1. 12. 22:30

[PIC24F16KA EVM] 클럭설정(OSC) 및 MCU속도 측정

[PIC24F16KA EVM] 클럭설정(OSC) 및 MCU속도 측정

 

 

PIC24F16KA, PIC24F08KA는 내부 8Mhz RC Oscillator가 있고 4채배 PLL이 있어 32Mhz로 구동할 수 있다.
하나의 명령어 수행하는데 2싸이클이 필요하므로 32Mhz에서 16MIPS로 동작한다.

 

CPU의 동작클럭은 CLKO (OSCO/CLKO/AN5/C1INA/C2INC/CN29/RA3) 핀에서 확인 가능하다.

디폴트 구동시 CPUCLK가 8Mhz이므로 CLKO는 4Mhz가 출력된다.

 

 

 

 

32Mhz로 구동하기 위해 FNOSC_FRCPLL으로 설정한다.

 

    _FOSCSEL(FNOSC_FRCPLL & IESO_OFF)
    _FOSC(FCKSM_CSDCMD & POSCFREQ_HS & OSCIOFNC_OFF & POSCMOD_NONE)

 

 

void SystemInit(void)
{
    CLKDIVbits.RCDIV = 0;                   //Set FRCDIV to 8 MHz operation

 

 _COSC0 = 1;
 _COSC1 = 0;
 _COSC2 = 0;

 

 _NOSC0 = 1;
 _NOSC1 = 0;
 _NOSC2 = 0;

 

CLKDIV = 0x0000;
}

 

 

32Mhz로 설정시 CLKO 를 확인해 보면 16Mhz가 출력되는것을 확인할 수 있다.

2 OSC클럭에 하나의 명령이 수행된다. 

(처음에 16Mhz가 정상적으로 출력되지 않고 출력되다 리셋 걸리는 현상이 있었다.

 레지스터 설정이 잘못 되었는나 싶어 그쪽만 확인 했는데, 문제는 PICKIT3에서 전원을 공급해 주어서 그런 현상이 발생 했다. 외부 전원 인가시 잘 동작 하는것을 확인했다.)

 

 

 


 

PIC24F16KA 성능 측정

32Mhz 구동하고 GPIO 토글 시 2.6Mhz가 출력된다.

LATA ^= BIT4

 

다른 16MIPS MCU와 비교해 보면 좀더 빠른 느낌은 있다. 다만 토글 레지스터가 없어 단순 GPIO토글의 성능은 좀 떨어진다.

8bit AVR Xmega 와 속도를 비교해 보면 좋을것 같다.

 

 

 

단순히 GPIO On/Off구동만 했을때 4Mhz 가 출력되고 57ns정도 걸린다.

LATA = BIT4;

LATA = 0;

 

 

Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC24F2013. 1. 12. 09:30

[PIC24F16KA EVM] 보드 제작 - 저전력 PIC24XXKA 시리즈

[PIC24F16KA EVM] 보드 제작 - 저전력 PIC24XXKA 시리즈

 

 

 

Microchip사의 새로운 저전력 MCU인 PIC24FXXKA 시리즈을 테스트 할수 있는 보드를 S-Type 형태로 제작했다.

저전력 기술과 저렴함으로 보면 여러 장점이 있어 보인다.

 

20핀의 TSSOP형태의 소형이기 때문에 뒷면에 배치하였고 보드상에 LED 2개 및 입력스위치가 있어 간단한 테스트를 해 볼수 있다.  

 

 

 

 

 

 

s-Type 형태로 표준화 해서 다양한 확장 테스트 보드에 연결하여 테스트 가능하다. 

 

 

 

 

PIC24F16KA 핀맵

 

 

 

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC24F2012. 3. 15. 21:00

[PIC24XXKA] 작고, 저렴하며, 저전력의 2 UART MCU - PIC24F16KA

[PIC24XXKA] 작고, 저렴하며, 저전력의 2 UART MCU - PIC24F16KA

UART 2채널이 있고 작고 저렴한 MCU를 찾다 보니 PIC24XXAK 시리즈가 있다.
일반 쇼핑몰(eleparts) 에서도 2천원대로 쉽게  구할수 있다.




소형에 값싸고 성능좋은 MCU로 쓰기에 좋은것 같다.





마이크로 칩사에 방문해 보니 XLP 시리즈로 초저전력으로 구동된다고 한다.
저전력 용으로 자주 사용하고 있는 MSP430과 비교해서 더 적은 전류를 소모 한다고 한다.





밧데리 수명에서도 우세 하다고 하고 있다.
물론 이런 지표들은 특정 상황에서만 적용되는 부분이 없잖아 있기 때문에 좀더 자세한 검토는 필요할것 지만... 아무튼 우세하다고 하는군.





Posted by nexp

댓글을 달아 주세요