inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

FND제어 (실무 노하우) 3

FND를 제어하자 3 실무 노하우

해결된 질문

647

김준한

작성한 질문수 26

2

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 자주 묻는 질문에 혹시 답이 있을 수 있어요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요. 임베디드를 공부하고 있는 수강생입니다. 좋은 강의 경청하고 있습니다. 감사합니다.

 

FND 제어 중 에러가 발생합니다.

main.c > while(1) >

for(int i = 0; i <= 9; i++)

{

digit2(i,0b0001,50);

}

}

만 실행했을뿐인데,

FND에 4칸 모두 불이 켜지고, 숫자가 올라가는 상황입니다.

수초마다 전체 FND에 점을 포함해서 불 빛이 다 들어오고 있습니다. ㅠㅠㅠㅠ

우문에 현답을 부탁드리겠습니다.

감사합니다. 정보가 완전치 못한 점 양해드립니다.

KakaoTalk_20230704_223724502.jpg

 

임베디드

답변 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

ojtube5

image

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

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

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

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

기존 코드가 잘 못 된것 같습니다.
죄송합니다.

1

justgo

저도 같은 문제가 있는데요,

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

ojtube5

안녕하세요.
일단 숫자 하나만 켜보는 코드가 동작하는지 확인해보실래요?
무조건 4개가 다 들어 오는지.
아니면 하나켜지는게 가능한지요 ㅇㅇ/

그리고 아래 상황도 한번 체크 해주시고, 그래도 문제 있으시면 연락 따로 주세요.
1. FND에 숫자가 무조건다 전체가 다 들어오는 상황인지.
2. 하나라도 제어가 되는 상황인지.
3. 혹시나 배선에 문제가 없는지 체크.
4. 기타 설정이 강의와 동일한지
5. 소스코드가 강의와 동일한지

0

justgo

하나만 켜는것은 전혀문제없습니다. GPIO로 하던지, 내장 SPI로 하던지 하나출력하고 딜레이걸면 잘작동하는데 저 코드처럼 계속 반복적으로 출력하게하면 다켜집니다. 뭔가 중간중간에 전체값에 0이 들어가는 refresh가 일어나는게 아닌가싶습니다.

0

ojtube5

우선 제가 코드를 한번 보고 오늘 중으로 답변 달겠습니다.

0

ojtube5

한번 이렇게 해보실래요 ㅇㅇ?
제가 딜레이 넣으라는 곳에 딜레이를 조금 씩 넣어봐 주세요.
그리고 어떤 결과가 나오는지 좀 알려주세요.
혼자서 해보다가 안되면,
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

justgo

저대로 하면 숫자가 하나씩 명확하게 들어옵니다. 이렇게 되면 두자리 이상을 표현할 수가 없네요... 코드랑 영상찍어서 연락드리겠습니다. 감사합니다.

1

ojtube5

딜레이 숫자를 줄여보시면서 해보세요.

나중에 왜 이런지 제가 강의에서 설명해욤.

0

justgo

아하! 감사합니다. 한번 해보겠습니다ㅎ

0

justgo

send_port()사이에 HAL_Delay(1)을 주니까 그나마 좀 나아졌습니다.(불 들어오는 것 빼고 나머지는 약하게 불들어옴) 왜 그런지 간단하게라도 설명해주시면 좋겠습니다.

감사합니다!!

1

ojtube5

불을 넣었다 빼따 하면서 숫자를 만들고 있는 건데요.
너무 빠르게 불을 껏다 켰다 하니깐, 꺼진 순간이 너무 없는 거예요.
그래서 다 켜져 있는 걸로 보니는 거예요.

0

justgo

답변 감사합니다!!

0

ojtube5

위에 유인수님이 질문 하신 답변 한번 참조해서 수정 해보시겠어요?

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