# Microchip(PIC30F4011)
- [time=June 20, 2020 15:55 PM]
- [color=#69e0e0] [name=Huang, Hsien-Chun ]
- [TOC]
###### tags: `Microchip` `pic30`
## Datasheet
- pdf載點至[datasheet](http://ww1.microchip.com/downloads/en/devicedoc/70135c.pdf)
## I2C Module Addresses
- 支持主從模式
- I2C Slave mode supports 7-bit and 10-bit addressing
- I2C Master mode supports 7-bit and 10-bit addressing
- The SCL pin is clock and the SDA pin is data.
##### I2C REGISTERS
1. ConfigIntUART1/ConfigIntUART2
- 設置uart中斷
```
void ConfigIntUART1(unsigned int config)
```
- config:
- 接收中斷允許:
UART_RX_INT_EN
UART_RX_INT_DIS
- 接收中斷優先等級:
UART_RX_INT_PR0
UART_RX_INT_PR1
UART_RX_INT_PR2
UART_RX_INT_PR3
UART_RX_INT_PR4
UART_RX_INT_PR5
UART_RX_INT_PR6
UART_RX_INT_PR7
- 發送中斷允許:
UART_TX_INT_EN
UART_TX_INT_DIS
- 發送中斷優先等級:
UART_TX_INT_PR0
UART_TX_INT_PR1
UART_TX_INT_PR2
UART_TX_INT_PR3
UART_TX_INT_PR4
UART_TX_INT_PR5
UART_TX_INT_PR6
UART_TX_INT_PR7
- example
```
ConfigIntUART1(UART_RX_INT_EN & UART_RX_INT_PR5 & UART_TX_INT_EN & UART_TX_INT_PR3);
```
2. OpenUART1/OpenUART2
- 對Uart進行設定
- config1:(UxMODE暫存器中要配置的參數)
```
void OpenUART1(unsigned int config1,unsigned int config2, unsigned int ubrg);
void OpenUART1(unsigned int config1,unsigned int config2, unsigned int ubrg);
```
- UART 致能 / 禁止
UART_EN
UART_DIS
- UART 空閒模式的工作
UART_IDLE_CON
UART_IDLE_STOP
- UART 使用備用引腳通信(部分才有)
UART_ALTRX_ALTTX
UART_RX_TX
- UART 起始位喚醒
UART_EN_WAKE
UART_DIS_WAKE
- UART 環回模式的使能/禁止
UART_EN_LOOPBACK
UART_DIS_LOOPBACK
- 輸入到捕捉模塊
UART_EN_ABAUD
UART_DIS_ABAUD
- 奇偶位和數據位選擇
UART_NO_PAR_9BIT
UART_ODD_PAR_8BIT
UART_EVEN_PAR_8BIT
UART_NO_PAR_8BIT
- 停止位的位元
UART_2STOPBITS
UART_1STOPBIT
- config2:(UxSTA 暫存器中要設置的參數)
- UART發送模式中斷選擇
UART_INT_TX_BUF_EMPTY
UART_INT_TX
- UART發送間隔位
UART_TX_PIN_NORMAL
UART_TX_PIN_LOW
- UART發送使能/禁止
UART_TX_ENABLE
UART_TX_DISABLE
- UART接收中斷模式選擇
UART_INT_RX_BUF_FUL
UART_INT_RX_3_4_FUL
UART_INT_RX_CHAR
- UART地址檢測使能/禁止
UART_ADR_DETECT_EN
UART_ADR_DETECT_DIS
- UART溢出位清零
UART_RX_OVERRUN_CLEAR
- ubrg:(要寫入UxBRG寄存器來設置波特率的值)
- example
```
baud = 5;
UMODEvalue =
UART_EN & UART_IDLE_CON &
UART_DIS_WAKE & UART_EN_LOOPBACK &
UART_EN_ABAUD & UART_NO_PAR_8BIT &
UART_1STOPBIT;
U1STAvalue =
UART_INT_TX_BUF_EMPTY &
UART_TX_PIN_NORMAL &
UART_TX_ENABLE &
UART_INT_RX_3_4_FUL &
UART_ADR_DETECT_DIS &
UART_RX_OVERRUN_CLEAR ;
OpenUART1(U1MODEvalue, U1STAvalue, baud);
```
## Timer
##### Timer REGISTERS
1. ConfigIntTimer1/ConfigIntTimer2/ConfigIntTimer3/ConfigIntTimer4/ConfigIntTimer5
- 對16位計時器進行配置
```
void ConfigIntTimer1(unsigned int config);
void ConfigIntTimer2(unsigned int config);
void ConfigIntTimer3(unsigned int config);
void ConfigIntTimer4(unsigned int config);
void ConfigIntTimer5(unsigned int config);
```
-
- config:
- 定義的計時器中斷優先級和允許/禁止信息:
Tx_INT_PRIOR_7
Tx_INT_PRIOR_6
Tx_INT_PRIOR_5
Tx_INT_PRIOR_4
Tx_INT_PRIOR_3
Tx_INT_PRIOR_2
Tx_INT_PRIOR_1
Tx_INT_PRIOR_0
Tx_INT_ON
Tx_INT_OFF
- example
```
ConfigIntTimer1(T1_INT_PRIOR_3 & T1_INT_ON);
```
2. OpenTimer1/OpenTimer2/OpenTimer3/OpenTimer4/OpenTimer5
- 對16位定時器模塊進行配置
```
void OpenTimer1(unsigned int config,unsigned int period)
void OpenTimer2(unsigned int config,unsigned int period)
void OpenTimer3(unsigned int config,unsigned int period)
void OpenTimer4(unsigned int config,unsigned int period)
void OpenTimer5(unsigned int config,unsigned int period)
```
-
- config:TxCON寄存器中要配置的參數
- 定時器模塊啟用/關閉
Tx_ON
Tx_OFF
- 定時器模塊在預設模式啟用/關閉
Tx_IDLE_CON
Tx_IDLE_STOP
- 定時器選通時間累加使能
Tx_GATE_ON
Tx_GATE_OFF
- 定時器預分頻比
Tx_PS_1_1
Tx_PS_1_8
Tx_PS_1_64
Tx_PS_1_128
- 定時器同步時鐘使能
Tx_SYNC_EXT_ON
Tx_SYNC_EXT_OFF
- 定時器時鐘源
Tx_SOURCE_EXT
Tx_SOURCE_INT
- period: PR 寄存器中的周期匹配值
- example
```
OpenTimer1(T1_ON & T1_GATE_OFF &
T1_PS_1_8 & T1_SYNC_EXT_OFF &
T1_SOURCE_INT, 0xFF);
```
## 參考資料
- [參考1]()
- [參考2]()