[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]/PIC16F2012. 5. 14. 00:54

[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();   

 

 // Set internal oscillator frequency

//16MHz Internal Clock Select : 
 OSCCON = 0x30; 

}

 

 

 

 

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요

[DSP]/DSP60002012. 1. 29. 16:19

[TMS320C6720] 성능 테스트

[TMS320C6720] 성능 테스트

TMS320C6720성능 테스트를 위해 우선 가장 기본이 되는 GPIO토글 속도 테스트를 진행 해 보았다.

아무 설정없이 GPIO토글 하는 코드 로 테스트 했는데 500Khz도 안나온다...
기본 클럭으로 해서 그런것 같다.
 //SystemInit();

 while(1)
 {
  Led1On();
  Led1Off();
}

PLL설정 ( [TMS320C62720] 개발기 - PLL테스트 참고) 후,  페리 클럭을 50Mhz로 설정하고 GPIO On/Off토글 속도는 1Mhz정도 나온다.

그래도 좀 느린데...

GPIO를 Set/Clear 레지스터를 이용하여 옵티마이즈 하니 4Mhz까지 나온다.



TMS320C6720은 최대 200Mhz로 구동 가능하고 페리는 100Mhz까지 가능하기 때문에 PLL을 수정하여 최대한 올려보니GPIO토글 속도는 10Mhz 까지 나온다.
 PLLDIV0  = 0x08000;  // 20MHz/1 = 20MHz
 PLLM     = 10;     // 20MHz * 10 = 200MHz
 PLLDIV1  = 0x08000;  // SYSCLK1 = 200MHz/1 = 200MHz
 PLLDIV2  = 0x08001;  // SYSCLK2 = 200MHz/2 = 100MHz // Peripheral Clock
 PLLDIV3  = 0x08000;  // SYSCLK3 = 100MHz/1 =  100MHz // SDRAM Clock






Posted by nexp

댓글을 달아 주세요

[TI]/LM4F2011. 12. 9. 21:00

[LM4F] LM4F232H 의 GPIO속도 테스트

[LM4F] LM4F232H 의 GPIO속도 테스트



TI사의 Cortex-M4 시리즈 LM4F232 가 출시 되었다. 
기존 Cortex-M3 에 비해 향상된 부분은 속도가 50Mhz에서 80Mhz로 증가 되었고 FPU가 추가 되었다.
그래서 대략적인 속도 체크를 해 보았다.
(같은 Cortex-M4 코어 STM32F4 속도 측정 결과 참고)


시스템 클럭이 변경되었기 때문에 PLL설정 부분에 코드 수정이 필요하다.

void SystemInit(void)
{
    // Set Clock to illegal 100Mhz
   // SysCtlClockSet(SYSCTL_SYSDIV_2 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |  SYSCTL_XTAL_16MHZ);

    // Set Clock to 80Mhz MAX. legal speed
    //SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |  SYSCTL_XTAL_16MHZ);
}

  

메인 클럭 80Mhz에서 GPIO토글 속도는 10Mhz정도의 출력 속도를 보인다.

 가격이 저렴하긴 (5~6$ @1K) 하지만 그렇게 매리트 있지는 않는것 같다.
단순 비교는 좀 그렇지만 8$대의 STM32F4 와비교해 보면 ST가 더 좋은것 같다.

[참고] MCU속도 측정 결과 

Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM32F42011. 12. 5. 20:00

[STM32F4] 속도 측정 - GPIO 토글 속도 테스트

[STM32F4] 속도 측정 - GPIO 토글 속도 테스트



STM32는 Cortex-M4F 코어로 168Mhz로 동작한다. GPIO 토글 테스트로 MCU의 속도를 테스트 해 보았다.
물론 클럭속도가 중요한 요소는 아지만 마이컴에서 GPIO속도는 중요할 때가 많이 있다. STM32F4는 FPU가 있어 DSP기능도 뛰어난것 같다.
[참고] MCU속도 측정 결과 

클럭 설정없이 그냥 GPIO On/Off 시키니 10Mhz 출력된다. 느린데..
뭔가 이상한것 같다.

PLL설정후 STM32F4의 GPIO토글 속도는  33Mhz 까지 출력된다.
STM32F103에서 12Mhz가 출력 되었던과 비교하면 확실히 빨라진것을 확인 할 수 있다. 메인클럭이 72Mhz -> 168Mhz로 되었기 때문이다.


STM32F4 클럭 테스트를 위한 코드는 비트제어 방식으로  했고 아래 와 같다.

     25              while (1)
     26              {
     27                  Led1On();
   \                     ??main_1:
   \   00000082   3E83               STRH     R6,[R7, #+24]
     30                  Led1Off();
   \   00000084   7E83               STRH     R6,[R7, #+26]
   \   00000086   FCE7               B.N      ??main_1
   \                     ??main_0:
   \   00000088   ........           DC32     GPIO_InitStructure
   \   0000008C   00000240           DC32     0x40020000
   \   00000090   00180240           DC32     0x40021800
Posted by nexp

댓글을 달아 주세요