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

論壇索引


Board index » All Posts (jason680)




Re: 有關程式問題
資深會員
資深會員


struct {
unsigned RunMotor : 1;
unsigned Minus : 1;
unsigned unused : 14;
} Flags;

":" 表示 佔用多少bit

"="才是初始值設定.

發表於: 2009/4/12 21:17
頂部


Re: 程式請教
資深會員
資深會員


我的意思是你寫的code跟你要的東西,感覺不一樣....

if((RPM1-RPM2)<RPM1)

假設 RPM1 = 7, RPM2 = 10
if (( 7 - 10 ) < 7)
=> if ( -3 < 7 ) => ture

反過來 RPM1 = 10, RPM2 = 7

if (( 10 - 7 ) < 10)
=> if ( 3 < 10 ) => ture

不管RPM1是大於小於 RPM2結果都相同

而其原因,就是
if((RPM1-RPM2)<RPM1)
正常而言(純數學而言)就等於
if(-RPM2 < 0)
跟RPM1一點關係也沒有,不知你看到了嗎?

發表於: 2009/4/8 10:18
頂部


Re: 程式請教
資深會員
資深會員


>>我將命令轉速(RPM1)和實際轉速(RPM2)作迴授比較
>>if((RPM1-RPM2)<RPM1)

感覺code與敍述有所不同
(RPM1-RPM2) < RPM1
兩者同減 RPM1
(RPM1-RPM2) - RPM1 < RPM1 - RPM1
最後變 -RPM2 < 0 (如果 RPM2為正,則永遠為ture)
好像與你所述不同

發表於: 2009/4/7 21:20
頂部


Re: 关键字static应用的疑问
資深會員
資深會員


問題一
基本static的相對是dynamic.沒有特別宣告的變數,
以dynamic看待,一般實作在dynamic上採用stack方式,
但單晶片能力有限,是否能實作出dynamic就不一定
(一般都是能力有限,甚至沒有資料用的stack),實作上則有所差別.
試試你正在用的windows或Linux之類的OS上的compiler
結果想必又不同.
(基本上,你在教課書及學校學到的compiler概念均以computer
為基礎,而非單晶片為基礎)
想想第一支printf("Hello world!!!\n"); --很多單晶片上是無效的.
(指的是"看"不到結果!!!)


問題二
延續問題一,static與實作有關,且你並沒有在宣告時給初始值.
所以有可能是static及dynamic結果一樣.

發表於: 2009/4/4 11:50
頂部


Re: TQFP 包裝燒錄方式
資深會員
資深會員


online燒入呢!!
尤其sample階段,要改程式.

發表於: 2009/3/31 20:30
頂部


Re: 關於石英震盪器的準確性
資深會員
資深會員


參照:

....
還是說做這樣的應用真的是要在震盪電路,或是在程式裡面做校正才能達到很準確,而不是只要用我們想像的"理論做法"就能達到的.

希望瞭解的人可以分享一下


以下是我們以前,做過要在"短時間"內,量測產品的時間準確性,所經歷的經驗,供你參考

當一般的準則無法適用時,所有原本大家"視為"忽略不計的值,
而你確不能忽略不計而且反而要斤斤計較時,
所有的東西,都要考慮,還要考量你要什麼!!??

你的產品(實驗最後的結果,要變成產品,商品化...)要求是什麼
1.精準度要求
A:簡單的講一天可以有多少誤差!!??
當初客戶要求1天內只能有一秒誤差.
B:多少PPM!!??
....
(要先知道理論值是多少,要不然,拿"公尺"為刻度,要量"公分",基本上是不可能.)
以客戶(最低)要求,1天不得誤差1秒.最差的情形就是 1/86400 = 11.6ppm.
一般要求最省成本,又可符合理論值,用10ppm xtal(還蠻常見規格)

>>但我目前測試的結果,累積四個小時之後誤差大概可以達到15秒之譜,那麼對於這樣的應用根本是不可接受的

定一下規格吧!! 什麼才是你能"接受"的.

如果你用PIC內部振盪頻率,再加校正,以PCI12F675為例其保證誤差為1%(相當10,000ppm,一天可誤差14分鐘多)...相信再怎樣也達不到你的要求.

2.當你量產時所有的東西,都要有檢測方法.(沒有量產也一樣,更要檢測)
你檢測的儀器就必需十倍於你產品的精確度.
雖然使用 10ppm的xtal,"理論"上,可符合客戶所要求之誤差.
但其產品,受到,RD設計,工廠製程,周邊零阻件誤差(layout線路,電阻,電容),干擾,溫度....等等因素仍有可能照成,不合標準.

而檢測方式,不外乎,使用
1. 117報時(人工)
2. 無線電校正,對時
3. 網路校正
4. 自製或廠商校正儀器...
以上以方法1. 117嘟聲測式,最為簡單.也最為可行.最大缺點"耗時",
此項,人工對時約有半秒之誤差左右,因此必需累計一周或十天以上,才能看出結果.
2. 無線電報時,需有無線電接收儀器及必需在無線電接受範圍內,且可收到.但仍需設計,自動偵測/量測誤差,其報時誤差是否可用在量測10ppm準備度,仍有疑問.種種問題需克服,故未採用.
3. 測試條件,於非使用於網路中,故不採用.
4. 在不知其他廠商有可符合此測試項目之設備,情形自行研製.

1.產生"高"準確度,1Hz(0.05ppm,10MHz)當參考依據.
使用高貴US $300 OSC(10Mhz, 0.05ppm 外加CPLD,使用12位數count, 手動設定補償至 誤差0.01hz以內---好像不必如此)
2.依"高"準確度1Hz為依據,與系統之時間相比,來比對時間誤差.
在每秒約可產生500K count程式中,各收集10秒,共5M count,
每差一個count其誤差約為0.2ppm.
兩者相比對,不可超過 20 count (10ppm)為判斷依據.

以上提供參考.

發表於: 2009/3/23 14:39
頂部


Re: a/d轉換
資深會員
資深會員


知其然,知其所以然.

如果把問題簡單化.答案很容易就會得到了.
假設所有的條件,都設成簡單的數值.

測0-1V, 只有1bit有效.
則可知
0 --表示 0 - 0.5以下
1 --表示 0.5到 1.

0到1 (兩個狀態),固 1V / 2 = 0.5 V是基本單位

同樣 0 - 1023 自然就是 1024階. 5V /1024 = base unit V

最後或許有人會提出問題.
測得最大值 1023 * base unit = 1023 * 5V /2024 = 4.995
有人提出你公式有問題...我明明給的是5V 或以上....

其實這是"認知"問題.....當 得到AD值X (X = 0 - 1023)
X * 5/1024 = Y
不代表輸入電壓 "只是" 等於Y值, 而是輸入電壓 = Y 到 Y+ base unit V

X = 1023 , Y = 4.995117
base unit V = 5/ 1024 = 0.0048828
所以輸入電壓 = 4.995117 至 5V

( 以上均是純理論,不談及誤差,準確度,穏定度...等問題)

發表於: 2009/3/11 18:10
頂部


Re: 請教PIC 的hex檔怎麼看
資深會員
資深會員


基本上這個檔HEX是通用檔案,以byte為單位,
至於你的MCU以byte, word, dword為單位,則是要自行轉換即可.

0x0010 (byte) /2 = 0x0008 (word)

所以除以2 (shift 1位)就是你要的位址了.

發表於: 2009/3/10 22:15
頂部


Re: 10kV ADC to PIC?
資深會員
資深會員


基本上PIC有內建(DC)ADC.
理論上,你要做的有10kV(AC) to 5V(DC)電路.
並注意....
1. 隔離
2. 干擾
3. 誤差值及精準度(10,12,...bits ADC)

恕本人沒有"高電壓實務經驗"

發表於: 2009/2/14 9:58
頂部


Re: 關於震盪器問題
資深會員
資深會員


//UxBRG = ( (7200000*2/9600)/16-1) = 92.75

基本上應是四捨五入,以減低誤差.當你的震盪器非整除時
此誤差是無法避免的.
應此公式最後應是 UxBRG = 92 則會產生誤差0.75--較大
若設UxBGR = 93,則是誤差0.25--較小

這裏提供一個自動四捨五入的概念
基本概念為
Y = int( X + 0.5);
基本上你設的UxBRG是"整數"型的資料型態,
故int是隱含的結果.
但有時整個運算過程都是"整數".結果然會錯.
例:原本
Y = int (380/30 + 0.5) = int(12.66 + 0.5) = int(13.16) = 13

若 整個運算過程都是"整數",則會變為
Y = int ( int(380)/int(30) + int (0.5) ) =int(12+ 0) = 12

這時應將除數的小數點,先保留,最後算出答案時,再調成對的整數值.
以下均以"整數"為運算過程不在寫出int
Y =( X + 0.5) = (10X + 5) /10

1.調整分母 (分母變小)
Y=(380/30 + 0.5) =(380/3 + 5 )/10
=(126 +5 )/10= 131/10 = 13

2.分母不能調時,調整分子 (分子變大)
Y=(380/30 + 0.5) =(3800/30 + 5 )/10
=(126 +5 )/10= 131/10 = 13

3.若除數中,有2,4,6,8..可直接出提出至外部
Y=(7/4 + 0.5) =(7/2 + 1)/2
Y=(7/4 + 0.5) =(7+ 2)/4

以上為小數一位四捨五入,二位數以下,則依此類推

發表於: 2009/2/11 0:50
頂部



« 1 ... 112 113 114 (115) 116 117 118 »



:::

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

教育訓練中心

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