상세 컨텐츠

본문 제목

[TMS320F28388D] SYS/BIOS 4부 - Timer 생성하기

TMS320F28388D 공부

by Zin9 2023. 8. 19. 21:57

본문

728x90

 

 

[TMS320F28388D] SYS/BIOS 3부 - Swi 생성하기

[TMS320F28388D] SYS/BIOS 2부 - Task 생성하기 [TMS320F28388D] SYS/BIOS 1부 - 인트로, 프로젝트 생성하기 지난 번에 FreeRTOS를 소개했듯이 현업에서 개발하다보면, RTOS를 사용하게 되어있다. 지난 시간에는 CCS 프

zin9.tistory.com

 

 

[TMS320F28388D] SYS/BIOS 5부 - Hwi 생성하기

[TMS320F28388D] SYS/BIOS 4부 - Timer 생성하기 [TMS320F28388D] SYS/BIOS 3부 - Swi 생성하기 [TMS320F28388D] SYS/BIOS 2부 - Task 생성하기 [TMS320F28388D] SYS/BIOS 1부 - 인트로, 프로젝트 생성하기 지난 번에 FreeRTOS를 소개했

zin9.tistory.com

 

 

자 이제 Timer를 생성하고, Timer에서 swi를 호출해보자.

 

설계 순서는 다음과 같다.

1. 시스템 클럭을 200MHz로 설정한다. 왜냐하면 나중에 32kHz로 PWM을 돌리기 위함이다.
   (참고로, 컨트롤카드는 25MHz 오실레이터를 사용 중이다.)
2. Timer로 32kHz마다 Swi0_ISR 함수를 호출한다.
3. Swi0_ISR함수에서 1초마다 D2를 토글한다.
4. TaskA에서는 200ms 마다 D1을 토글한다.

자 main 코드를 먼저 짜보자.

전역변수를 설정한다.

<그림 1. Timer 전역 변수>

 

TaskB에서 swi0 호출 코드를 삭제하고, TimerC 함수를 작성한다.

TimerC에서 swi를 호출한다.

TimerC는 32kHz로 동작하므로, TimerC가 실행될 때마다 TimerCIntCount이 1씩 증가한다.

TimerCIntCount이 32가 되면 1ms가 되고, 이 때마다 TimerC1msCount가 1씩 증가한다.

<그림 2. Timer 함수>

 

 

시스템 클럭을 200MHz로 바꿔주자.

200MHz로 하기 위한 설정은 그림 3, 4를 참고한다.

 

<그림 3. 시스템 클럭 설정 1>
<그림 4. 시스템 클럭 설정 2>

 

그리고 TimerC를 사용하기 위해 Task - Timer를 설정한다.

200MHz 클럭에서 32kHz 실행으로 만들어 주기 위해서

Period를 6250 counts로 설정한다.

<그림 5. Timer 설정>

마지막으로 Swi0_ISR() 함수의 if 조건문을 변경해준다.

1초마다 토글하기 위해서 if 조건문을 바꾼다.

<그림 6. Swi0 ISR 함수>

 

 

 

 

 

GitHub - Zin9s/TMS320F28388D

Contribute to Zin9s/TMS320F28388D development by creating an account on GitHub.

github.com

 

728x90

관련글 더보기