본문 바로가기
코스웨어/14년 스마트컨트롤러

2014.05.30 업무보고 오영주 (출석번호 18번)

by 알 수 없는 사용자 2014. 5. 30.
728x90
반응형

 

 

 

 

- 왼 쪽 메인함수 설명 

- 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을 넣은 것이 맞는 지 확인하는 것이다).

 

이상으로 업무보고를 마치겠습니다.

 

 

728x90