힘든 한달이었다.
MSP430F149를 이용하여 ADS8321로 ADC를 하고 그 data를 받아오는 아르바이트를 했다.
첨엔 1주일이면 그까이꺼 충분할 거라고 생각했는데
클럭을 두개 쓰는 MCU를 처음 써보면서 삽질을 많이 했고
Serial Interface의 ADC도 처음 써봐서 많은 삽질을 했다
그리고 가장 오래 삽질한 부분,,,, SPI...
8bit SPI로 16bit도 가능할 거라고 생각했었는데
그건 역시 무리 였나보다.
결국 그 삽질해서 성공한 SPI는 버리고 포트로 클럭을 만들고 data도 받기로 했다.
ADS8321의 timing도를 수백번은 본 것 같다.
enable신호에 data가 나오는 것을 확인 하는데 몇일이 걸렸다.
그 순간 이제 다 되었구나 싶었다..... 그러나...
그때 부터 완전 삽질이었다.
안정적인 clock신호를 내보내야 하는데 while문으로 만든걸로는 제대로 보내지지가 않았다.
아무리 해도 delay100과 delay1000이 10배 차이가 나지 않았다.
나중에 안 사실이지만 optimization과정에서 달라진 다는 것이다.
결국 timer를 이용하기로 하였다.
그러나 timer도 마찬가지.. 아무리 해도 clock이 불안하게 나왔다.
문제는 counter값이 unsigned int라는 것.
count는 계속되고 내가 준 값을 counter값에 더한 후 이전 값에서 그만큼 커질동안 count하도록 하였다.
그러나 이때 65535를 넘어가는 경우 while문에 문제가 생겼다.
그래서 delay를 실행할 때마다 counter 값을 0으로 초기화 시켰다.
이것으로 clock을 안정적으로 내보낼 수 있게되었다.
sampling하는 시간은 5clock, data받는데 16clock, power down하는 동안 4clock이 들었다.
총 25cycle로 ADC가 가능했다. 스펙상에서는 24cycle이라고 하였는데 이상하게 한 cycle이 더 들었다.
이상하네..
이제 마지막 과정.. 회로도 그리고 필터부분 추가하면 될 것 같다.