해결된 질문
작성
·
215
1
질문은 아니고 FND 사용에 문제가 생겼었는데 해결해서
혹시 다른 분들도 참고하실 수 있을까 해서 남겨봅니다.
내용을 간단하게 요약하면
강의의 칩셋과 받은 칩셋이 다를 수 있으므로
칩셋이 같은지 확인하고
다르면 직접 데이터시트를 찾아서 비교해봐야 한다 입니다.
문제 발생
FND 사용 시 7세그먼트를 개별 사용하는 것은 문제 없음
2개 이상 사용시 문제가 발생함
S/W로 하나씩 키는것, 같은 숫자를 포트바꿔서 동시에 켜는 것은 잘 동작함
한 개를 켜고 그것은 유지한채로 다른 것을 켤 떄 문제 발생
관찰/원인 분석
digit2, digit4 같은 함수 사용시 세그먼트가 전체적으로 초기화(?) 되는 듯한 모습을 발견함 (숫자가 넘어갈 때 바라바라 떨리는 느낌)
이때 S/W문제가 아닌 H/W 문제이지 않을까 싶어서 칩셋 확인
하드웨어 칩셋을 확인하니 74HC595D로 강의와 다름
데이터 시트를 찾아보았더니 SCLK의 초기값 차이 발견
최종 원인
강의에서 안내한 시트 TM74HC595
강의의 칩은 SCLK의 기본값을 HIGH로 설정해야함
내 칩으로 검색한 시트 74HC595D
제 칩은 SCLK의 기본값을 LOW로 설정해야함
해결
IDE에서 PIN sclk의 output level을 LOW로 변경
send() 함수에서 sclk를 HIGH 후 LOW로 내리는 것으로 변경
답변 2
0
넵 이게 저도 사실 가물 가물 한데, 제가 잘 못 한 것 같아요.
그래서 제 기억으로 밑에 추가 설명을 해놨던것 같아요.
===== 추가 내용 ====
제가 드린 자료에서.
\주변 장치 자료\FND 데이터 시트\쉬프트 레지스터를 보시면,
위 내용이 나오는데..
자세히 보니
HIGH->LOW가 맞는것 같네요-_-;;
평상시에 LOW로 있다가, HIGH로 가야하는 것 같네요.
상승 엣지에서, 데이터를 내보네고,
하강 엣지에서는 hold하고 있는다고 하네요.
그러니깐 평상시에 LOW로 있어야 하네요.
그래도 동작했던 이유는 어째던 SCK는 움직이니깐 동작한 것 같네요.
0
안녕하세요, 인프런 AI 인턴입니다.
님의 공유해주신 내용은 임베디드 시스템 개발을 하시는 분들에게 매우 유용한 정보가 될 것 같습니다. 하드웨어 개발 시 칩셋의 차이로 발생하는 문제를 해결한 경험은 다른 개발자들에게도 큰 도움이 될 것입니다. 강의에서 사용한 칩셋과 실제 사용하신 칩셋 간의 차이, 특히 SCLK의 초기값 설정 차이를 잘 파악하고 대응하신 점이 인상적입니다.
이와 같은 문제 해결 과정에서 데이터시트를 꼼꼼히 확인하는 것의 중요성을 잘 보여주는 사례로, 하드웨어 프로젝트 시 반드시 체크해야 할 사항 중 하나임을 알려줍니다. 다른 분들도 해당 문제에 직면했을 때, 님의 해결 방법을 참고하여 문제를 해결할 수 있을 것 같습니다.
각 칩셋의 데이터시트를 비교하시며 발견한 차이와 그에 따른 해결 방안을 공유해 주셔서 감사합니다. 이러한 경험 공유가 다른 개발자들의 프로젝트에도 긍정적인 영향을 미칠 수 있기를 바랍니다.
다시 한번 귀중한 정보 공유해주셔서 감사드립니다.