Re: PIC16F1823 中斷應用
|
||||
---|---|---|---|---|
版主
|
1. 如果你有在主程式呼叫ADC轉換函數的話,那就不能在中斷裡有呼叫 ADC 函數的動作,因為當主程式呼叫 ADC 函數時,也 ADC 模駔正作用到抹個階段而被中斷的 ADC 搶宿執行權限,這樣會造成時正常時不正常的轉換動作。所以不可同時在主程式及中斷裡共同使用同一個函數。
2. 1us 的中斷似乎太快了,你先查一下PIC16F1823 的 Data Sheet 上所標示的最短取樣時間再加上 12tad 的轉換時間,這就是 ADC 真正所需的時間。PIC16F1xxxx 系列無法有這麼快的轉換時間。如過要這麼快可以找PIC18F Q 系列看看。不知道你的應用為何?需要到 1uS 的轉換時間。 3. 通常使用旗號來通知主程式做某件事情是很常用的也是必須學會的技巧。Timer1 是 Reload 的架構,建議改用 Timer2 。因為 Timer2 是屬於比較模式,計數器會自動歸零不用重新載入數值,可以縮短中斷處理的整體時間。 4. 先確定 ADC 函數可以在主程式下正常執再改成以ADC中斷放市執行方式執行,ADC 中斷函數只作兩件事 : 1. 清除 ADCIF 旗號 2. 將 ADC Result 存入Buffer 中 3. Return (只要將 while( ) 那行刪除)。
發表於: 2021/7/30 10:50
|
|||
|
Re: MCC4.2.1 設定 RE2 為輸入...但GEN CODE出來被設為輸出?
|
||||
---|---|---|---|---|
版主
|
因為看不到你在 MCC 裡所設定的腳位狀態。請參考一下貼圖後檢查一下你的腳位設定,尤其是 GPIO 所設定的是 Input 或Output 的功能。
發表於: 2021/7/28 9:47
|
|||
|
Re: MCC4.2.1 設定 RE2 為輸入...但GEN CODE出來被設為輸出?
|
||||
---|---|---|---|---|
版主
|
這隻腳的基本功能是 COM7/SEG34/RE2,是不是有使用到 LCD 的功能?
或者,你有使用 PPS 在規劃接腳時有用到這隻腳。
發表於: 2021/7/27 13:32
|
|||
|
Re: PIC16F18877的PWM 如何做出互補波型?
|
||||
---|---|---|---|---|
版主
|
剛檢視了PIC16F18877 他是PIC16F877A 的進階版,裡面的 Timer2 PWM 仍屬於傳統的架構,他無法有互補的輸出。但是可以在MCC 下使用 CLC 將 PWM 的內部輸出在 CLC 做反向輸出這樣就有互補的輸出。 但是此互補輸出沒有 Dead-Time Delay 功能,在做推挽輸出時要注意。
標準的 推挽式或橋式輸出 是 PIC16F684,他內部的模組是: ENHANCED
CAPTURE /COMPARE/PWM (WITH AUTO-SHUTDOWN AND DEAD BAND) MODULE。可以參考看看。
另外,與 PIC16F18877 腳位相容的元件 PIC18F45K22 它內建 Ehanced PWM Module (如附圖)。可以直接互補輸出 PWM.
發表於: 2021/7/22 12:12
|
|||
|
Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
|
||||
---|---|---|---|---|
版主
|
是的,一般最簡單 50% Duty 輸出的方法就是將 PR2 的值除二後寫入 CCPR1L 暫存器即可。但如需較精確解的析頻率還是要考慮 b1,b0。
發表於: 2021/7/15 10:10
|
|||
|
Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
|
||||
---|---|---|---|---|
版主
|
以下的程式是參考 PIC18F 的函數庫: pwm.c
使用 union 共用結構來拆出PWM Hi and Low Byte 的資料。
union PWMDC // pwm.h 中定義的 C:Program Files (x86)Microchipmplabc18v3.47h
這新的 PWM 更新值會在下一次 Timer2 中斷發生時載入 CCPR1H 做比較。
發表於: 2021/7/13 13:06
Edited by Ryang on 2021年07月13日 20:07:01
Edited by Ryang on 2021年07月13日 20:08:38 |
|||
|
Re: 16F819 CCP 模組用 PWM 工作模式時週期和 Duty Cycle 解析度不同的疑問
|
||||
---|---|---|---|---|
版主
|
Fosc 除四後產生四個機械周期:,這在震盪器的章節裡有解釋。
Q1 指令提取周期 Q2 解碼指令功能 Q3 執行指令 Q4 寫入/讀取記憶
發表於: 2021/7/9 16:27
|
|||
|
Re: 暫存器設定波浪號問題
|
||||
---|---|---|---|---|
版主
|
使用萬用標頭檔 xc.h 即可,pic.h 是他底下的檔案。xc.h 會自行判斷該抓哪一種檔案來用的。
要是還不行,那就要在 X IDE 下選擇你的專案的內容將 XC8 Compiler 裡的 include path 設定給 xc.h 的路徑及所以用的專案路徑。 參考 XC8T 的教育訓練。
發表於: 2021/7/9 14:40
|
|||
|
Re: Dspic33FJ64MC508A Timer1設定問題
|
||||
---|---|---|---|---|
版主
|
時勢所趨,較舊的元件沒有 MCC的支援,建議換一個較新的 dsPIC33CK256MP506 系列來玩玩。有 APP041 的實驗板可以配合 CAE 空中教室的 PIC1101 的教學課程。
http://www.microchip.com.tw/modules/t ... p?ncsn=2&nsn=41#PageTab11 PIC1001課程, 為基於學習 MCC(MPLAB Code Configurator)程式庫產生器 而開發, 課程中採用 APP041 實驗板, 並引入 PIM模組子板 概念,使用者可以透過購買不同的PIM模組子板, 來更換所需的MCU 8/16/32-bit 微控制器. APP041實驗板出廠已配置了 PIC24FJ128GB106 16-bit MCU, 而本課程會再搭配 dsPIC33CK256MP506 (APP041-3 PIM模組子板) 來上課, 為學習如何使用 MCC程式庫產生器, 提供了一個基礎且紮實的入門課程.
發表於: 2021/7/9 14:36
|
|||
|