본문 바로가기
임베디드.일렉트로닉스

pSoC / pRoC Watch Dog Timer 인터럽트 구현.

by 리치굿맨 2015. 4. 15.

 

 

개요

 

pSoC / pRoC의 WDT(Watch Dog Timer) 로 일정주기 인터럽트 발생시키기.

- WDT 는 통상 타이머 오버플로우 발생시 시스템 리셋용으로 사용하나 이것만이 유일한 활용은 아님. 

- 본 예에서는 WDT를 이용하여 일정 시간격 (1초) 으로 인터럽트 발생시키는 예를 보인다.

 

본 글에서 사용된 타겟보드 : pSoC4 BLE 킷트 -> http://igotit.tistory.com/260 

 (장착되어 있는 MCU품번 :  CY8C4247LQI-BL483 )

 

본 글에서 사용된 IDE : Creator 3.1 SP2.

 

WDT의 내부구성 (Creator 의 도움말 중 system_reference_guide.pdf 에 설명있음.)

pSoC 4100/4200/4100 BLE/4200BLE 인 경우 : 2개의 16bit counter(Counter-0, Counter-1), 1개의 32bit counter (Counter-2) 로 구성되어있다. 이들 counter 들을 서로 개별적으로 동작시킬 수 도 있고, cascade 로 동작시킬 수 도 있다.

 

 

 

 

 

 

 

구현.

 

 

단계1. 스키메틱에 Component 배치.

 

Creator 프로젝트의 Component 중 Global Signal Reference 를 스키메틱에 배치하고, 이름을 WDT로 변경하고, 인터럽트 컴포넌트 이름은 isr_wdt 로 변경했다.

출력핀 1개를 배치하고 Pin_LED_GREEN 으로 하였다. 개발킷의 3색 LED중 녹색에 할당된 핀번호인 P3.6을 할당해뒀다.



 

 

단계2 : 코드 추가.

 

간단한 시험목적이므로 main.c에 관련 코드를 모두 구현하도록 한다.

아래 붉박 1은 2에서 사용되는 값들이며, Counter-0 을 사용하며,  카운트 주기는 32768을 사용한다는 설정이 이뤄진다.

붉박 3이 WDT에서 인터럽트 발생시 수행되는 인터럽트 핸들러이다. 외부 LED는 매번의 인터럽트 발생시마다 직전 LED상태를 반전하여 출력하게 하였다.

 

소스코드 첨부 : main.c



 

 

 

 

 

동작확인.

 

인터럽트는 정확히 1초단위로 발생한다. 이때 외부 녹색 LED가 1초동안 켜진 상태로 유지되었다가 그 다음 1초동안은 꺼진 상태로 유지된다.

MCU의 소비전류도 같이 모니터하였다. SYSCLK=48MHz. LED구동전류는 제외된 전류이며, 전류 단위 : mA

 

 

 

 

 

 

 본 글이 포함된 통합 정리 : http://igotit.tistory.com/244

 

///261.

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT