ATMEGA 2560 16AU 디지털 포트 반전 속도 테스트

ATMEGA 2560의 디지털포트를 여러가지 방법을 이용해 반전시켜보고, 속도의 차이를 확인해 보았다. 연산의 결과를 포트에 대입하는것과, 그냥 상수값을 대입할 경우 동작의 속에 유의미한 차이가 있었으며, 전압 상승과 전압 하강때의 반응 속도가 서로 다른 것을 확인할 수 있었다.

ATMEGA 2560의 PIN OUT을 통해 클럭을 만들어 사용한다고 했을 경우, 만들어 낼 수 있는 가장 빠른 클럭은 얼마까지 가능할까 하는 궁금증이 들어 시험해 본 포트 반전 속도 시험

포트 반전

while(1) { PORTA = ~PORTA; }

오실로스코프에서 확인한 모습
TEST1

현재 포트를 그냥 반전시켜 버린다. 약 1.6MHz의 클럭을 만들어 낼 수 있었다.

상수 교차 대입

while(1) { PORTA = 0XFF; PORTA = 0X00; }

TEST2의 오실로스코프 화면
TEST2

포트에 0과 1을 계속 대입한다. 약 4MHz의 클럭을 만들어 낼 수 있다. 하지만, LOW를 유지하는 시간이 과도하게 짧다. 클럭으로 사용하기에는 듀티비가 적합하지 않은 것이 확인된다.

1us 지연을 두고 상수 교차 대입

while(1) { _delay_us(1); PORTA = 0XFF; _delay_us(1); PORTA = 0X00; }

Invert Test 3
TEST3

1us의 지연을 두고 포트에 0과 1을 계속 대입한다. 약 400KHz의 클럭을 만들어 낼 수 있다. LOW를 유지하는 시간은 늘어나긴 했지만, 여전히 듀티비는 50이 되지 않는다.

결론

궁금했던 것 보다 더 중요한 다른 사실을 알게 되었다. 일단 듀티비는 50이 안나온다. 그냥 빠르게 한다고 속도를 올려대고 밟기만 하면, 분명히 오작동할 만한 거리들이 존재 한다. 그리고, 무언가 '계산'을 해서 값을 변화시키는게 아닌, 그냥 상수값을 읽어와서 로드해 버리는 것이 속도가 훨씬 빠르다.

이 글은 2019년 12월 6일 작성되었습니다.

반응형