아트메가/기타

Atmega32 딜레이 퓨즈비트설정하기입니다.

원원 2017. 3. 28. 04:52

안녕하세요. Atmega32퓨즈비트 설정입니다. 외부클럭에는 16mhz를 연결했다고 가정하겠습니다. (avr studio 4.1사용합니다.)

첫 delay함수를 사용해보면 시간이 정확하지않는것을 볼 수 있습니다. 기존에 atmega128은 설정이 다 되서 나오지면 atmega32는 바꿔줘야합니다.


먼저 퓨즈비트에대해 알아보겠습니다. Atmega32는 3바이트의 퓨즈비트를 가지고 있습니다. 퓨즈비트는 atmega32사용을 설정하는것입니다. 퓨즈비트는 아무거나 설정을하면 atmega가 고장나므로 잘 알아보고 설정을해야합니다. 여기서 주의할점은 퓨즈비트는 설정되면 0이고 설정이안되면 1입니다. 그러나 여기에서 알아볼것은 atmega32딜레이 제대로 사용하기위해 퓨즈비트를 설정하는 것이므로 여기에서 사용하는 CKOPT비트와 CUT_CKSEL비트만 알아보겠습니다.


아래의 창은 처음 퓨즈비트를 키면 나오는 창입니다. (avr studio 4.1버전은 퓨즈비트가 체크하는 형식으로 나와있습니다.)



여기서 바꿔줘야할 빨간가 쳐져있는 CKOPT부분과 SUT_CKSEL부분입니다. 

CKOPT(Clock Option) : 클록의 세기를 강하게합니다. 그래서 노이즈가 많은 환경에서 사용됩니다. 물론 이때 전력의 소모는 많아집니다. 그러므로 우리는 16mhz를 사용할 것이니까 체크를 해야합니다.



CUT_CKSEL : 사용할 클럭을 정하는 것입니다. 처음에는 Int. RC Osc. 1Mhz; Start-up time : 6 CK + 64ms; default value로 되있습니다. 이걸 맨 아래있는 Ext. Crystal/Resonator High Freq.; Start-up time : 16K CK + 64 ms로 변경해주면 됩니다.


이런식으로 변경해주면 됩니다. 이렇게 변경해주고 delay함수를 사용해보면 제대로 동작하는것을 알 수 있습니다. 만약 LED를 연결해놓고 딜레이를 줘서 On/OFF하는 프로그램을 실행했다면 제대로 나올 것입니다. 그러나 크리스탈을 브레드보드판에서 뺀다면(브레드보드에 연결해놨다는 가정하에) 제대로 동작안하고 계속 켜져있는것을 확인할수 있습니다.