해결된 질문
작성
·
230
0
안녕하세요,
어제(24/01/04)에 메일 드린 바 있습니다만, 수강게시판을 활용하는 것이 낫겠다 싶어 질문 드립니다.
몇몇 분이 겪으신 바와 같이 저 역시 FND의 4개 숫자가 동시에 켜지는 문제가 있었습니다.
fnd_controller.h, fnd_controller.c, main.c는 강사님이 동봉하신 코드를 그대로 복사했기 때문에
코드 문제는 확실히 아니었습니다.
그러던 중 아래 남기신 답변을 보고 HAL_Delay() 함수를 통해 겨우 해결했습니다.
다만 제 입장에서는 아래 두 가지 사항이 아직 명쾌하지 않습니다.
이런 상황이 왜 강사님께는 발생하지 않았는데 저에게는 발생한 것인지
제품의 불량이라면 교환이 가능한지
만약 제품 불량이 맞다면, 향후 FND를 개인적으로 다양하게 활용하기 위해 교환받고 싶습니다.
감사합니다.
답변 1
0
일단 제품 불량은 아니예요.
제품 불량인 경우가 한번 정도 있기는 했었는데요., 딜레이를 넣어서 제대로 되었다면 제품 불량은 아니예요. 제품 불량이면, 아예 안들어 오든가, 아니면 무슨 짓을 해도 4개 LED가 다켜지는 현상이 발생해요.
원인은 제가 직접 디버깅을 해야 명확하게 알수 있어요. 다만 의심가는 것들을 한번 이야기 해볼게요
1) LED로 여러 숫자를 나타내는 원리가 순차적으로 LED를 켰다가 껐다가 하면서 나타내는 것이예요.
근데 아무런 딜레이 없이 너무나도 빠르게 껏다 켜졌다 하면서, 숫자를 구분하지 못 할 정도가 되어 버린 경우가 발생했을 수도 있어요.
제 코드가 강의에서 잘 동작을 했다는 것은, 어디선가 필요한 딜레이가 발생하고 있다고 보면 될것 같아요. 타이머 인터럽트로 와따가따 하느라 발생할 수도 있고, Send함수에서 딜레이가 발생할 수도 있고요. 클럭 설정 자체가 느려서 적당히 딜레이가 되었을 수도 있어요.
2) 가능성은 낮지만.. senport함수 자체에 문제가 있을 수도 있어요.
sendport자체에 최소한의 딜레이가 필요할 수 있는데, 그것없이 너무 와르르 신호를 보내서 이런 문제가 생길수도 있어요. 이번의 경우는 아닐 확률이 높기는 한데, 보통 통신하다보면 많이 발생하는 문제라 적어 봤어요.
한번 이러한 관점에서 접근해보시고, 원인 찾는게 힘드시면 다시 한번 연락주세요 ㅇㅇ/
잘 알겠습니다. 답변 대단히 감사드립니다.