• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (jackielee)




Re: PIC18F4520 flash write
#1
初級會員
初級會員


感謝各位的回覆
有進一步的問題在請教各位
Thanks!!

發表於: 2009/3/31 0:01
頂部


Re: PIC18F4520 flash write
#2
初級會員
初級會員


Sorry 沒有說清楚
當開始erase all 0x0000~0x6FFF前
已經 先 disable interrupt and using polling mode來收rs-232的資料了
thanks

發表於: 2009/3/26 0:55
頂部


PIC18F4520 flash write
#3
初級會員
初級會員


Hi all:
PIC18F4520
我嘗試著做bootloader(自寫AP&PIC)
規劃如下:
rewrite area 0x0000~0x6FFF, 變動的程式及PICloader
reserved area 0x7000~0x7FFF,有rs232收發程式及table write
AP 命令如下
法一:
1. erase 32bytes
2. table write 8 bytes 四次
Repeat till whole 0x0000~0x6FFF
結果==>>成功\r

法二:
1. Erase 0x00~0x6FFF(AP下命令, PIC自行做)
2. PIC回OK
3. AP send 要write的第一組資料(8 bytes)
4. PIC no response.
結果==>>失敗

請高手賜教

發表於: 2009/3/23 0:44
頂部


Re: 關於USART的應用
#4
初級會員
初級會員


Hi all
自己回覆
自己找到解答
1. add code uwrite.c and uread.c 到project
2. 用#pragma code 訂定位址
Thanks

發表於: 2009/1/21 0:29
頂部


Re: 關於WriteUSART
#5
初級會員
初級會員


Hi各位
我發現問題了
因為table write 把ReadUSART Code erase掉
所以 接下來就收不到任何data了
感謝各位的幫忙

發表於: 2009/1/20 23:50
頂部


關於USART的應用
#6
初級會員
初級會員


Hi all:
自從解決上次的問題後
目前使用18F4520想做Bootloader
目前我可以使用自己的AP傳送data 到PIC端
但目前遭遇一些問題
我的flash layout 如下:
0x00 ------------------>0x6FFF|0x7000------>0x7FFF|
|<---code area--------------->|<---Boot Loader---->|
目前已可將WriteUSART() 從code area 移到 Boot Loader
目前收送OK
當我嘗試將ReadUSART() 從code area 移到 Boot Loader
Compiler OK 可以flash to PIC18F4520(透過ICD2)並放於bootloader區(0x7C00)
此時嘗試用AP傳data到PIC18F的UART, 但發現PIC端根本收不到(我確認AP端有發送資料, 用PORT Monitor軟體觀察)
請問我有什沒注意到嗎???
PS. ReadUSART() and WriteUSART() 從光碟片取得\mcc18\src\pmc_common\USART\Uread.c and Uwrite.c
感覺就欠臨門一腳了
請各位高手提供一下意見
萬分感謝
Jackie Lee

發表於: 2009/1/20 23:47
頂部


Re: 關於WriteUSART
#7
初級會員
初級會員


Hi 版主:
It's OK!謝謝.
現在遇到另外一個問題
我使用tableWrite 從0x00~0x6FFF
前面一直OK
但是 再寫到位址0x5E00時就發生PIC不回應命令的狀況
觀察 0x5E00這邊的code 主要是做Timer的控制
============================
TMR1H=0; // Clear out timer registers
TMR1L=0;
PIR1bits.TMR1IF=0;

if(config&0x80) // Enable interrupts if selected

PIE1bits.TMR1IE=1;
else
PIE1bits.TMR1IE=0;
===============================
我已經把不能 flash的code 搬往0x07000後
所以 應該不會有code over write 的狀況
請問,有任何建議嗎?
我是懷疑是不是CONFIG BIT是PROTECT MODE
但是 看起來又不像,列於其下
===============================
const rom unsigned char CONFIG1L=0xff ; /
const rom unsigned char CONFIG1H=0b00100010 ;
const rom unsigned char CONFIG2L=0b00000001 ;
const rom unsigned char CONFIG2H=0b00000000 ;
const rom unsigned char CONFIG3L=0xff ; /
const rom unsigned char CONFIG3H=0b10000000 ;
const rom unsigned char CONFIG4L=0b10000001 ;
const rom unsigned char CONFIG4H=0xff ; /
const rom unsigned char CONFIG5L=0b00001111 ;
const rom unsigned char CONFIG5H=0b11000000 ;
const rom unsigned char CONFIG6L=0b00001111 ;
const rom unsigned char CONFIG6H=0b11100000 ;
const rom unsigned char CONFIG7L=0b00001111 ;
const rom unsigned char CONFIG7H=0b01000000 ;
===================================
有任何建議嗎??
感謝 您的幫忙

發表於: 2009/1/20 2:09
頂部


關於WriteUSART
#8
初級會員
初級會員


版主您好
最近在做Boot loader tableflash練習
遇到一個問題請指教
在做tablewrite時data 是從USART收的
不過因為在write flash的過程中
會overwrite WriteUSART的code,導致program 不預期中斷
試過
將 C:\mcc18\src\pmc_common\USART\uwrite.c
並強制設定 位址
#pragma code 0x7000
void WriteUSART(char data)
{
if(TXSTAbits.TX9) // 9-bit mode?
{
TXSTAbits.TX9D = 0; // Set the TX9D bit according to the
if(USART_Status.TX_NINE) // USART Tx 9th bit in status reg
TXSTAbits.TX9D = 1;
}

TXREG = data; // Write the data byte to the USART
}
#pragma code
add 到pic's project
但是位置並無法如我想要的
有什麼方法可以處裡嗎??是不是compiler 還是去抓舊的呢??
可以像C018i.c的作法 將linker 檔中的obj path mark自己新增asource code 到project嗎??
請幫忙!!
Thanks

發表於: 2009/1/19 1:22
頂部


Re: C018 vs ROM
#9
初級會員
初級會員


THanks
I will keep looking on it.

發表於: 2009/1/5 21:30
頂部


Re: C018 vs ROM
#10
初級會員
初級會員


Hi 版主
問題已知, 應該是 Compiler問題
我將code拿到別台用一樣的環境就好了(後來自己PC重新安裝IDE&MCC18)
現有另一問題
就是我嘗試要自己寫Bootloader
現在擔心啟動程序 _startup_scn
會在OverWrite Flash時 被清掉
嘗試用pragma 定義
但是我發現 如果我強制定址==>>放到我自定保護區
Compiler OK(Code也放到0x6000)但是Code會有問題(無法正常啟動)
Fail code
==========================
#pragma code _startup_scn=0x006000
void
_startup (void)
{
/*省略*/
}
==========================
但是如果不定址
#pragma code _startup_scn
就是OK的
請問 有何方法呢

發表於: 2009/1/1 5:16
頂部



(1) 2 3 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------