아두이노 입문용 키트는 아직 배송도 되기 전인데, 갖고 있는 부속을 이용하여 브레드보드 위에 MIDI in 회로와 active low reset 회로를 만들어서 SAM 9703 음원보드에 연결하니 소리가 나오기 시작하였다. 좀 더 고생을 할 줄 알았는데 이렇게 소리가 나오게 되니 약간은 허탈한 기분도 든다.
어제 저녁의 작업 상황을 사진으로 남겼다. 원래 장비에 있던 주기판의 MIDI in 신호를 처리하던 옵토커플러가 망가진 것이 거의 확실하다.
아두이노 키트의 주문을 취소할까 싶어서 잠시 고민을 하던 중에 롯데택배로 상품이 발송되었다는 문자 메시지가 왔다. 어차피 흥미를 가졌던 물건이니 다른 목적에라도 활용해 보도록 하자.
이번에 시행착오를 겪으면서 마이크로컨트롤러의 reset 과정에 대하여 정말 많은 것을 알게 되었다. Reset은 잘 작동하던 프로세서를 처음부터 시작하도록 되돌리는 과정으로만 생각했는데, power-on cycle에서 당연히 거쳐야 하는 것이다. 마이크로컨트롤러의 리셋 핀은 일반적으로 active-low 방식으로 작동한다. 즉, 이 핀에 low 신호가 일정 시간 지속되면 현재 실행 중인 모든 작업을 중단하고 프로그램 카운터를 초기 상태로 설정하며, 리셋 핀에 하이 신호가 인가되면 리셋 상태가 해제되고 정상적인 동작을 재개한다.
Active low reset 핀은 이 그림과 같이 RESET 위에 바를 붙인다(출처). |
그림 출처: Arduino forum - RC reset circuit |
위 간단한 RC 리셋 회로의 동작을 알아보자. 전원이 인가되면 커패시터가 충전되기 전까지 리셋 핀은 GND에 가까운 전압이므로 리셋 상태를 유지한다. 충전이 끝나면 리셋 핀 전압이 올라가면서 리셋 상태가 해제되고 정상 동작을 시작한다. 다이오는 리셋 전압이 갑자기 떨어지는 상황에서 방전을 위한 통로를 제공한다. 예를 들어 빠른 전원 꺼짐 후 재부팅이 일어나는 상태 말이다.
구글에서 active low RC reset circuit이라는 검색어를 넣으면 무척 많은 자료가 나오는데, 다음의 것이 비교적 설명이 잘 되어 있어서 링크를 걸어본다. 보다 상세한 내용을 공부하고 싶으면 이를 클릭해 보자. 단, 위의 것은 microprocesser(MPU)라는 표현이 제목에 나온다. microprocessor와 microcontroller(MCU)는 무엇이 다른가? MPU는 CPU만 단독으로 탑재한 것이고, MCU는 CPU + 메모리 + I/O가 통합된 칩을 의미한다. 따라서 후자는 임베디드 제어에 주로 쓰인다.
- [Analog Devices] Supervisory Circuits Keep Your Microprocessor Under Control
- [ResearchGate] Creating an 'active low' RC reset circuit(PDF 다운로드 링크)
잘 알려진 MIDI 파일 두 개(cakewalk.mid & passport.mid)를 이 보드로 재생하면서 audacity에서 녹음을 해 보았다. 오디오 인터페이스는 롤랜드 SC-D70을 사용하였다. 소리는 나쁘지 않은 편이다. 리눅스에서 음악 작업을 좀 더 자주해야 익숙해질 텐데, 어쩌다 한 번찍 쓰니까 '어? 어떻게 하는 거였더라?'하면서 고개를 갸웃거리게 된다. Software synth를 쓰는 것이 아니므로 JACK은 쓰지 않았다.
만능기판에 부품을 납땜하여 제대로 회로를 완성해야 하는데, 400홀 브레드보드 상태 그대로 넣고 뚜껑을 닫았다. 오디오 출력과 MIDI 입력은 원래 있던 단자에 배선하여 마무리하였다. 전면 패널에 위치한 LED 중 하나를 MIDI 신호 입력에 연동하여 점멸하게 만들고 싶은데 그러려면 또 공부가 필요하다. 옵토커플러 전과 후, 어디에 어떻게 연결해야 될까? 지금은 전에 연결했는데 너무 어둡게 점멸한다.
나도 이제 MIDI 장비 탑을 쌓는가?
댓글 없음:
댓글 쓰기