개요 - 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.
'임베디드.일렉트로닉스 > EFM8' 카테고리의 다른 글
EFM8 SB1 touch Profile (0) | 2015.04.20 |
---|---|
EFM8 플레시 프로그램 안될 때 최후의 조치법. (0) | 2015.04.19 |
EFM8 SB1 Real Time Clock (0) | 2015.04.09 |
EFM8 SB1 Power Mode.- normal, idle, suspend, sleep (0) | 2015.04.09 |
EFM8 SYSCLK 클럭 소스 선택, Divider 설정. 소비전류 (0) | 2015.04.07 |
댓글