[TMS320F28069 EVM] GPIO토글 속토 측정
TMS320F28069 는 최대 클럭 80Mhz까지 가능하다. GPIO Toggle 속도를 측정해 보았다.
메모리로 제어하기
아래 코드와 같이 비트 단위로 쉽게 제어 하기 위해 메모리로 제어하면 5Mhz정도가 정도가 나온다.
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
레지스터로 제어하기
8Mhz정도가 나오는데... 메모리 제어 처럼 보이지만 결국 레지스터 주소를 사용하므로 레지스터만 사용한다.
컴파일러에서 옵티마이즈 해 줄것으로 예상했지만 옵션을 바꿔봐도 메모리 제어, 레지스터 제어 결과가 다르게 나온다.
프로그램작성은 편할지 몰라도 그만큼 속도의 희생이 필요한것 같다.
앞으로 GPIO제어에는 레지스터 접근방법을 사용해야 겠다.
[참고] MCU속도 측정 결과
TMS320F28069 는 최대 클럭 80Mhz까지 가능하다. GPIO Toggle 속도를 측정해 보았다.
void main(void)
{
//DSP System Initialize
SystemInit();
//LED Initialize
Led1Init();
Led1On();
while(1)
{
GpioDataRegs.GPBTOGGLE.all = BIT34;
}
}
{
//DSP System Initialize
SystemInit();
//LED Initialize
Led1Init();
Led1On();
while(1)
{
GpioDataRegs.GPBTOGGLE.all = BIT34;
}
}
메모리로 제어하기
아래 코드와 같이 비트 단위로 쉽게 제어 하기 위해 메모리로 제어하면 5Mhz정도가 정도가 나온다.
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
레지스터로 제어하기
8Mhz정도가 나오는데... 메모리 제어 처럼 보이지만 결국 레지스터 주소를 사용하므로 레지스터만 사용한다.
컴파일러에서 옵티마이즈 해 줄것으로 예상했지만 옵션을 바꿔봐도 메모리 제어, 레지스터 제어 결과가 다르게 나온다.
프로그램작성은 편할지 몰라도 그만큼 속도의 희생이 필요한것 같다.
앞으로 GPIO제어에는 레지스터 접근방법을 사용해야 겠다.
#define Led1Off() GpioDataRegs.GPBSET.bit.GPIO34 = 1;
#define Led1On() GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;
#define Led1On() GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;
[참고] MCU속도 측정 결과
반응형