2022年3月15日 星期二

[MCU單晶片 Q&A] ADC工作頻率

 

Question:
要怎麼知道Fosc 是16MHz呢? Fosc 是MCU的固定property 還是是個可以設置的參數呢?

Answer: 
這是外部提供 16MHz 的 Crystal oscillator
p.s. 可參考上課文件的的電路圖  (WengPICV2_sch.pdf )


2022年3月13日 星期日

[MCU單晶片 Q&A] 中斷

 

Question:

PPSunlock() 和PPSlock() 功能為何呢? 為什麼要用這兩個PPSunlock和PPSlock去包住RPI function? 使用PPSlock()和PPSunlock() 為什麼要把GIEH 中斷關掉呢? 因為沒看到文件上有這樣說明, 但是PPS 裡的function 有關掉中斷後面再回復的動作




Answer: 

   這是PPS 使用的規定, 如此才可以 remap Pin 腳功能, 
   可以參考PIC18F46J50 文件描述, 關於PPS 主題 10.7.4.1 Control Register Lock  

2022年3月9日 星期三

[MCU單晶片 Q&A] I2C 操作


[I2C 操作]
Question : 在I2C的START function 裡要先檢查SDA 是否已經為0,來決定是否進行後面是否要將SCL=0和SDA=1的動作,這樣和範例是藉由Din 來判斷是一樣的嗎? 而 Din 是SDA接腳的接收輸入接腳,為什麼要定義這個接腳呢?而沒有SCL的輸入接腳的定義




Answer : 
確認SDA 是否真的在Low level的狀態, 實際的作法是去讀取PORT 暫存器, 而不是去讀取TRIS暫存器. 為何在I2C START時,要判斷SDA為LOW呢? 因為我們進行I2C START動作, 是將SDA=1 (而原本SCL若在High), 則會變成多產生一個I2C STOP的動作,才再產生I2C START的動作。






Each port has three registers for its operation. These registers are:
  • TRIS register (data direction register)
  • PORT register (reads the levels on the pins of the device)
  • LAT register (output latch)