Re: dsPIC30f4011 A/D 問題
|
||||
---|---|---|---|---|
資深會員
|
我覺得你有空多練練 C 程式的基本寫作 對你會很有幫助 不過你有心做一些新的嘗試 還是值得鼓勵
加油
發表於: 2007/12/7 17:45
|
|||
|
Re: 亂數
|
||||
---|---|---|---|---|
資深會員
|
在 TCP/IP stack 裡有 random.c hashes.c 可幫你產生 random Byte
你也可參考 Numerical Recipes Chap 7 寫一個 http://www.nrbook.com/a/bookcpdf.php
發表於: 2007/12/7 17:42
|
|||
|
Re: Pic18f8622跟SPI 介面的rtc(ds1390)應用問題
|
||||
---|---|---|---|---|
資深會員
|
我又研讀了一下 ds1390 的 datasheet 我想問題在它的讀寫有兩種模式 分為 single byte 和 mutli-byte
single byte, 一個 address 配一個 data multi-byte, 一個 address 配連續多個 data 主要由 cs 信號控制 當 cs H->L, L->H 為一完整 cycle 所以當 H->L 永遠先送出 address, 接著傳 data, read or write. 每傳一個 data, address 自動加一 你的while loop 每次只傳 address 就結束 所以永遠讀不到東西
while(TRUE) {
若還不行 其他 trisc 的設定自己看看
發表於: 2007/12/7 14:54
|
|||
|
Re: dsPIC30f4011 A/D 問題
|
||||
---|---|---|---|---|
資深會員
|
*.c 檔只是 C 程式碼, 要經編譯 連結後做成 .hex 機器碼 才能燒錄到 chip 裡
不是改 c 檔 就會直接產生 hex 檔, MPLAB 是一開發環境 他會去看 project 的設定 去執行需要的編譯 或連結動作 當然主要目的是 產生 hex 檔 或 製作 library... 一般有做變動就需 重新 make hex 檔 有時用 build all 全部做一更新
發表於: 2007/12/7 14:32
|
|||
|
Re: 使用APP023-1 USART接收問題(18F8680)
|
||||
---|---|---|---|---|
資深會員
|
i found a short example in PICDEM FS USB
//RS-232 Setup for pic18 USB series
文中 TRISCbits.TRISC6=0, 他用的是 pic18 USB 系列 你自己斟酌看看 SPBRG, SPBRGH 要根據 Fosc 調整 參照:
TXSTA, RCSTA 請對照 data sheet, 跟你 PC terminal 的設定也有關 另一點 硬體插斷先 disable, 用軟體 polling 的方式 while(PIR1bits.RCIF==0); 這一步會等收到 data 才繼續 RCREG == 'r'; 或 temp = RCREG; 會去buffer 讀資料 並 clear PIR1bits.RCIF...
void TXbyte(byte data)
發表於: 2007/12/7 14:19
|
|||
|
Re: 使用APP023-1 USART接收問題(18F8680)
|
||||
---|---|---|---|---|
資深會員
|
DSW2 pin3,4 要 on
你由電腦送信號時 那 DSW2 旁的 LED16 (RX) 有沒有反應 LED15 是 TX 至於範例 有 Pic16 or dsPic30 右邊範例程式(29)有 pic16 的 pic18 我再找找
發表於: 2007/12/7 13:51
|
|||
|
Re: Pic18f8622跟SPI 介面的rtc(ds1390)應用問題
|
||||
---|---|---|---|---|
資深會員
|
程式範例
http://www.maxim-ic.com/appnotes.cfm/an_pk/3313 在 main() 裡面 GPIO_B_DR 就是 enable/disable 的信號 你注意 wbyte_spi() 和rbyte_spi() 的順序 putcSPI1() 對應 wbyte_spi() ReadSPI1() 對應 rbyte_spi() 當你要寫入 DS1390 時 第一個 為寫入位址 第二為資料 如 wbyte_spi(0x80); //select seconds register write address rbyte_spi(); // dummy read wbyte_spi(msec); // milliseconds register data rbyte_spi(); // dummy read 當你要讀 DS1390 時 第一個 為位址 第二為資料 如 wbyte_spi(0); // seconds register read address rbyte_spi(); // dummy read wbyte_spi(0); // dummy write msec = rbyte_spi(); // read milliseconds register 每一個 SPI 的輸出 靠 ReadSPI1() 來清除 BF (buffer full)的 flag 不管那讀入的資料有沒有用 這步驟千萬不能省掉 putcSPI1() 是靠 BF 來判斷動作是否完成 用完後須手動 clear BF, ReadSPI1() 會靠 read 的動作清除 BF SPI 是 duplex 所以你想要讀資料 事實上也需用寫出的動作 每一個對 DS1390 的操作 需要兩個 SPI 的 cycle 每一個 cycle 就要一組 wbyte_spi() 和 rbyte_spi()
發表於: 2007/12/7 8:29
|
|||
|
Re: dsPIC30f4011 A/D 問題
|
||||
---|---|---|---|---|
資深會員
|
void put_Num_LCD( unsigned int The_Number10 )
前幾行稍加修改 主要把 put_Num_LCD 的參數改為 unsigned int The_Number10 因 unsigned char 只能處理 8 bit 的資料 再來把原來的 The_Number 設為 1000 的餘數 則原來處理 3 位數的顯示程式可不用更動 然後取千位數 Temp_Char_1000 把他先顯示出來即可
發表於: 2007/12/7 7:26
|
|||
|
Re: dsPIC30F2020中如何用PWM觸發AD取樣
|
||||
---|---|---|---|---|
資深會員
|
參照:
-- Data Sheet -- TRIGx 指在第幾個 PWM clock count 產生一個 trigger TRIGDIVx 指在幾個 trigger 後產生插斷 TRGSTRTx 指在第幾個 trigger 後 才開始計數 ( 才開始算, 若TRGSTRTx=2, 則從第 2 個trigger 開始算為一, 所以 TRGSTRT 只用那麼一次, 在 disable PWM, 再 enable 後 才又從新開始) 當然一個 PWM 週期只會產生一個 trigger 我們可以控制幾個周期產生一個插斷 若是使用多個 PWM 可能同時產生數個 PWM 插斷 會造成 overload, 所以用 TRGSTRT 來分散插斷的 load 你只用一個 PWM, TRGSTRT 影響不大 Chap 30.38 有一詳例和圖
發表於: 2007/12/6 16:17
|
|||
|