본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

인터럽트 1ms ISR 만드는 방법 (MCU TC275 CCU6 모듈)

by 바이너리 임베디드 2021. 11. 30.

인터럽트 1ms ISR 만드는 방법

 

저번 편에서는 TC275 시스템 클럭을 iLLD를 통해 설정했습니다.

이전 글을 보시지 못한 분은 먼저 이전 글을 이해하시고 오셔야 합니다.

 

https://cookbook.tistory.com/19

 

인피니언 MCU TC275 iLLD 라이브러리를 포팅하는 방법

저번 포스팅에서는 인피니언 AURIX TC275 Lite Kit 언박싱 해보았습니다. HighTec IDE 툴을 설치도 해보았습니다. EVB와 PC를 연결도 시켜보았습니다. 더 나아가 Example 프로젝트를 다운로드까지 

cookbook.tistory.com

https://cookbook.tistory.com/20

 

GPIO 제어하는 방법 1편 (Push-pull 모드, Open-drain 모드)

GPIO는 General Purpose Input Output이라고 하는군요. 우선 GPIO를 제어하기 위해서 GPO부터 한번 파헤쳐 보도록 하겠습니다. 그 다음편에서는 GPI를 파헤쳐 보고, 그다음에는 TC275 Lite Kit에서 어떻게 구현하

cookbook.tistory.com

https://cookbook.tistory.com/21

 

GPIO 제어하는 방법 2편 (Floating, Pull-up, Pull-down)

저번 편에서는GPIO에 대한 일반적인 설명과 GPO에 대해 자세히 다루어 보았습니다. Push-pull 모드와 Open-drain에 대해 어느정도 감을 잡으시기 위해서는 이전 글을 꼭 읽고 오시기 바랍니다. 오늘은 GP

cookbook.tistory.com

https://cookbook.tistory.com/22

 

GPIO 제어하는 방법 3편 (MCU TC275 LED 제어)

GPIO 제어하는 방법 GPIO 제어하는 방법으로 마지막 편입니다. 인피니언 Aurix TC275 Lite Kit EVB에서 GPIO를 통해 LED를 제어하는 방법을 살펴 보도록 하겠습니다. 미리 앞서 우리는 GPIO 설정을 하기 위해

cookbook.tistory.com

 

 

그리고 저번 미션은 CCU6 페리페럴을 사용해 인터럽트 1ms ISR을 만들어 보는것입니다.
해보셨나요?? 많이 어려우셨을것입니다. 
그래도 이번 시간에 배워서 내것으로 만들면 됩니다!
그렇다면 우리는 CCU6 페리페럴이 어떤 녀석인지부터 살펴봐야 할것 같군요. 
그럼 이쯤에서 등장하는 것은 레퍼런스 매뉴얼에서 CCU6을 찾아 스터디 해보는 것입니다.
레퍼런스 매뉴얼은 항상 우리의 친구이자 선배이자 멘토입니다.
항상 가까이 해야 합니다.ㅎ

인터럽트 1ms ISR을 만드는 모듈은 바로 -> CCU6

 


먼저 Introduction 부분을 훑어 보면서 이 페리페럴의 대표적인 기능은 무엇인지, Block Diagram을 보면서 어떻게 구성되어 있는지를 살펴 보아야 합니다. 
그래야 이 페리페럴의 전체적인 그림이 머리속에 들어오게 됩니다.

CCU6의 페리페럴의 약자를 풀어보면 Capture / Compare Unit 6이네요.
Capture 기능은 MCU에 달려있는 Input 핀에  PWM과 같은 시그널이 들어 오게 되면 주파수와 듀티의 크기를 알수있게 기능을 제공해주는 것이라고 보면 됩니다. 
Compare 기능은 MCU 내부에서 카운터 레지스터가 있고 카운터와 비교하는 Comparator 레지스터가 있어서  IRQ(인터럽트 리퀘스트)를 만들어 줄수 있는 기능이라고 보면 됩니다. 

우리의 목표는 1ms ISR을 만드는 것이었죠? 그럼 CCU6의 Compare 기능을 사용해 1ms IRQ를 만들어 보도록 하겠습니다.

인터럽트 1ms ISR 만드는 방법


CCU6 Block Diagram을 한번 살펴봅시다.  

Clock Control 박스에서 fcc6이라는 클럭을 사용합니다.
이녀석이 CCU6 페리페럴의 클럭이 된다고 보면됩니다.

T12  (Operating Timer 12)와 T13 (Operating Timer 13)이 Capture 기능과 Compare 기능을 담당하고 있습니다.
나머지는 T12와 T13 모듈에서 시그널을 Pin으로 주고 받고 있는 형태입니다.

이 CCU6모듈에서 T12와 T13이 가장 핵심인 모듈이므로 꼭 잘 이해하시기 바랍니다.

Interrupt Control 부분에서는 Interrupt를 발생시켜 주고 있습니다.

 

사실 CCU6 모듈은 인버터를 제어하기 위해 특별하게 만들어진 페리페럴입니다.

하지만 우리는 이 모듈을 통해서 인터럽트 1ms ISR을 만들어 줄 수 있기때문에 진행해 보도록 하죠.

T12에서 Compare 기능을 통해 1ms가 되는 시점에서 인터럽트 ISR을 만들어 보기로 하겠습니다. 



Clock Control

 

인터럽트 1ms ISR 만드는 방법



CCU6 페리페럴은 위 Clocking System을 살펴보니 fspb를 사용하고 있네요. 
그리고 지난 fspb값을 100 MHz로 설정했었습니다. 
기억이 안나시면 저번 편을 참고 하시기 바랍니다.

https://cookbook.tistory.com/23

 

MCU 클럭이란 무엇이고 설정하는 방법 (인피니언 TC275)

현재 인피니언 TC275 Lite Kit 개발 보드를 갖고 MCU의 세계를 살펴보고 있습니다. 저번 편에서는 LED 깜박깜박시키는 프로젝트를 진행해 보았습니다. 아직 못 보신 분들을 위해 링크를 남겨드립니다.

cookbook.tistory.com

 

그렇다는 것은 fspb = fcc6  = 100MHz임을 알수 있습니다.
현재 사용하는 클럭을 분석했습니다.


T12 ( Operating Timer 12 )




인터럽트 1ms ISR 만드는 방법

 

인터럽트 1ms ISR 만드는 방법



복잡해 보이지만 빨간색 박스만 위주로 살펴보면 어렵지 않습니다.
fcc6으로 들어오는 100MHz 클럭을 사용하기로 했습니다. 그리고 별다른 셋팅 없이 ft12로 연결됩니다. 따라서 ft12의 클럭도 100MHz입니다.

ft12의 1클럭 마다, Counter Register T12의 카운터 값이 0, 1, 2, 3, 4 ~~~ 증가 하게 됩니다.

Period Register에  10으로 셋팅한 경우,  ft12의 1클럭 마다 증가하게 되면서 Counter Register T12가 10이 되면, Period Match가 발생하여 T12_PM을 통해 ISR을 생성할수 있게 됩니다.
또한 Counter Register T12는 0으로 초기화 되어 동작하게 됩니다.

아주 중요한 핵심적인 내용입니다. 잘 이해하시기 바랍니다.

지금까지 인터럽트 1ms ISR을 CCU6모듈을 통해 구현해볼수 있는 이론을 살펴보았습니다.

 

 

 


Mission. LED의 동작을 1초마다 깜박이게 구현해보기! - CCU6모듈로 1ms ISR을 만들어 낼수 있는 구현해보기!



그럼 이제 CCU6 모듈 이론편을 이해해 보았으니 CCU6 모듈을 사용하여 구현해볼까요?
혼자 힘으로 해보는 겁니다!  화이팅!

 

모든 질문과 답변은 아래 카페에서 해드립니다.

많이 많이 방문하셔서 실력을 업그레이드 하세요.

 

https://cafe.naver.com/binaryembedded

 

임베디드 유니버스 : 네이버 카페

임베디드 유니버스 : 임베디드의 세계로 초대합니다.

cafe.naver.com

 

댓글