2018년도에 Atmega128(JKIT-128-1)을 이용한 펌웨어 실습 과제로 제출한 자료

광센서가 일정 수치(FND 기준 1000)를 넘으면 부저에서 소리가 나도록 구현했었다.
결과물
* C++ / atmel studio로 작성
조도값 및 FND 제어 부분
아래 더보기는 다른 곳에 적어놨던 여담..
2018. 6. 2
ATmega128 조도계 만들기 (완료)
-조도센서 값을 불러와 FND에 출력
*오늘의 버그 노트
1. 일정 값을 넘기면 버저에서 삐- 소리 출력! <-이것을 어떻게 할 것인가
if문을 이용하여 FND Sel의 0x04(1000의 자리) 값이 0x06 (1) 이 되면 삐- 소리가 나게 제어하려고 했는데 1이 되어도 소리가 나지 않는다... 1000 이상으로 주면 타이머 1000번 돌 때 소리가 날 것 같아서 그렇겐 안 줬는데..
2. cds값 복사(고정)를 어떻게 할 것인가
스위치도 문제임! 인터럽트 2개 사용해서 1번 스위치는 값 복사 후 고정(멈춤)인데 리셋버튼 동작은 잘 되나 고정이 안 되고 누르면 값이 0이 돼버림.. 그리고 리셋 버튼 누르면 다시 풀리고.. 왜 값 복사가 안 될까..
*버그 수정 노트
1. if문 사용과 0x06은 맞았으나 위에서 정의한 FND Sel의 값이 아닌 함수 내에서 정의한 fnd[i]의 값을 비교문에 넣으면 됨
2. 복사 고정은 일단 위에 상태값들을 정의함. 나는 GO 1, STOP 0 이렇게 두 상태를 줬음.
GO(1)는 cds값이 막 변하는(계속 읽는) 상태, STOP(0)은 멈춘 상태로 생각하고 정의했음.
그 외에 복사할 변수(ccds로 정의), 받아서 읽는 변수(이 변수의 경우에는 ACD 값을 읽어오는 함수에도 들어가니 꼭 선언할 것)도 정의해주고 현재 상태를 state라는 변수로 준 후 그 변수를 GO로 정의.
인터럽트 INT4(하드웨어마다 다르겠지만 필자 키트는 4,5만 사용)안에 바로 state를 STOP으로 바꾸고 ccds=value(value 값을 ccds에 넣어라=복사해라)를 넣어준 후 main 함수 내의 FND 표시 함수 변수 넣는 곳에 value 대신 ccds를 넣어주면 고정이 된다.
'결과물' 카테고리의 다른 글
HTML5 개인 프로젝트(2023) (0) | 2023.11.26 |
---|---|
MFC 과제(2018) (0) | 2023.11.10 |
HTML5 과제(2017) (0) | 2023.07.09 |