FND를 제어하자 3 실무 노하우
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 자주 묻는 질문에 혹시 답이 있을 수 있어요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요. 임베디드를 공부하고 있는 수강생입니다. 좋은 강의 경청하고 있습니다. 감사합니다.
FND 제어 중 에러가 발생합니다.
main.c > while(1) >
for(int i = 0; i <= 9; i++)
{
digit2(i,0b0001,50);
}
}
만 실행했을뿐인데,
FND에 4칸 모두 불이 켜지고, 숫자가 올라가는 상황입니다.
수초마다 전체 FND에 점을 포함해서 불 빛이 다 들어오고 있습니다. ㅠㅠㅠㅠ
우문에 현답을 부탁드리겠습니다.
감사합니다. 정보가 완전치 못한 점 양해드립니다.

답변 2
1
저도 비슷한 문제가 생겨서
void send_port(uint8_t X,uint8_t port){
send(X);
send(port);
HAL_GPIO_WritePin(FND_RCLK_GPIO_Port, FND_RCLK_Pin,HIGH);
HAL_GPIO_WritePin(FND_RCLK_GPIO_Port, FND_RCLK_Pin, LOW);
}
RCLK동작을 LOW -> HIGH에서
HIGH->LOW로 하니깐 4자리까지 잘 동작하네요.. 왜그런지는 모르겠는데;...
1

제가 드린 자료에서.
\주변 장치 자료\FND 데이터 시트\쉬프트 레지스터를 보시면,
위 내용이 나오는데..
자세히 보니
HIGH->LOW가 맞는것 같네요-_-;;
평상시에 LOW로 있다가, HIGH로 가야하는 것 같네요.
상승 엣지에서, 데이터를 내보네고,
하강 엣지에서는 hold하고 있는다고 하네요.
그러니깐 평상시에 LOW로 있어야 하네요.
그래도 동작했던 이유는 어째던 SCK는 움직이니깐 동작한 것 같네요.
기존 코드가 잘 못 된것 같습니다.
죄송합니다.
1
저도 같은 문제가 있는데요,
refresh되면서 전체 불이 한번 다 들어왔다가 꺼지게 되어, 잔상으로 계속 켜져있는것으로 보이는 것 같습니다. 다만 딜레이를 주면 뭔가 보이긴 하는데, 잔상으로 여러자리가 보이지 않는 문제가 있네요. 여러자리를 출력하기 위해서 아래와 같이 해보는데 모든 LED에 불이 들어옵니다.
int n1, n2, n3, n4;
int n = 123;
n1 = (int) n % 10;
n2 = (int) (n % 100)/10;
n3 = (int) (n % 1000)/ 100;
n4 = (int) (n % 10000) / 1000;
for(int i = 0; i<=100; i++){
send_port(_LED_0F[n1], 0b0001);
send_port(_LED_0F[n2], 0b0010);
send_port(_LED_0F[n3], 0b0100);
send_port(_LED_0F[n4], 0b1000);
}
위와 같은 코드를 돌리면, 123이 떠야할거 같은데 123이 떠있는 것 같긴한데 모든 LED에 불이 들어와 있습니다. 왜 그런지 모르겠습니다.
해결책을 못찾겠네요.
도움 부탁드립니다.
0
안녕하세요.
일단 숫자 하나만 켜보는 코드가 동작하는지 확인해보실래요?
무조건 4개가 다 들어 오는지.
아니면 하나켜지는게 가능한지요 ㅇㅇ/
그리고 아래 상황도 한번 체크 해주시고, 그래도 문제 있으시면 연락 따로 주세요.
1. FND에 숫자가 무조건다 전체가 다 들어오는 상황인지.
2. 하나라도 제어가 되는 상황인지.
3. 혹시나 배선에 문제가 없는지 체크.
4. 기타 설정이 강의와 동일한지
5. 소스코드가 강의와 동일한지
0
하나만 켜는것은 전혀문제없습니다. GPIO로 하던지, 내장 SPI로 하던지 하나출력하고 딜레이걸면 잘작동하는데 저 코드처럼 계속 반복적으로 출력하게하면 다켜집니다. 뭔가 중간중간에 전체값에 0이 들어가는 refresh가 일어나는게 아닌가싶습니다.
0
한번 이렇게 해보실래요 ㅇㅇ?
제가 딜레이 넣으라는 곳에 딜레이를 조금 씩 넣어봐 주세요.
그리고 어떤 결과가 나오는지 좀 알려주세요.
혼자서 해보다가 안되면,
ohjiwan@gmail.com로 연락처 좀 보내주세요.
for(int i = 0; i<=100; i++){
send_port(_LED_0F[n1], 0b0001);
//딜레이를 넣어 보세요.
send_port(_LED_0F[n2], 0b0010);
//딜레이를 넣어 보세요.
send_port(_LED_0F[n3], 0b0100);
//딜레이를 넣어 보세요.
send_port(_LED_0F[n4], 0b1000);
//딜레이를 넣어 보세요.
}
0
send_port()사이에 HAL_Delay(1)을 주니까 그나마 좀 나아졌습니다.(불 들어오는 것 빼고 나머지는 약하게 불들어옴) 왜 그런지 간단하게라도 설명해주시면 좋겠습니다.
감사합니다!!
1
불을 넣었다 빼따 하면서 숫자를 만들고 있는 건데요.
너무 빠르게 불을 껏다 켰다 하니깐, 꺼진 순간이 너무 없는 거예요.
그래서 다 켜져 있는 걸로 보니는 거예요.
13강 프로젝트생성해보기 관련 질문
0
5
1
난방실만들기.4 진행 중, m_state 값 초기화가 안됩니다..
0
32
2
IDE 설치 영상 관련 문의
0
47
2
[정보 공유] STM32CubeIDE 버전별 이슈 정리 (1.19 미만 / 2.0.0 이상)
0
108
2
스위치회로 value값 바뀌지 않음
0
42
2
FND 점등에 성공했는데, Controller.c 디버깅 중 문제가 생겼습니다.
0
59
2
FND 7세그먼트 처음 킬 때의 '7777'불이 안 들어옵니다.
0
69
2
포트에 안잡히면 x쉘에서 Port설정을 어떻게 하죠..?
0
57
2
빌드 및 디버깅 오류
0
112
2
보드에 불이 안들어옵니다.
0
71
2
씽크 오류
0
54
1
고추건조기 개발보드 전원연결 문제점..
0
70
2
회로도 핀 연결 질문
0
66
2
elf 파일을 찾을수 없다는 오류
0
71
2
Nucleo 보드로 대체
0
84
2
구매해야 하는 물품 문의
0
94
2
ST-Link 디버깅 에러
0
83
3
강의 사용하시는 pdf는 어디에 있나요?
0
108
2
이전 질문 재질문입니다.!
0
74
2
다른 개발 실습 보드 사용문의
0
95
2
smt32 Cube Ide 설치관련 에러입니다
0
219
2
제가 1년전에 구매해서 이제 뜯어봤는데 납땜이 겹쳐있는데 사용해도 괜찮을까요?
0
93
2
타이머 최대 주파수 질문
0
64
2
초기 신호에 대한 질문
0
88
2





