자 이제 Timer를 생성하고, Timer에서 swi를 호출해보자.
설계 순서는 다음과 같다.
1. 시스템 클럭을 200MHz로 설정한다. 왜냐하면 나중에 32kHz로 PWM을 돌리기 위함이다.
(참고로, 컨트롤카드는 25MHz 오실레이터를 사용 중이다.)
2. Timer로 32kHz마다 Swi0_ISR 함수를 호출한다.
3. Swi0_ISR함수에서 1초마다 D2를 토글한다.
4. TaskA에서는 200ms 마다 D1을 토글한다.
자 main 코드를 먼저 짜보자.
전역변수를 설정한다.
TaskB에서 swi0 호출 코드를 삭제하고, TimerC 함수를 작성한다.
TimerC에서 swi를 호출한다.
TimerC는 32kHz로 동작하므로, TimerC가 실행될 때마다 TimerCIntCount이 1씩 증가한다.
TimerCIntCount이 32가 되면 1ms가 되고, 이 때마다 TimerC1msCount가 1씩 증가한다.
시스템 클럭을 200MHz로 바꿔주자.
200MHz로 하기 위한 설정은 그림 3, 4를 참고한다.
그리고 TimerC를 사용하기 위해 Task - Timer를 설정한다.
200MHz 클럭에서 32kHz 실행으로 만들어 주기 위해서
Period를 6250 counts로 설정한다.
마지막으로 Swi0_ISR() 함수의 if 조건문을 변경해준다.
1초마다 토글하기 위해서 if 조건문을 바꾼다.
[TMS320F28388D] SYS/BIOS 6부 - CLA 생성하기 + 되새김 (0) | 2023.08.28 |
---|---|
[TMS320F28388D] SYS/BIOS 5부 - Hwi 생성하기 (0) | 2023.08.19 |
[TMS320F28388D] SYS/BIOS 3부 - Swi 생성하기 (0) | 2023.08.19 |
[TMS320F28388D] SYS/BIOS 2부 - Task 생성하기 (0) | 2023.08.18 |
[TMS320F28388D] SYS/BIOS 1부 - 인트로, 프로젝트 생성하기 (0) | 2023.08.18 |