Arduino : digitalread () 및 digitalwrite ()에 대한 빠른 대안?


13

아두 이노 함수를 호출하는 가장 빠른 대안은 무엇입니까 digitalread()와는 digitalwrite()? AVR 전용 또는 칩별 솔루션이 허용됩니다.


3
이 질문과 마지막 질문을 읽으면 꽤 빨리 무언가를하고 싶은 것 같습니다. 나는 그것이 무엇인지 그리고 얼마나 빨리 유용 할 수 있는지에 대한 세부 정보를 제공한다고 생각합니다.
Oli Glaser

@Oli, 좋은 생각, 감사합니다. 현재 프로젝트는 RC 송신기를위한 튜닝 시스템입니다. 잘 작동하지만 다른 프로젝트에 동일한 프레임 워크를 사용할 수 있도록 RC PWM 신호 디코딩을 효율적으로 만들고 싶습니다. 여기에 지금까지 무엇을의 작성자는 다음과 같습니다 eastbay-rc.blogspot.com/2011/11/...
마크 해리슨

답변:


18

디지털 포트에 직접 액세스하십시오!

내가 테스트 한 3 가지 방법은

  • digitalWrite (핀, LOW); digitalWrite (핀, HIGH);
  • CLR (PORTB, 0); SET (PORTB, 0);
  • PORTB | = _BV (0); PORTB & = ~ (_BV (0));

[...]

여기에 이미지 설명을 입력하십시오

보다시피, digitalWrite는 완료하는 데 약 56 사이클이 소요되며 직접 포트 주소 지정에는 2 사이클이 소요됩니다. IO 작업이 많은 프로그램의 경우 시간이 크게 다릅니다!



2

위에서 제안한대로 디지털 포트에 직접 액세스하십시오. 그러나 스타일로!

하드 코딩 된 값을 하드웨어 레지스터에 직접 쓰면 가독성과 이식성이 떨어집니다.

Github에 HWA라는 도구를 게시했습니다.이 도구를 사용하면 C ++ 컴파일러가 필요없고 고효율 이진 코드를 생성하는 하드웨어에 대한 객체 지향 인터페이스를 사용할 수 있습니다.

HWA가 있습니다 : https://github.com/duparq/hwa


1
"고효율 이진 코드"는 실제 측정과 함께 훨씬 더 권위있는 것으로 들립니다.
Dmitry Grigoryev 님

2

Arduino.SE의 사람들 은 이미 이것을 논의하고 테스트했습니다. 결과적으로, digitalWriteFast()regular보다 개선되지는 않았습니다 digitalWrite(). 그러나 직접 포트 액세스는보다 약 35-40 배 빠릅니다 digitalWrite().


0

ChipKit Uno32를 사용하십시오 . AVR 기반 Arduino보다 훨씬 빠릅니다. 또한 타이밍 문제를 다룰 것입니다.


1
적어도 현재 하드웨어의 한계에 도달하고 더 빠른 것이 필요하다고 결정하기 전까지는 더 빠른 하드웨어를 구입하는 것이 최선의 대답이라고 생각하지 않습니다.
Jon L

1
왜 다운 보트인가? 그는 내가 제공 한 빠른 솔루션뿐만 아니라 가장 빠른 솔루션을 원 했습니다. 누구든지 더 빠른 Arduino 기반 솔루션을 제안 할 수 있습니까?
레온 헬러

12
ChipKit은 arduino가 아니라 arduino 호환 플랫폼이기 때문입니다. 이는 포트 전환 속도는 빠르지 만 일부 라이브러리를 다시 작성할 가능성이 크다는 것을 의미합니다. 이더넷, XBee, SD 카드 라이브러리가 기본적으로 작동하지 않을 수 있습니다. 또한 Mark는 새로운 플랫폼 (doh)이 아닌 digitalRead / Write의 대체 함수 호출을 요청합니다.
한스

2
하드웨어 변경은 결코 좋은 해결책이 아닙니다. 최소한 좋은 학습을 놓치고 하드웨어를 효율적으로 사용하는 것을 배우지 않을 것입니다.
Rick_2047

1
@ Rick_2047 "never"라고 말하지 않을 것입니다. 요구 사항이 신규이거나 확장되었거나 수량이 증가하면 대안을 살펴 보는 것이 좋습니다. 그러나 나는 총체적인 소프트웨어 비 효율성으로 하드웨어를 맹목적으로 던지는 것은 정교하지 않다는 것에 동의합니다. 때로는 고성능 시스템이 자체 오버 헤드를 추가하고 때로는 일부 작업의 경우보다 느리게 작동하기 때문에 작동하지 않습니다. 실제로 사용하거나 고려하는 플랫폼에 대해 배우는 것에 대한 대안은 없습니다.
Chris Stratton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.