Re: 如何讀寫 eeprom
|
||||
---|---|---|---|---|
新會員
|
Ryang 大大,eeprom 的部份,真的有看沒有懂=_=
我整理之後寫成以下程式段, Array[0:2]=address Array[3:18]=data 寫入16個byte -------------------------------------------------------------- asm ("push w7"); asm ("push w6"); //清除 row of date byte NVMCON = 0x4045; //清除1個row NVMADRU = Array[0]; NVMADR = Array[1]; NVMADR = (NVMADR<<8)|Array[2]; //寫入NVMKEY NVMKEY = 0x55; NVMKEY = 0xAA; NVMCON = NVMCONbits.WR = 1;//開始清除 while(NVMCONbits.WR);//等待清除完畢 for(i=0;i<16;i++)//載入所有資料到栓鎖器裡面 { WREG6 = SPI_Eeprom_byte[3+i]; WREG7 = NVMADR++; asm ("tblwtl.b w6, [w7] ; write the 8-bit byte"); } NVMCON = 0x4005; //寫入1個row NVMKEY = 0x55; NVMKEY = 0xAA; NVMCON = NVMCONbits.WR = 1;//開始寫入 while(NVMCONbits.WR);//等待寫入完畢 asm ("pop w6"); asm ("pop w7"); -------------------------------------------------------------- 讀取16個Byte -------------------------------------------------------------- asm ("push w7"); asm ("push w6"); NVMADRU = Array[0]; NVMADR = Array[1]; NVMADR = (NVMADR<<8)|Array[2]; for(i=0;i<16;i++) { WREG7 = NVMADR; asm ("tblrdl.b [w7] , w6 ;"); Array[3+i] = WREG6; NVMADR++; } asm ("pop w6"); asm ("pop w7"); -------------------------------------------------------------- 當然,這樣的程式不會動,想請問 Ryang大大, 哪個地方需要修改? 看不懂組語,又想盡量簡化程式. 囧
發表於: 2009/1/16 17:53
|
|||
|
Re: dsPIC30F2010 SPI 讀取問題
|
||||
---|---|---|---|---|
新會員
|
Ryang大大,昨晚try了一下,是的,是mode設定的問題,
在另一個mcu(master)設定00,但是dsPIC2010(slave)的 mode ,設定為10才可正常讀寫溝通, 感謝Ryang大的提醒,終於又有突破了!感謝!
發表於: 2009/1/15 9:58
|
|||
|
dsPIC30F2010 SPI 讀取問題
|
||||
---|---|---|---|---|
新會員
|
各位先進,目前小弟使用dsPIC30F2010 的 SPI 與其他 mcu 溝
通,實際傳輸如附圖, CH1 是 command , CH2 是 clock , CH4 是 NSS , 以上訊號皆由其他 mcu 傳入 2010 , command 是 0x22 , 2010 卻讀到 0x44 ,而由 2010 傳輸出去的 data , 外部 mcu 卻可以正常讀取,不會有差一個 bit 的情形, 2010 的 SPI1STAT 設定 0x8000 , SPI1CON 設定 0x0080, CKE:0 CKP:0 MODE16:0 MSTEN:0 ,當作 slave 使用, 是否哪裡沒設定好,導致 2010 讀取差1 bit , 但傳出卻正常? clock 為 500kHz . 先謝過各位先進,不吝回答. Attach file: (0.00 KB) (0.00 KB)
發表於: 2009/1/13 10:23
|
|||
|
Re: 請問 UART printf 使用問題!
|
||||
---|---|---|---|---|
新會員
|
浮點,有的喔,至於符不符合IEEE,我就不太清楚了,
因為 Keil 的 C 註解有底下這一行, f float Floating-point number formatted as « - »dddd.dddd.
發表於: 2008/10/27 17:10
|
|||
|
Re: 請問 UART printf 使用問題!
|
||||
---|---|---|---|---|
新會員
|
Ryang大大,
project -> Build Options -> Project -> MPLAB LINK30 裡面,我設定了 64 Bytes ,也是一樣的錯誤訊息, 試著加大或減小,仍無法消除錯誤, =_= 使用 printf ,我在 silicon lab 的 mcu 上,約莫增加 1KB 多, 好處是輸出格式很容易設定, 如果真的還是沒辦法使用,看起來, 就只能多花費點心思在uart 提供的 func.上面了. 感謝大大的協助. ^_^
發表於: 2008/10/24 17:24
|
|||
|
請問 UART printf 使用問題!
|
||||
---|---|---|---|---|
新會員
|
各位大大,
UART使用 printf 傳送資料至電腦,編譯時卻發生以下錯誤訊息, Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F2010 -c -x c "port_IO.c" -o"port_IO.o" -g Executing: "C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe" -Wl,"C:\desktop\ICD2test\port_IO.o",-L"C:\Program Files\Microchip\MPLAB C30\lib",--script="C:\desktop\ICD2test\p30f2010.gld",-o"Port_IO.cof",-Map="Port_IO.map" c:\program files\microchip\mplab c30\bin\bin\pic30-coff-ld.exe: Link Error: region program is full (Port_IO.cof section .text) C:\desktop\ICD2test\port_IO.o: Link Error: Could not allocate section .const, size = 18 PC units, attributes = psv data_init: Link Error: Could not allocate section .dinit, size = 314 PC units, attributes = code C:\desktop\ICD2test\port_IO.o: Link Error: Could not allocate section .text, size = 220 PC units, attributes = code default_isr: Link Error: Could not allocate section .isr, size = 2 PC units, attributes = code Link Error: Could not allocate program memory BUILD FAILED 於是編譯失敗,改用 putsUART1 ,可以正常編譯,而且執行, dsPIC30F2010 MPLAB IDE V7.50 C30 使用 microchip 下載的版本, 程式裡有include以下標頭, #include <p30F2010.h> #include <uart.h #include <stdio.h> stdio.h 是從 C30裡 copy 過來, 現在頭很大,因為寫 printf貫了,不大會使用 putsUART1, 還請各位大大協助幫忙! 謝謝.
發表於: 2008/10/24 13:55
|
|||
|