Skip to content
isdnetworks
Go back

값비싼 결론으로 가기 전에

RF 통신 보드에서 통신이 간헐적으로 끊겼다. 몇 시간 잘 돌다가 갑자기 응답이 없어지고 전원을 껐다 켜면 다시 됐다.

Table of contents

Open Table of contents

간헐적으로 끊기던 통신

UART로 뽑히는 로그를 봤는데 끊기기 직전에 아무 예외도 없이 그냥 멈춰 있었다. 코드가 잘못됐으면 어딘가에 흔적이 남았을 텐데 그것이 없었다.

그래서 RF 부품 자체가 문제라는 생각이 먼저 들었다. 데이터시트를 다시 읽고 설정을 재확인하면서 제조사에 문의할 준비를 하기 시작했다.

준비하다가 잠깐 멈춘 이유는 이 결론이 비싸기 때문이었다. 부품 문제로 확정되면 문의하고 답을 기다리고 교체하고 다시 시험해야 한다.

그러는 동안 다른 원인이었다면 며칠을 그냥 쓰게 된다. 그래서 같은 증상을 낼 수 있는 원인을 먼저 목록으로 적어 봤다. 전원과 발열과 간섭과 RAM 부족까지 다섯 가지가 나왔다.

배제 순서를 확인 비용으로 정한다

목록이 나온 뒤에 어느 것부터 볼지를 정해야 했다. 가능성이 높은 순서로 볼 수도 있지만 그 가능성 자체가 짐작이다.

그래서 확인하는 데 드는 비용으로 순서를 잡았다. 삼십 분이면 확인되는 것을 며칠 걸리는 것보다 먼저 본다. 값비싼 결론일수록 그 앞에 배제해야 할 목록이 길어진다.

로그를 못 남기는 원인

목록을 순서대로 보다가 전원 쪽에서 걸렸다. 순간적으로 전압이 떨어지면 전류를 많이 먹는 RF 쪽이 먼저 멈춘다.

이런 원인은 UART로 나가는 로그에 아무것도 안 남는다. 자기가 죽는 순간을 기록할 수 없기 때문이다. 로그에 흔적이 없다는 것을 코드 문제가 아니라는 근거로만 읽고 다른 가능성을 안 본 것이 처음의 실수였다.

계측은 사고 전에 붙여 둔다

전압을 실제로 재려면 오실로스코프를 붙여 놓고 다음 사고를 기다려야 했다. 간헐적으로 나는 문제라 그 기다림이 며칠 걸렸다.

이후로는 이런 보드에 ADC로 전압을 읽고 I2C 센서로 온도를 읽는 것을 처음부터 붙여 두게 했다. 사고가 난 뒤에 붙이면 그다음 사고까지 아무것도 못 한다. ADC 한 채널을 더 쓰는 비용이 기다리는 비용보다 훨씬 작았다.

정리


Share this post on:

Previous Post
장비에 두 번 보내면
Next Post
문서 없는 장비의 통신 규격을 덤프로 알아냈다