로 회전하며 제어하는 볼륨 switch를 지원하며, 인버터의 경우에는 encoder를 지원한다.즉, 증가형 encoders로부터 얻은 pulses를 실제 위치를 나타내주는 data로 변환해 준다.
GP timer block과 함께 사용되면, GP counter는 속도를 계산할 수 있게 된다.
GP counter는 다음과 같은 특징들을 가지고 있다.
1) 32-bit up/down counter.
2) Quadrature encoder mode(Gray Code)
3) Binary encoder mode.
4) Alternative frequency-direction mode
5) timed direction과 up/down counting mode.
6) zero marker/push button 지원.
7) GP timer와 함께 event timing capturing.
8) 경계선 비교와 경계선 setting.
9) Input pin noise filtering(debouncing)
10) flexible error 검출과 알림 기능.
그림 1 block diagram
CUD: count up and direction
CDG: count down and gate
CZM: count zero marker
PAB: peripheral access bus에 의해 프로세스와 인터페이스
GP counter는 다음과 같이 5개의 동작 mode를 가지고 있다.
1) Quadrature encoder mode :이 mode에서는 CUD:CDG input bits는 2-bit Gray code로서 해석되는 quadratureencoded
signal로 간주한다. CUD와 CDG inputs에 대한 전송의 순서는 증가형 counter
인지 감소형 counter인지를 결정한다. CNT_COUNTER register는 발생한 transition의
개수를 포함한다.
선택적으로 만일, 양쪽의 입력들이 하나의 SCLK cycle안에서 바뀌면 interrupt가 발생되
는데, 왜냐하면, 이와 같은 transition은 Gray Coding이 아니기 때문이다. 그러므로,
CNT_COUNTER register는 바뀌지 않고, 그대로 있으며, error condition을 알려준다.
예를 들면 다음과 같다.
2) Binary encoder mode :
이 mode는 단지, CUD:CDG input bits가 binary-encoded signal을 기대한다는 것을 제
외하고는 Quadrature encoder mode와 거의 동일하다.
이 mode는 단지, CUD:CDG input bits가 binary-encoded signal을 기대한다는 것을 제
외하고는 Quadrature encoder mode와 거의 동일하다.
3) Up/Down Counter mode :
이 mode에서는 counter가 input pints의 active edge에서대해서 증가 또는 감소된다.
이 mode에서는 counter가 input pints의 active edge에서대해서 증가 또는 감소된다.
CUD의 active edge가 검출되면 증가, CDG의 active edge에서 감소가 된다. CNT_CONFIG register의 CUDINV(CUD)나 CDGINV(CDG)이 0이면 rising edge가 active edge가 된다.
동시에 active되는 것은 고려하지않음
4) Direction Counter mode :
이 mode에서는 counter는 CDG input pin의 모든 active edge에 대해서 증가 또는 감소
하게 된다. 증가, 감소의 방향설정은 CUD가 한다.
5) Timed direction mode :
이 mode에서는 counter가 각각의 SCLK cycle에서 증가 또는 감소하게 된다. 증가, 감소의 방향설정은 CUD가 한다. CDG는 클록의 게이트역활을 한다.
이 mode에서는 counter가 각각의 SCLK cycle에서 증가 또는 감소하게 된다. 증가, 감소의 방향설정은 CUD가 한다. CDG는 클록의 게이트역활을 한다.
모든 modes에서 3개의 입력 pins는 GP counter logic에게 깨끗한 signals를 제공하기 위
해서 filtering될 수 있다.
[그림 2]는 GP counter control register인 CNT_CONFIG register를 보여주고 있다.
이 register는 peripheral을 enabling하는 것뿐만 아니라 counter modes와 input pins를 구
성하기 위해서 사용된다.
해서 filtering될 수 있다.
[그림 2]는 GP counter control register인 CNT_CONFIG register를 보여주고 있다.
이 register는 peripheral을 enabling하는 것뿐만 아니라 counter modes와 input pins를 구
성하기 위해서 사용된다.
그림 2 GP counter control register인 CNT_CONFIG
CZM input pin은 모든 counter modes에서 기능적으로 다음과 같이 4개의 programming
schemes가 존재한다.
1) Push button mode :
이 mode는 CNT_IMASK register안에 있는 CZMIE bit를 setting함에 의해서 enabling된
다. CZM input에서 active edge는 CNT_STATUS register 안에 있는 CZMII bit를 set할
것이다. 만일, system interrupt controller에서 enabling되면, 이것은 interrupt request를
생성할 것이다. 그 active edge는 CNT_CONFIG register 안에 있는 CZMINV bit에 의해
서 선택된다.
[그림 3]은 CNT_IMASK register를 보여주고 있다.
schemes가 존재한다.
1) Push button mode :
이 mode는 CNT_IMASK register안에 있는 CZMIE bit를 setting함에 의해서 enabling된
다. CZM input에서 active edge는 CNT_STATUS register 안에 있는 CZMII bit를 set할
것이다. 만일, system interrupt controller에서 enabling되면, 이것은 interrupt request를
생성할 것이다. 그 active edge는 CNT_CONFIG register 안에 있는 CZMINV bit에 의해
서 선택된다.
[그림 3]은 CNT_IMASK register를 보여주고 있다.
그림 3 CNT_IMASK register
[그림 3]으로부터 11개의 events가 processor에 전달될 수 있다는 것을 알 수 있다.
즉, interrupts는 CNT_IMASK register안에 있는 각각의 bits에 의해서 enabling된다.
2) Zero-marker-zeros-counter mode :
이 mode는 CNT_CONFIG register 안에 있는 ZMZC bit를 setting함에 의해서 enabling
된다. CZM input에서 active level은 CNT_COUNTER register를 clearing하고, CZM
input이 deactivating될 때까지 그것을 유지한다. 게다가, CNT_IMASK register 안에 있
는 CZMZIE bit에 이해서 enablinge되면, CNT_STATUS register 안에 있는 CZMZII bit
를 set할 것이다. 만일, peripheral interrupt controller에 의해서 enabling되면, 이것은
interrupt request를 생성할 것이다. 그 active level은 CNT_CONFIG register 안에 있는
CZMINV bit에 의해서 선택된다.
3) Zero-marker-error mode :
이 mode는 어떤 rotary encoder devices의 counter 값과 zero marker 출력 사이의 차
이를 검출하기 위해서 사용된다. CNT_IMASK register 안에 있는 CZMEIE bit를 setting
함에 의해서 enabling된다. 임의의 active edge가 CZM input pin에서 검출되면,
CNT_COUNTER register의 4개 LSBs는 “0”에 비유된다. 만일, 4개의 LSBs가 “0”가 아
니면, mismatch는 CNT_STATUS register안에 있는 CZMEII bit에 반영된다. 만일,
peripheral interrupt controller에 의해서 enabling되면, 이것은 interrupt request를 생성
할 것이다. active edge는 CNT_CONFIG register 안에 있는 CZMINV bit에 의해서 선택
된다.
4) Zero-once mode :
이 mode는 active zero marker가 검출되었을 때, counter의 값을 초기 reset값으로 바꾸
기 위해서 사용된다. 그 후에 zero marker는 무시된다. 이 mode는 CNT_COMMAND
register 안에 있는 W1ZMONCE bit를 setting함에 의해서 enabling된다.
CNT_COUNTER register와 W1ZMONCE bit는 CZM pin의 다음 active edge에서
clearing된다. 그러므로, W1ZMONCE bit는 event가 이미 발생했는지 check하기 위해서
읽혀질 수 있다. CZM pin의 active edge는 CNT_CONFIG register 안에 있는 CZMINV
bit에 의해서 선택된다.
[그림 4]는 CNT_COMMAND register를 보여주고 있다.
이 register는 GP counter를 구성하거나 counter register를 “0”화하고, boundary
registers를 복사 및 swapping하는 동작을 enabling한다.
CNT_COUNTER, CNT_MIN 그리고, CNT_MAX registers는 W1LCNT_ZERO,
W1LMIN_ZERO 그리고, W1LMAX_ZERO fields에 “1”을 writing함에 의해서 “0”로 초기
화될 수 있다.
즉, interrupts는 CNT_IMASK register안에 있는 각각의 bits에 의해서 enabling된다.
2) Zero-marker-zeros-counter mode :
이 mode는 CNT_CONFIG register 안에 있는 ZMZC bit를 setting함에 의해서 enabling
된다. CZM input에서 active level은 CNT_COUNTER register를 clearing하고, CZM
input이 deactivating될 때까지 그것을 유지한다. 게다가, CNT_IMASK register 안에 있
는 CZMZIE bit에 이해서 enablinge되면, CNT_STATUS register 안에 있는 CZMZII bit
를 set할 것이다. 만일, peripheral interrupt controller에 의해서 enabling되면, 이것은
interrupt request를 생성할 것이다. 그 active level은 CNT_CONFIG register 안에 있는
CZMINV bit에 의해서 선택된다.
3) Zero-marker-error mode :
이 mode는 어떤 rotary encoder devices의 counter 값과 zero marker 출력 사이의 차
이를 검출하기 위해서 사용된다. CNT_IMASK register 안에 있는 CZMEIE bit를 setting
함에 의해서 enabling된다. 임의의 active edge가 CZM input pin에서 검출되면,
CNT_COUNTER register의 4개 LSBs는 “0”에 비유된다. 만일, 4개의 LSBs가 “0”가 아
니면, mismatch는 CNT_STATUS register안에 있는 CZMEII bit에 반영된다. 만일,
peripheral interrupt controller에 의해서 enabling되면, 이것은 interrupt request를 생성
할 것이다. active edge는 CNT_CONFIG register 안에 있는 CZMINV bit에 의해서 선택
된다.
4) Zero-once mode :
이 mode는 active zero marker가 검출되었을 때, counter의 값을 초기 reset값으로 바꾸
기 위해서 사용된다. 그 후에 zero marker는 무시된다. 이 mode는 CNT_COMMAND
register 안에 있는 W1ZMONCE bit를 setting함에 의해서 enabling된다.
CNT_COUNTER register와 W1ZMONCE bit는 CZM pin의 다음 active edge에서
clearing된다. 그러므로, W1ZMONCE bit는 event가 이미 발생했는지 check하기 위해서
읽혀질 수 있다. CZM pin의 active edge는 CNT_CONFIG register 안에 있는 CZMINV
bit에 의해서 선택된다.
[그림 4]는 CNT_COMMAND register를 보여주고 있다.
이 register는 GP counter를 구성하거나 counter register를 “0”화하고, boundary
registers를 복사 및 swapping하는 동작을 enabling한다.
CNT_COUNTER, CNT_MIN 그리고, CNT_MAX registers는 W1LCNT_ZERO,
W1LMIN_ZERO 그리고, W1LMAX_ZERO fields에 “1”을 writing함에 의해서 “0”로 초기
화될 수 있다.
그림 4
댓글 없음:
댓글 쓰기