Re: 請教C30的疑問
|
|
|||
---|---|---|---|---|
資深會員
|
發表於: 2010/3/27 23:53
|
|||
|
Re: 請教有關於RS485的應用??
|
||||
---|---|---|---|---|
資深會員
|
我猜是因為接收資料的輸出腳(R)沒接上提升電阻所導致的.
做rs485通訊常會使用 SN75176 或 MAX485 當作介面 IC, 要注意的是 SN75176 或 MAX485 的接收資料輸出腳 (R), 它在 /RE 為 L 時當然是 H 或 L 的接收資料輸出沒問題, 但 /RE 為 H 時是會改變為 hi-Z 的狀態的. 以你所敘述的, 是將 /RE 與 DE 連接使用同一個訊號來控制接收或傳送. 這樣是希望在作傳送時本身不會接收到自己送出的資料. 的確, 接收的 R 在這時候不會是自己送出的資料訊號了, 但是它事實上卻是處於 hi-Z, 所以, 應該接上一個提升電阻(4.7K~10K , 應該很OK)以確保它的訊號為 H 的準位. ---------------------------------------------------------------------- ...會不會想說直接就將 /RE 接在 L 準位, 以避免它改變到 hi-Z 的狀態, 應該是可以的吧! 但是, 會接收到自己向外傳送出去的資料, 要注意... ----------------------------------------------------------------------
DRIVER
詳細資料請參考 SN75176 或 MAX485 資料手冊.
發表於: 2009/9/17 18:46
|
|||
|
Re: dsPIC33FJ32MC202與dsPIC30F3010之震盪器頻率與指令執行速度間之比例關係
|
||||
---|---|---|---|---|
資深會員
|
dsPIC33FJ32MC202 屬於 dsP33 系列.
Tcy = Tosc / 2 . (一個機械週期為2個震盪週期) 指令表中執行時間為1週期者, 花費兩個震盪週期的時間. (大部分指令) 執行時間為2週期者, 花費4個震盪週期的時間. 例1: 使用 XT 震盪模式, 10 MHz 震盪器, 則, Tosc = 10 Mhz, Tcy = 10 MHz / 2 = 5 MHz (0.2us) 指令 CLR f 執行時間為1週期, t = Tcy * 1 = 0.2 us 指令 BRA Expr 執行時間為2週期, t = Tcy * 2 = 0.4 us 例2: 使用 XT PLL震盪模式, 10 MHz 震盪器, PLL = 20 / ( 2 * 2) 則, Tosc = 10 Mhz * 20 / ( 2 * 2) = 50 MHz, Tcy = 50 MHz / 2 = 25 MHz (0.04us) 指令 CLR f 執行時間為1週期, t = Tcy * 1 = 0.04 us 指令 BRA Expr 執行時間為2週期, t = Tcy * 2 = 0.08 us ------------------------------------------------------------------------ dsPIC30F3010 屬於 dsP30 系列. Tcy = Tosc / 4 . (一個機械週期為4個震盪週期) 指令表中執行時間為1週期者, 花費4個震盪週期的時間. (大部分指令) 執行時間為2週期者, 花費8個震盪週期的時間. 例1: 使用 XT 8x PLL 震盪模式, 8 MHz 震盪器, 則, Tosc = 8 Mhz * 8 = 64 MHz, Tcy = 64 MHz / 4 = 16 MHz (0.0625us) 指令 CLR f 執行時間為1週期, t = Tcy * 1 = 0.0625 us 指令 BRA Expr 執行時間為2週期, t = Tcy * 2 = 0.125 us 例2: 使用 XT 8x PLL 震盪模式, 10 MHz 震盪器, 則, Tosc = 10 Mhz * 8 = 80 MHz, Tcy = 80 MHz / 4 = 20 MHz (0.05us) 指令 CLR f 執行時間為1週期, t = Tcy * 1 = 0.05 us 指令 BRA Expr 執行時間為2週期, t = Tcy * 2 = 0.1 us ----------------------------------------------------------------------- dsPIC33FJ32MC202 請看該手用中之 8.0 OSCILLATOR CONFIGURATION 8.1 CPU Clocking System 8.2 Clock Switching Operation 章節. dsPIC30F3010 請看該手用中之 20.0 SYSTEM INTEGRATION 20.1 Oscillator System Overview 20.2 Oscillator Configurations 章節.
發表於: 2009/9/7 22:35
|
|||
|
Re: dspic33fj128mc802 QEI 模組接腳在那阿?
|
||||
---|---|---|---|---|
資深會員
|
你好! 在dsPIC33FJ128MC202這個 IC 上,
其QEI模組的 QEA/QEB 是使用 PPS 設定的方式來配置在 RPn 的 I/O 腳上的. PPS 意思為 Peripheral Pin Select, 功用為將硬體模組的 I/O 可隨意的配置在標示為 RPn 的 I/O 腳位置上, 不像之前特殊功能 I/O 已配置在固定的腳位上那樣, 可更具彈性. 不只是硬體模組的輸入如此而已, 硬體模組的輸出也以相同的方式可自行配置到希望的 RPn 腳位上. 不過要記得將它一般 I/O 的部分設置成相同的 I/O 方向(輸入或輸出), 如果具 A/D 功能也需將其設成 digital I/O 使用. 注意要處理 PPS 設置動作前, 要先進行解鎖動作. 而設置好之後可以執行上鎖動作. __builtin_write_OSCCONL(0x45); __builtin_write_OSCCONL(0x57); asm("BCLR OSCCON,#6"); _U1RXR = 10; //UART1 的 RX 位於 RP10 的位置 _U2RXR = 11; //UART2 的 RX 位於 RP11 的位置 _SCK1R = 23; //SPI1 的 SCK 位於 RP23 的位置 _SDI1R = 25; //SPI1 的 SDI 位於 RP25 的位置 _RP12R = 3; //RP12 為 UART1 的 TX (功能編號3) _RP13R = 5; //RP13 為 UART2 的 TX (功能編號5) __builtin_write_OSCCONL(0x45); __builtin_write_OSCCONL(0x57); asm("BSET OSCCON,#6"); 詳細的內容 與 各功能編號之敘述請參考資料手冊中 I/O Ports 的章節內容即可明白. 而SFR暫存器名稱則請參考 .h 中的相關敘述.
發表於: 2009/7/21 22:39
|
|||
|
Re: 使用ICD2模擬都正常,但燒錄的IC動作確異常,不知識和原因?
|
||||
---|---|---|---|---|
資深會員
|
建議您設定 WDT = OFF, 然後重新燒錄一次試試看.
WDT 是 Configuration Bits 裡的一個設定項目. 可以在 Configure -> Configuration Bits 按下後開啟的選項視窗裡看到. 開啟選項視窗後, 可將所有選項上方之核取方塊的 v 消掉, 就可以在這個選項視窗中進行各選項的設定了. Oscillator 需設定為正確的項目, 使用內部 rc 時設為 Internal RC No Clock Watchdog Timer 沒有使用WDT時, 需令其為 off Master Clear Enable 使用MCLR作為reset時設為External, 要當I/O時設為Internal 其餘的項目不容易使晶片出現無法工作的現象. Power Up Timer 電源上升等待timer Brown Out Detect 電源低電壓檢查(On時,若為低電壓則會reset) Code Protect 程式碼保護(On時,程式碼無法被正碓讀出) Data EE Read Protect 資料EEprom讀出保護(On時,無法讀出) --------------------------------------------------------------------- 另外, 完成 DEBUG 後, 要進行正式的測驗及燒錄時, 請將 MPLAB 的執行模式選擇為 Release, 以除去Debug可能會使用的資源. 程式完成後, 最好將這些設定以敘述寫在程式中. 詳細內容請參考相關討論及 P16F630.INC 中的相關敘述
發表於: 2009/7/12 11:59
|
|||
|
Re: 程式疑難2
|
||||
---|---|---|---|---|
資深會員
|
我建議拿起電表量量是否有跟隔壁腳短路的情形...
發表於: 2009/4/8 20:05
|
|||
|
Re: 程式請教
|
||||
---|---|---|---|---|
資深會員
|
希望命令轉速(RPM1) > 實際轉速(RPM2) 時輸出 大一點OC1RS=588.8;
而實際轉速(RPM2) > 命令轉速(RPM1) 時輸出小一點 OC1RS=147.2; 只要直接如下即可: if(RPM1 > RPM2) OC1RS=588.8; if(RPM2 > RPM1) OC1RS=147.2;
發表於: 2009/4/7 21:17
|
|||
|
Re: 程式疑難
|
||||
---|---|---|---|---|
資深會員
|
使用 portb 之前停留在不正確的 bank 上了,
請多加上一行使它切換到正確的 bank. 大致如下:
BANKSEL TRISA
發表於: 2009/4/7 13:36
|
|||
|