|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
發(fā)現(xiàn)I2C軟件包中的bug |
| 作者:john1225cn 欄目:ARM技術(shù) |
我在一種狀態(tài)下讀取按鈕的時候,常常讀錯按鍵。 當(dāng)我在讀按鈕關(guān)閉調(diào)度就沒有問題了。 或者直接關(guān)閉timer0的時間中斷也是沒有問題的。 所以我認(rèn)為timer0的中斷對I2C軟件包有影響。I2C軟件包中的bug,但具體是怎么回事我沒有搞明白。以前我也沒有發(fā)現(xiàn)有這樣的問題。 請教/ |
| 2樓: | >>參與討論 |
| 作者: john1225cn 于 2005/4/14 14:20:00 發(fā)布:
怎么沒有人來給點看法? 怎么沒有人來給點看法???? |
|
| 3樓: | >>參與討論 |
| 作者: zlgarm 于 2005/4/14 14:31:00 發(fā)布:
您是在我們的板上運行嗎?如果是,請發(fā)代碼及工程給我們 * - 本貼最后修改時間:2005-4-14 14:31:50 修改者:zlgarm |
|
| 4樓: | >>參與討論 |
| 作者: john1225cn 于 2005/4/14 15:12:00 發(fā)布:
代碼 #include "config.h" #define XPLACE -0XA0000 #define YPLACE -0X80000 #define MOVEERR 0XF000 #define MINDIS 0X8000 OS_STK ScanInputStk[64]; OS_STK MovetoStk[64]; OS_STK MnpltStk[64]; OS_STK RstpwmStk[64]; OS_STK WorkStk[64]; OS_EVENT *MotorSem; OS_EVENT *MnpltSem; OS_EVENT *MoveMbox; OS_EVENT *MnpltMbox; int run[2],speed,place[10][2]={-0x20000,-0x20000, 0x30000,0x20000}; uint8 limit; uint32 current,former; uint8 tt; uint8 key; unsigned int Mnpltmode; uint32 t; int LocationX,LocationY; //////////////////////////////////////////////////////////////////// void ScanInput(void *pdata); void Moveto(void *pdata); void Manipulate(void *pdata); void DelayMS(uint32 dly); void Work(void *pdata); void DISPLAY(uint32 x,uint32 y); void SetPlace(void) { uint8 k; ZLG7290ShowChar(7,5); ZLG7290ShowChar(6,0XE); ZLG7290ShowChar(5,0X1E); ZLG7290ShowChar(4,0X1F); ZLG7290ShowChar(3,0X1F); ZLG7290ShowChar(2,0X1F); ZLG7290ShowChar(1,0X1F); ZLG7290ShowChar(0,0); while(key!=16) { key=ZLG7290GetKey(); if( (key!=0) && (key<11) ) { ZLG7290ShowChar(0,key); ZLG7290Wink(0); k=key; } if(key==16) { ZLG7290ShowChar(0,24); ZLG7290ShowChar(1,20); place[k-1][0]=LocationX, place[k-1][1]=LocationY; DelayMS(300); DISPLAY(LocationX,LocationY); } } } void speeddown(void) { if(speed!=0) { for(;speed>=1;speed--) { DelayMS(5); PWMMR0=t/speed-1; PWMMR1=10; PWMMR2=40; PWMMR3=10; PWMMR4=40; PWMLER=0X1F; } } } void speedup(void) { t=Fpclk*ACTIMERS/Fplus; for(speed=1;speed<=ACTIMERS;speed+=1) { DelayMS(5); PWMMR0=t/speed-1; PWMMR1=10; PWMMR2=40; PWMMR3=10; PWMMR4=40; PWMLER=0X1F; } } void DelayMS(uint32 dly) { uint8 i; for(; dly>0; dly--) for(i=0; i<100; i++); } void ResetPwm(void *pdata) { extern int run[2]; pdata=pdata; while(1) { OSTaskSuspend(OS_PRIO_SELF); T1TCR=0X0; if(run[0]==0) { if(run[1]>=0) LocationX=LocationX+T1TC; else LocationX=LocationX-T1TC; } else { if(run[1]>=0) LocationY=LocationY+T1TC; else LocationY=LocationY-T1TC; } speeddown(); OS_ENTER_CRITICAL(); PWMTCR=0X0A; T1TCR=0X00; |
|
| 5樓: | >>參與討論 |
| 作者: john1225cn 于 2005/4/14 15:16:00 發(fā)布:
說明,在板子上作的系統(tǒng)。 1.test.c 2.irq 3.target.c 在test.c中,按key1不動后是正常的,而按key2不動后,getkey有時候會返回0。我試了十次確實有這個問題。 |
|
| 6樓: | >>參與討論 |
| 作者: john1225cn 于 2005/4/14 15:33:00 發(fā)布:
給各郵箱吧,發(fā)SUPPORT返回錯誤呀 我把整個工程發(fā)給你 |
|
| 7樓: | >>參與討論 |
| 作者: zlgarm 于 2005/4/14 15:39:00 發(fā)布:
發(fā)給arm技術(shù)支持郵箱即可 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |