-
20140507 (ADCL, ADCH, 광센서 실습, 서적관리 프로그램 구현)부산IT학원/스마트컨트롤러 2014. 5. 7. 12:30
55일차
--------------------
ATMega128 ADC
--------------------
--- 값이 바뀌지 않은 이유
이전 소스에서 ADCH를 먼저 읽고 ADCL을 읽었다.
ADCL을 읽을때, ADC Reg는 ADCH가 읽어질 때까지 업데이트 되지 않는다. 라고 한다.
해석이 맞는지 모르겠다;;
어쨌든 ADCL 을 먼저 읽고 ADCH를 읽어야 한다고 한다.
실습을 해봤는데 잘됐었다.
그런데 이전으로 바꿔서 다시 안되게 해봤는데
잘된다...;;; 이유를 모르겠지만 다음부터는 ADCL을 먼저 읽고
그보다 데이터시트를 잘 봤으면 좋겠다.(영어가 딸려ㅠㅠ)
--- 광센서
빛의 세기에 따라 저항값이 바뀌는 센서
--- ADLAR Reg
ADLAR Reg 의 값의 크기에 따라 조작하기 편하게 정렬을 하면 좋다.
ex)
unsigned int Adc_Run(unsigned char ucCh)
{
ADMUX = ADMUX | (ucCh & MASK_MUX); // Setting Channel.
ADCSRA = ADCSRA | (1<<ADSC); // to enable
while(0 == (ADCSRA & (1<<ADIF)) ); // to check ADIF bit.
return ADCL; // 모든 값이 다 읽어짐
return ADCH; // 상위 2bit만 읽어짐
return ((ADCL>>2)<<2); // 상위 2bit만 짤림. (최대값 1020)
}
- C
---------------
Linked List
---------------
--- 서적관리 프로그램 구현.
--- 함수 추가
- LinkedList.c
void Book_AllDel(Book * stpData)
{
Book * stpNext;
while(0 != stpData)
{
stpNext = stpData->next;
free(stpData);
stpData = stpNext;
}
}
Book * Book_Insert(Book * Head)
{
Book * stpNew;
Book * stpFront;
Book * stpRear;
stpFront = Head;
stpRear = Head;
stpNew = malloc(sizeof(Book));
Book_Stdin(stpNew);
while(0 != stpRear) // 삽입 위치 검색
{
if(0 > strcmp(stpNew->caTitle , stpRear->caTitle) ) // 삽입 위치 판단
{
break;
}
stpFront = stpRear;
stpRear = stpRear->next;
}
if(Head != stpRear) // 처음인지 그 이후인지 확인.
{ // 중간, 끝
stpNew->next = stpRear;
stpFront->next = stpNew;
}
else // 맨 앞
{
stpNew->next = Head;
Head = stpNew;
}
return Head;
}
void Book_Print(Book * Head)
{
while(0 != Head)
{
Book_Stdout(Head);
Head = Head->next;
}
}--- 현재까지 전체 소스
- LinkedList.h
- LinkedList.c
LinkedList.c
- main.c
main.c
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140509 (Interrupt Reg) (0) 2014.05.09 20140508 (Interrupt, 서적관리 프로그램 작성, open) (0) 2014.05.08 20140430 (ADC, 컴파일 -D 옵션, extern, static) (0) 2014.04.30 20140429 (PC와 시리얼 통신으로 LCD 문자 찍기, 사용자 정의 폰트, fseek, ftell) (0) 2014.04.29 20140428 (PC, ATMega128 간 시리얼 통신, fread, fwrite) (0) 2014.04.28