# 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]()