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

EFM8 Port I/O, Crossbar, External Interrupts, and Port Match

by i.got.it 2015. 4. 9.

 

 

개요 - Port I/O, Crossbar, External Interrupts, and Port Match

 

 

- digital peripheral 할당을 위하여 Crossbar 가 사용된다.

- 각각의 핀마다 2가지의 출력강도 셋팅가능.

- INT0, INT1 로 고정된 외부핀 인터럽트 가능.

- Port Match 로 공유되는 최대 16개의 핀인트럽트 가능.

 

 

Port I/O 블럭도.



 

 

참조

EFM8 SB1 레퍼런스 매뉴얼 http://www.silabs.com/Support%20Documents/TechnicalDocs/EFM8SB1-RM.pdf 의 페이지 96~

 

 

 

 

 

 

Port I/O 모드 설정

 

port pin 설정은 펌웨어에서 SFR 을 통하여 이뤄진다. port i/o 초기화는 아래 흐름을 따른다.

 

1. 포트 핀의 input mode(digital 혹은 analog) 선택. PnMDIN 레지스터.

2. 포트 핀의 output mode (open-drain 혹은 push-pull) 선택. PnMDOUT 레지스터.

3. I/O crossbar 에서 skip 할 핀들을 지정. PnSKIP 레지스터.

4. 페리페랄에 할당할 핀 지정.

5. Enable Crossbar. XBARE = 1.

 

 

WEAKPUD

 XBR2, 비트 7에서 제어함. 0(default): weak pull up enable, 1: disable. 

 

Port 핀을 Digital input 으로 설정하는법.

1. 핀을 digital mode 로 선택. PnMDIN 레지스터에서 해당 핀에 1기록.

2. 핀을 open-drain  으로 선택. PnMDOUT 레지스터에서 해당핀에 0 기록.

3. 핀의 초기 래치값에 1기록. Pn  레지스터 해당핀에 1기록.

<- 핀을 digital 입력으로 사용하기 이해서는 3번 항목 중요함. 위 회로도에서 Px.x-output 값을 1로 하는 것이며 2에서 설정된 open-drain의 high - side 를 disable 하게 되어 핀을 입력으로 사용할 수 있게 된다.

위 설정을 펌웨어에서 레지스터를 직접 설정해도 되며, Simplicity Studio에서 Configurator  에서 핀을 입력으로 설정하기 위해서는 아래그림의 붉은 박스처럼 선택하면 된다. IOMode  를  Digital open-drain 과 동시에 Latch 값을 High 상태로 해둬야 한다.

 

 

 

 

 

 

 INT0, INT1

 

 Port 0 의 핀만  인트럽트 INT0, INT1 으로 설정가능.

 설정가능 인트럽트 종류 : falling edge, rising edge, low level, high level.

 interrupt pending flag.

 - Edge 검출인 경우 자동으로 0으로 초기화됨.

 - Level 검출인 경우 , 입력이 설정한 값이면 1, 설정한 값이 아니면 0.

 

 

 

 

 

 

 Port Match

 

Port Match 기능 : 1개 혹은 여러 개 핀의 로직값의 변화에 의한 인터럽트를 생성하게 한다.  저전력모드에서 wake-up 수단으로 Port Match 이벤트 사용가능.

- PnMATCH 레지스터에 저장된 값으로 연관된 포트핀(예: P0MATCH.0은 P0.0에 대응한다.)의 기대 혹은 정상 로직 값을 지정하게 된다.

- Port mismatch 이벤트 : 포트입력이 소프트웨어 제어값과 일치 하지 않을 때 발생. 

- PnMASK 레지스터로 핀개별적으로  PnMATCH에 비교 적용여부를 결정할 수 있다.

- A port mismatch event is generated if (Pn & PnMASK) does not equal (PnMATCH & PnMASK) for all ports with a PnMAT and PnMASK register. 

- port match 인터럽트는 edge 검출 안됨.

 

특정핀을 포트매치로 설정하는법.

아래 설정은 P1.5 를 Port match 용으로 설정하는 예를 보이고 있다.

1. 핀을 입력으로 설정하고, 아래 그림의 붉은 박스와 푸른색 박스.

2. Mask Value 를 Compare 로 한다. 즉, Port Match 비교과정에 본 핀을 사용하겠다는 의미.

3. Match Value 를 설정한다. 본 예에서는 Low를 설정했다. Port Match 이벤트는 P1.5의 입력이 High가 되는 시점 발생하게 된다. P1.5입력이 Low가 될때 발생하게 하려면 Match Value에는 High 를 기록하면된다.

 

 

 

 본 글이 포함된 상위 정리장소 : http://igotit.tistory.com/244

 

///254.

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5