템플릿 속도 업 UP Arduino I / O

그러나 잊지 만 간단하지만 Arduino는 C ++을 사용합니다. 일반적으로 C ++ 부분은 라이브러리 및 프레임 워크뿐만 아니라 C-Language Extensions와 같은 라이브러리 오브젝트를 사용하는 C 스타일을 사용하는 주요 프로그램을 코드화하는 경향이 있습니다. [Fredllll]은 최근에 Arduino I / O를 빠르게 속도를 높이기 위해 디자인 템플릿 라이브러리를 제작했으며 GitHub에서 공유했습니다.

Arduino가있는 전공을 해본 적이 있다면 DigitalWrite가 편리하지만 핀이 구성이뿐만 아니라 모든 통화에 오버 헤드가 추가되는지 확인하기 위해 장면 뒤에서 많은 작업을 수행 할 가능성이 큽니다. [Fredllll ‘s] 디자인 템플릿 버전은 핀의 두 사이클을 지정합니다. 똑같은 포트에서 다른 핀을 괴롭히는 것을 괴롭히지 않으면 절반으로 절반으로 절단 할 수 있습니다.

이와 같이 PIN을 켜서 상수를 활용할 수 있습니다.

스위슈톤 <1> ();
마법의 숫자 (그리고 똑똑한)를 사용하기를 좋아하지 않으면 상수를 정의 할 수 있습니다.

const uint8_t ledpin = 1;
스위슈톤 ();
가장 우아한 타이밍을하고 싶을 가능성이 가장 높기 때문에 세트 수를 지연시킬 수있는 NOP 디자인 템플릿이 있습니다. 다음은 1.3 MHz 구형파를 생성하는 Reddit의 테스트 코드가 있습니다.

const uint8_t mypin = 5;
void 루프 () {
cli (); // 타이밍을 망칠 때 인터럽트를 비활성화합니다.
하다 {
switchonexclusive (); // 1 사이클
nop <5> (); // 5 사이클
switchoffportofpin (); // 1 사이클
nop <3> (); // 3 사이클
} (1) // 할 때 rung to do가 2 사이클입니다.
}
분명히 이것은 루프에 8 개의 지연 사이클이 있기 때문에 이것은 최대 값이 아닙니다.

이 라이브러리를 활용하기 위해 템플릿에 대해 많이 이해할 필요가 없지만 과거에는 더 많은 것을 이해하고 싶다면 우리는이를 다루었습니다. DigitalWrite는 직접 포트 액세스보다 약 50 배 느리고 다른 I / O 작업이 훨씬 좋지 않습니다. 템플릿이 다른 작업을 훨씬 더 효율적으로 만들 수 있는지 여부를 확인하는 것이 매력적 일 것입니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post