본문 바로가기

[AVR]/Mega8

ATMega168 을 이용한 오버클럭 속도 측정

ATMega168 을 이용한 오버클럭 속도 측정



ATMega168 을 이용해서 GPIO 토글속도를 측정 했다. Mega168는 20Mhz까지 구동 가능하므로 24Mhz에서 측정해 보았다.
24Mhz -> 209ns/2.4Mhz

[다른 MCU속도 측정 결과]와 비교 하면 저렴한 Mega168에서 상당히 빠른것 같다.

ATMega168 GPIO속도 측정 소스코드
#define Led1Toggle()              Tbi(LED1_PORT, LED1_BIT)   //PORTB ^= BIT1

int main(void)
{
 SystemInit();

 Led1Init();
 Led1On();

 while (1)
 {
  Led1Toggle();
  //Delay(100);
 }  
}


WinAVR(AVR Gcc) 옵티마이즈 옵션



컴파일러의 어샘블 결과는 아래와 같다. 5 머쉰사이클 정도 나온다.
Level-s 209ns/2.4Mhz
 while (1)
 {
  Led1Toggle();
  88: 92 e0        ldi r25, 0x02 ; 2
  8a: 85 b1        in r24, 0x05 ; 5
  8c: 89 27        eor r24, r25
  8e: 85 b9        out 0x05, r24 ; 5
  90: fc cf        rjmp .-8       ; 0x8a <main+0xa>

Level-0 500ns/1Mhz
  while (1)
 {
  Led1Toggle();
  a8: a5 e2        ldi r26, 0x25 ; 37
  aa: b0 e0        ldi r27, 0x00 ; 0
  ac: e5 e2        ldi r30, 0x25 ; 37
  ae: f0 e0        ldi r31, 0x00 ; 0
  b0: 90 81        ld r25, Z
  b2: 82 e0        ldi r24, 0x02 ; 2
  b4: 89 27        eor r24, r25
  b6: 8c 93        st X, r24
  b8: f7 cf        rjmp .-18      ; 0xa8 <main+0x28>
반응형