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

20150422-27번-임현수 CTCmode Compare Match Interrupt, 함수포인터, vi 연습

by 알 수 없는 사용자 2015. 4. 23.
728x90
반응형
■ 회로 기초

어제까지는 일반모드
TCNT레지스터의 값이 00~FF까지 증가하다가 00으로 넘어갈 때 오버플로우 인터럽트를 요청하는 방식.

오늘 공부할 CTC모드는  
OCR레지스터에 특정값을 설정해둔 후,
TCNT레지스터의 값이 00부터 증가하다가 OCR레지스터의 설정값에 도달했을때 인터럽트를 요청하는 방식.

183쪽 그림2.2.24를 보면

OCN에서 토글이 일어나는부분이 인터럽트가 발생하는 부분이다. 그 외 기능은 일반모드랑 유사하다.

■ CTC모드 설정

  1. TIMSK Reg는 Output Compare Match Interrupt Enable에 맞춰 셋팅한다.
  2. TCCRnA Reg는 CTC모드, Toggle OCn on compare match에 맞춰 셋팅한다.
  3. TCCRnB Reg는 OCn에 출력 Enable, 분주비 1024에 맞춰 셋팅한다.
  4. OCRnX Reg는 목표값을 넣어준다.

■ CTC모드를 동작시키기위한 인터럽트 함수는 
ATmega2560 - 벡터21
ATmega128 - 벡터9(Timer/Counter 2 사용)


■ 소스코드



■ 결과




main.c


■ 시스템 제어



■ 함수포인터

함수의 위치를 가리킨다

포인터는 가리킬곳의 자료형에 기반한다
함수도 마찬가지다

함수의 자료형을 추출하는데 방법을 외워야한다.

원형 추출
  1. 함수원형을 메인안에 가져와서 이름을 지운다
  2. 지운자리에(*)을 삽입        // 여기까지 타입
  3. *뒤에 변수명을 써준다       // 여기까지 선언 
  4. 맨뒤에 = 함수명을 써준다   // 여기까지 초기화

▲ 배열이름자체가 주소인것 처럼 함수이름 자체가 주소다



■ 함수포인터로 printf, scanf 호출

▲ const char *는 문자열을 의미하는데 수정하지않는다는 의미.

■ 의미파악



■ 라즈베리파이 한글폰트 설치



■ vim 설치

 

 vi - visual editor (윈도우의 메모장같은)

기본적으로 3가지 모드가 존재한다
  1. 명령모드
  2. 수정모드
  3. 확장명령모드
기본적으로 명령모드이다.



▲ ESC눌러서 명령모드로 돌아온 후 :wq한다. wq는 write quit



 
윈도우는 옵션을달때 /를 붙인다
리눅스는 -o(output)를 붙인다






vi가 실행 될 때, 같은 디렉토리에 .파일명.txt.swp 라는 파일을 따로 만들어낸다. 일종의 백업파일 같은..

실수로 putty 강제종료를 한다던가등의 이유로 저장(:wq)을 안해버렸다고 가정하자.
다시접속해서 vi 파일명.txt를 실행하면 겹침 메시지가 뜬다.

:wq의 q가 입력되면 swp파일이 삭제되는데, 그렇지 못했기때문에 발생하는 현상이므로,
rm .파일명 으로 삭제해주면 된다.



728x90