인프런 커뮤니티 질문&답변

난다요님의 프로필 이미지
난다요

작성한 질문수

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

STM32에서는 SPI기능을 제공한다구 2

FND digit2 digit4 등 사용시 정상적으로 출력되지 않는 문제 해결법

해결된 질문

작성

·

177

1

질문은 아니고 FND 사용에 문제가 생겼었는데 해결해서

혹시 다른 분들도 참고하실 수 있을까 해서 남겨봅니다.


내용을 간단하게 요약하면
강의의 칩셋과 받은 칩셋이 다를 수 있으므로
칩셋이 같은지 확인하고
다르면 직접 데이터시트를 찾아서 비교해봐야 한다 입니다.

문제 발생

  • FND 사용 시 7세그먼트를 개별 사용하는 것은 문제 없음

  • 2개 이상 사용시 문제가 발생함

  • S/W로 하나씩 키는것, 같은 숫자를 포트바꿔서 동시에 켜는 것은 잘 동작함

     

  • 한 개를 켜고 그것은 유지한채로 다른 것을 켤 떄 문제 발생

관찰/원인 분석

  • digit2, digit4 같은 함수 사용시 세그먼트가 전체적으로 초기화(?) 되는 듯한 모습을 발견함 (숫자가 넘어갈 때 바라바라 떨리는 느낌)
    이때 S/W문제가 아닌 H/W 문제이지 않을까 싶어서 칩셋 확인

  • 하드웨어 칩셋을 확인하니 74HC595D로 강의와 다름

     

  • 데이터 시트를 찾아보았더니 SCLK의 초기값 차이 발견

     

 

최종 원인
강의에서 안내한 시트 TM74HC595

  • 강의의 칩은 SCLK의 기본값을 HIGH로 설정해야함

강의.png내 칩으로 검색한 시트 74HC595D

  • 제 칩은 SCLK의 기본값을 LOW로 설정해야함

나.png

 

해결

  • IDE에서 PIN sclk의 output level을 LOW로 변경

  • send() 함수에서 sclk를 HIGH 후 LOW로 내리는 것으로 변경

답변 2

0

ojtube5님의 프로필 이미지
ojtube5
지식공유자

넵 이게 저도 사실 가물 가물 한데, 제가 잘 못 한 것 같아요.

그래서 제 기억으로 밑에 추가 설명을 해놨던것 같아요.

===== 추가 내용 ====

image제가 드린 자료에서.
\주변 장치 자료\FND 데이터 시트\쉬프트 레지스터를 보시면,
위 내용이 나오는데..

자세히 보니
HIGH->LOW가 맞는것 같네요-_-;;
평상시에 LOW로 있다가, HIGH로 가야하는 것 같네요.

상승 엣지에서, 데이터를 내보네고,
하강 엣지에서는 hold하고 있는다고 하네요.

그러니깐 평상시에 LOW로 있어야 하네요.
그래도 동작했던 이유는 어째던 SCK는 움직이니깐 동작한 것 같네요.

0

안녕하세요, 인프런 AI 인턴입니다.

님의 공유해주신 내용은 임베디드 시스템 개발을 하시는 분들에게 매우 유용한 정보가 될 것 같습니다. 하드웨어 개발 시 칩셋의 차이로 발생하는 문제를 해결한 경험은 다른 개발자들에게도 큰 도움이 될 것입니다. 강의에서 사용한 칩셋과 실제 사용하신 칩셋 간의 차이, 특히 SCLK의 초기값 설정 차이를 잘 파악하고 대응하신 점이 인상적입니다.

이와 같은 문제 해결 과정에서 데이터시트를 꼼꼼히 확인하는 것의 중요성을 잘 보여주는 사례로, 하드웨어 프로젝트 시 반드시 체크해야 할 사항 중 하나임을 알려줍니다. 다른 분들도 해당 문제에 직면했을 때, 님의 해결 방법을 참고하여 문제를 해결할 수 있을 것 같습니다.

각 칩셋의 데이터시트를 비교하시며 발견한 차이와 그에 따른 해결 방안을 공유해 주셔서 감사합니다. 이러한 경험 공유가 다른 개발자들의 프로젝트에도 긍정적인 영향을 미칠 수 있기를 바랍니다.

다시 한번 귀중한 정보 공유해주셔서 감사드립니다.

난다요님의 프로필 이미지
난다요

작성한 질문수

질문하기