- 왼 쪽 메인함수 설명
- 10번 줄 system_init() 함수 호출 : 여러가지 초기화를 하는 함수로서, 아래 함수 정의부분 (26번 줄 이하)을 보면 엘씨디 초기화(LCD_INIT), 인터럽트 4,5 초기화, pc인터럽트 1초기화, 세븐 세그먼트 초기화, 타이머카운트 0 초기화를 하고 있다.
- while (1) 내부 : if문은 위의 sevenseg_print함수가 출력할 숫자 (cnum)가 반복문으로 점차
값소되어... 0이 될 때 다시 초기값 24로 되돌아 가도록 한다. 참고로 감소크기 (-1)은 ref=-1로 위에 선언되어 있다.
EEPROM은 아주 빠른 메모리로서 이를 접근하는 방법은, 관련 레지스터에 주소, 데이타, 접근방식 등을 설정해 줌으로서 가능하다.
아래 EECR은 EEPROM 접근방식을 나타낸다.
아래 코드를 보면 우선 EECR이 활성해 될 때 까지 기다린 후, EEAR에 접근하고자 하는 EEPROM의 주소를 입력하고, EEDR에 넣고자 하는 데이타를 넣는다. 그 후 프로그래밍 모드로 바꿔준 후에 다시 활성화를 시켜준다.
아래 read 함수도 위와 방식은 유사하나 차이점은, EECR에 EERE 비트를 활성화시켜 준 후 읽은 값을 반환하는 것이다. 읽는 함수이므로 읽은 값이 EEDR에 저장되며 이 레지스터를 반환하여 준다.
아래는 인터럽트에 대한 함수이다.
결론적으로, EEPROM이 들어갔다고 해서 전체 코드구성이 바뀌는 것이 아니다. 다만 값의 대입과 참조 과정이 좀 더 길어질 뿐이다.
즉, 'volatile+자료형+주소'='값'의 방식이 아니라,
'EEPROM 활성화비트=1',
'EEPROM주소 관련 레지스터'=주소,
'EEPROM데이타 관련 레지스터'=데이타,
의 방식이며 읽기의 경우에는 마지막에 읽은 값 EEDR을 반환,
쓰기의 경우에는 마지막에 EEMPE1비트에 1을 넣어 write only모드로 변환한 후 다음 EEPROM 사용을 위해 EEPE 비트에 1을 넣는다 (참고로, write 함수 초기부분에 EEPE1이 될 때 까지 기다린 것도, 이 마지막 줄의 EEPE 비트에 1을 넣은 것이 맞는 지 확인하는 것이다).
이상으로 업무보고를 마치겠습니다.
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014.06.03 업무일지 출석번호 21 이재우 (12) | 2014.06.03 |
---|---|
06.02 업무일지 [20. 이경진] (15) | 2014.06.02 |
추가보드 스위치 (0) | 2014.06.02 |
PCINT 9~13번을 이용한 7Segment 카운터 (0) | 2014.06.02 |
2014.05.29 교육보고 - 17번 오두환 (13) | 2014.05.29 |
ATmega 2560 7SEGMENT TIMER (0) | 2014.05.29 |
20140528 양태영 업무일지 16번 (13) | 2014.05.28 |
PCIR1 인터럽트 (0) | 2014.05.28 |