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

論壇索引


Board index » All Posts (davens)




Re: I2C的問題
#21
高級會員
高級會員


謝謝kbat524的建議,雖然程式上看起來好像是不會出現這個問題,不過我會去檢查看看是否是因為這樣出現這個問題。

發表於: 2007/6/6 18:31
頂部


Re: I2C的問題
#22
高級會員
高級會員


謝謝hellowanz的回覆,不過這個方法應該是行不通的,因為他還是需要在每隔0.5s來polling i2c slave來取得資料。我的客戶是跟我說,會出現這種狀況的時候,都是在訪問完address後在準備接收第一筆data時才會有這種情形發生。

發表於: 2007/6/6 18:14
頂部


I2C的問題
#23
高級會員
高級會員


小弟我最近遇到一個在I2C上的問題,就是我用ccs c寫了一個I2C slave 的程式及I2C master的程式個別燒錄在兩顆16f873A中,動作方式是由master發送一個address+R後,接收5筆data,我本身在測試的時候沒有問題,可是送到客戶端時,客戶他用他寫的master(非microchip的mcu)與我的slave做通信時卻發現,有機會將I2C SCL 拉為low而且是一直持續,並且使他的程式進入了死迴圈,然後就得reset電源,而且狀態是隨機出現的,可是小弟自己也在公司用自己寫的master程式,測試了一兩天就是不會有這樣的狀況發生,然後小弟我就去查datasheet上面說明只有在I2C 在準備資料要送出的時候會將SCL 拉為low只有到sspbuf裝好資料並且將ckp置為1時,SCL才會被slave釋放,然後我有稍微瞭解了客戶的程式,當他的程式進入死迴圈時,會先將scl釋放並且一直偵測scl是否pull high,以至於造成了他的程式出不了迴圈,所以當他把scl這條線由他的裝置上拔掉後,他的程式又能正常執行了,由這點來看,會造成這種現象的元兇應該是我寫的slave程式出了問題,可是我卻模擬不了他的狀況,所以想請問各位有沒有遇過這種情形,並且是否有什麼好方法可以解決呢,以下是我slave的程式片段希望給各位參考後能發現什麼問題。
#int_SSP // <-----進入i2c中斷副程式
void SSP_isr(void)
{ static byte m;
if(!bit_test(SSPSTAT,S))//stop??
{
if(bit_test(SSPSTAT,R_W))//read??
{
if(!bit_test(SSPSTAT,D_A))//address??
{
sspbuf=I2C_buf[0];
m=1;
}
else
{
sspbuf=I2C_buf[m];
m++;
}
}
}
bit_set(SSPCON1,CKP);

}


發表於: 2007/6/6 14:23
頂部


求救如何讓u2270b正常工作
#24
高級會員
高級會員


請問有人有用過u2270b這顆ic嗎
我現在使用這顆ic一直無法讓他正確的工作
無輸出信號

發表於: 2007/3/29 10:32
頂部


有關c語法的問題
#25
高級會員
高級會員


請問各位如何在c語法中得知我所宣告的陣列大小
例如我宣告了一個陣列如下

unsigned char array[10];
雖然我本身知道array裡面用了10個byte代表整個array的大小
但是如果我的程式中需要知道array是佔有10個byte,請問我該如何去得到這個10
例如我有一個function需要知道陣列的起始位址與陣列的大小,如下;
void function(unsigned char *array, unsigned char array_size);
除了我自己因為我本身在定義這個陣列時就知道這個陣列大小而在程式開頭自己用#define array_size 10外,請問還有什麼方法可以知道嗎?



發表於: 2007/3/21 10:18
頂部


有關link的問題
#26
高級會員
高級會員


我目前用mcc18寫了一個c的code
可是我想使用到ccs的lib,如果在不改寫的情況下,要如何將兩種編譯器所編出來的檔案,link在一起成為一個可以給mcu來執行的檔?
請問這種方法有可能實現嗎?如果可以,可以教我如何去做嗎?

發表於: 2007/3/15 11:44
頂部


Re: about 浮點數
#27
高級會員
高級會員


單精度浮點數以32個位元為單位
你可以參考http://www.csie.ntu.edu.tw/~kmchao/bcc05fall/ch02.ppt這分文件

3F 80 00 00
=00111111 10000000 00000000 00000000
最前面一個0代表符號0為正號,1為負號
接下來八個位元代表指數,所以01111111本應代表2^127
但是因為浮點數表達的是2^128 到2^-127的數
所以將00000000代表2^-127而11111111代表+128
那麼01111111就代表2^0
而剩下來的23個位元則代表尾數


所以1就表示為
1.0*2^0,1為正號所以第一個位元符號為0,指數部份為0所以指數表示誠01111111=127而尾數部份為零所以剩下的位元都補0
而原本的1你會看不到的原因是因為浮點數本身就必須將原來的數值化成1.xxxxxxx*2^y的形式,所以可以不用將1表示出來,而只需將後面的尾數表達出來(0.xxxxxx*2^y+1*2^y)所以在換算回來時勢必要自己知道他原來的表示方式是尾數乘以2^y並且要加上一個1*2^y

那麼2表示成1.0*2^1
2為正號所以第一個位元符號為0,指數部份為1所以指數表示成10000000=128而尾數部份為零所以剩下的位元都補0

那麼123.456表示成二進制為
1.929=(1+0.929)*2^6
因為為正號所以第 一個位元符號為0,指數部份為6所以指數表示成10000101=127+6,而尾數部份則為0.929的轉換成二進制為11101101110100101111001


發表於: 2007/3/14 10:17
頂部


Re: 堆疊的問題
#28
高級會員
高級會員


再請問板主一個有關c語法的問題如下
void function{void}
{
if(條件式)
{.....}
else if
{.....}
else<---- 一般接下來會有else這個判斷,請問如果拿掉是否就會造成堆上的錯誤?
{.....}
}


發表於: 2007/3/14 9:39
頂部


堆疊的問題
#29
高級會員
高級會員


請問如果使用堆疊時 過度堆入或過度推出會發生什麼情況呢?

發表於: 2007/3/13 12:49
頂部


Re: 請問有關timer3與timer1的問題
#30
高級會員
高級會員


謝謝大大的經驗傳承
目前以可count出正確的值了

發表於: 2007/3/12 18:54
頂部



« 1 2 (3) 4 5 6 ... 10 »



:::

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... ]

教育訓練中心

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