삽질 기반의 공학/AVR

001. USBasp와 AVR 보드가 호환이 안된다..?

반응형

서론

 

맨날 아두이노만 만져왔던 저는 이제 아두이노라는 허물을 벗고 AVR 프로세서를 직접 다뤄보기로 했습니다.

 

아두이노는 함수를 이용하고, AVR은 직접 비트제어를 하기 때문에 분명 속도와 퀄리티 차이가 날 것이라고 생각했어왔기 때문에 눈독들이고 있었고, 드디어 기회가 와서 잡아보려고 했죠.

 


드디어 시작인가!

 

동아리 선생님께 받은 Atmel ATmega 8535 MCU(Micro Controller Unit)가 내장된 보드인 MR-8535,

PC의 프로그램을 MCU에 다운로드해줄 AVR ISP 다운로더인 USBasp를 구매하여 준비해두었습니다.

그리고 인터넷에서 강의를 보며 간단한 LED 점등 프로그램을 짤 수 있게 되었고, AVR Studio를 이용해 직접 업로드를 해보기로 했습니다.

 


시작도 못해보고...

8Mhz로 바꾸기 전의 사진이네요.

하지만.. 업로드 과정에서 문제가 발생했습니다.

침착하게 먼저 에러의 내용을 살펴본 결과..

타겟(업로드할 AVR 칩)이 반응(answer)을 하지 않는다.

라는 매우 간단하지만 치명적인 에러가 발생하고 있었습니다.

일단 먼저 문제 해결을 위해 응답하지 않는 이유는 무엇일까 생각해보았습니다.

응답하지 않는다는 것은 보드와 PC 사이에 연결이 잘못되어 신호가 잘못 가고 있거나,

IDE에서 타겟 MCU 셋팅을 잘못하여 정상적으로 잡히지 않거나,

보드의 상태나 AVR ISP 다운로더의 문제가 발생했다 정도로 유추해볼 수 있었습니다.

하지만 IDE에서의 MCU 셋팅은 여러 번 확인해보았고, AVR ISP 다운로더 구매한지 얼마 안 되었으며 PC에서 드라이버도 제대로 잡아주어 인식을 잘 했습니다.(일단은)

그럼 보드나 연결이 문제인데, 확실히 보드가 지금은 단종된 예전 모델이었기 때문에 충분히 의심할 수 있었으나 외관상으로도 전혀 문제가 없어 보였습니다.

여러 번 헤맨 끝에 결국 데이터시트를 참고하여 연결 부분을 점검해보기로 했죠.

데이터시트를 본 저는 경악을 금치 못했습니다..

 


문제를 찾았다!

이것이 AVR ISP 다운로더의 데이터 시트에 나와있는 연결부의 핀맵입니다.

그리고 이것은 MR-8535 보드의 연결 부 핀맵입니다.

무엇이 문제인지 감이 오셨나요?

정확하게 비교하기 위해 MR-8535 보드의 연결 부 핀맵을 AVR ISP 다운로더의 데이터 시트에 나와있는 핀맵 형식으로 Photoshop을 이용해 제작해보았습니다.

 

이렇게 보니 확실히 더 와닫네요. 핀 배치가 전혀 다름을 알 수 있습니다.

동일하게 배치된 핀이 1개도 없음을 알 수 있었죠.

 

그런데 아주 다른 것은 아니었습니다.

MR-8535의 핀맵을 180도 돌려보면 얼추 비슷해집니다.

NC 핀은 사실상 Not Connected 상태이기 때문에 돌려놓은 채로 꽂아 사용할 수 있지만..

커넥터 특성상 정방향으로만 꽂히게 돌출된 부분이 있기 때문에 그것은 불가능했습니다.

 

기왕 앞으로도 사용할 거. 저는 컨버터를 제작하기로 했죠.

당연하게도! 혹시 모를 상황에 대비해 먼저 점퍼선을 이용해 테스트한 결과는 매우 성공적이었습니다.

테스트는 필수입니다. 컨버터를 힘들게 제작했는데 실패한다면 시간, 노력 모두 손해니까요.

 


거침없는 Troubleshooting

자 일단 AVR ISP 다운로더와 MR -8535를 임의로 배치하여 핀을 어떻게 연결할지 구상해 봅니다.

사진처럼 배치하면 핀 번호는 위처럼 나오게 됩니다.

1번 핀은 대게 PCB에 PAD가 사각형으로 나오고, 1번 핀을 기준으로 아래로 갈수록 핀 번호가 늘어나며 옆 줄로 넘어갈 때는 다시 위부터 숫자를 세계 때문에 1번 핀만 제대로 찾으면 이렇게 유추할 수 있습니다.

핀 위치까지 확인했으니 이제 정말 제작할 시간입니다!

먼저 재료입니다. MR-8535의 입력 부는 2열에다가 M(수) 타입이기 때문에 상응하는 F(암) 타입의 2열 헤더 소켓과 AVR ISP 다운로더에서 오는 케이블은 2열 F 타입이기 때문에 M 타입의 2열 헤더 소켓을 준비했습니다.

그리고 소형 PCB를 재단하여 더 작게 만들어 볼 생각입니다.

일단 PCB를 재단해봅니다.

너무 작지 않게 적당한 사이즈로 커터 칼을 이용해 재단했습니다.

 

다음으로, 헤더 소켓을 땜하여 꽂아보면서 잘 되었는지 확인했습니다.

너무 바깥쪽으로 몰아놓으면 나중에 배선할 때 문제가 생길 수 있기에 여분의 공간을 남겨주었습니다.

 

그리고 배선해주었습니다.

공간이 매우 협소해 리드선으로 할 수 있는 부분을 제외하고 모두 래핑 와이어를 이용해주었습니다.

배선할 때 오류가 생기는 것을 방지하기 위해 Fritzing으로 배선을 하면서 진행했습니다.

이렇게 해두면 배선할 때마다 체크할 수 있어서 매우 편했습니다.

만들고 나니 공간이 많이 남더라고요. 그래서 추가적으로 더 잘라주었습니다.

다 땜하고 나서 자르려니까 너무 힘들었습니다. 다음에는 꼭 PCB 설계까지 미리 해서 사전에 재단해주어야겠습니다.

 

그리고 대망의 테스트 시간.. 결과는 다행히도 매우 성공적이었습니다.

작게 제작되어 사용하기에도 매우 편했고 아주 정상적으로 작동해서 쓸 만했습니다.


느낀 점

 

이 삽질을 통해 문제 해결법을 알게 된 것 같습니다.

먼저 현재 발생하고 있는 에러의 개념을 잡고 원인을 파악한 후 문제를 찾으려 하니 매우 수월했습니다.

적은 시도에도 바로 문제를 파악할 수 있었죠.

 

그리고 데이터시트를 찾는 법과 보는 법을 알게 되었습니다.

처음에는 별로 안 중요한 줄로만 알고 있었는데, 이렇게 데이터시트를 이용해 문제 해결을 해보니까 이보다 더 중요한 건 없는 것 같습니다.

사실 이 문제도 제가 사용하기 전에 데이터시트를 봤다면 헤매지 않았을 문제였지만, 이 삽질을 통해 무조건 데이터시트를 참조해야 함을 깨닫게 되었습니다.

혹시라도 동일한 문제를 겪고 계시거나 비슷한 문제 때문에 골머리를 앓고 계신 분들이라면 이 게시글을 통해 문제를 해결하시길 바라며 이만 글 마치겠습니다.

감사합니다.

반응형