20140612 - 초음파 센서

ATMega256 2014. 6. 12. 13:54 Posted by Owen.K


초음파 센서

ATMega1280에서 소스를 그대로 가져와서

ATMega2560에 맞게 수정하였다.

 

- usonic.h







- usonic.c






요것만 바꾸고 실행하면 된다.



그런데 ATMega128 때에도 거리 측정 값이 좀 이상했다.

눈 대중으로만 봐도 20Cm 는 넘는 거리인데, 10Cm 밖에 안나온다는 것...

ATMega128 때는 그냥 넘어갔지만 이번엔 자세히 살펴보았다.


여러 Reg 를 살펴보고 값도 바꾸어 보았지만

알수가 없었는데 normal mode는 이중 버퍼가 안된다는 것을 대충 보았다.

뭔말인지 이해할 수 없었지만 혹시 TCNT0 값에 문제가 있는가 보았다.


usonic.c 소스에 아래 코드를 추가하여 값을 확인해 본 결과,



TCNT0 값이 118을 넘겼을 때에 0으로 초기화되는지 알았는데

118에 도달했을때? 인터럽트만 발생시키고 계속 값이 차올랐다.

그러니 비교방식을 써봐야 별 의미가 없었다.


그래서 0으로 초기화 시켜주는 소스를 추가하고 나니

그나마 근사치?로 나왔다.