본문 바로가기

Electron/Arduino

Arduino 에 고속 펄스 만들기..

고속 펄스가 필요해서...

Arduino 에서 얼마나 빠른 펄스를 만들수 있을까 생각해 봣습니다.

 

PWM 포트를 이용해서 analogWrite() 이나  tune()를 이용하면 좀더 고속에 펄스를 만들수 있지만.

펄스 카운트를 하기 힘들다는 문제가 있습니다.

그래서 단순히 digitalWrite()를 이용해서 출력을 해봤습니다.

 

 올실로스코프 사진을 보시면 알겠습니다..

단순히 On,Off를 반복 함에도 의도치 않은 딜레이가 발생 됩니다.

 

검색해 보니 delayMicroseconds() 자체도 딜레이가 있지만...

digitalWrite() 자체에 딜레이가 있다고 하더군요.

 

bitSet()을 사용 하면 30배 이상에 속도 향상이 있다고 합니다.

몇배가 중요 하다기 보단..바로 비트로 제어해 주니..

Arduino에선 이것보단 빠르게 펄스를 만들순 없을것같습니다.

 

PORTD에 0~7번은 Arduino에 0~7번

PORTB에 0~7번은 Arduino에 8~13번

PORTA에 0~7번은 Arduino에 14~19번

 

참고하세요...딜레이에 따라 오실로 스코프를 찍어 봤습니다...

delayMicroseconds() 자체 딜레이도 크기 때문에 IF를 써서

0이면 그것 마저도 실행 안하게 하니 1.4Mhz에 주파수 까지 나오더군요...

펄스에 한주기가 620ns 가 최고 인것 같습니다.

On.Off 반복이니 310ns에 시간이 걸리네요...

참고하세요...

 

 

'Electron > Arduino' 카테고리의 다른 글

주로 사용하는 Arduino 보드 핀 배열  (0) 2017.05.09
RF 315, 433 무선 제어  (0) 2016.05.31
Arduino 에 로드셀 연결... HX-711  (2) 2015.08.11