Re: 有關程式問題
|
||||
---|---|---|---|---|
資深會員
|
struct {
unsigned RunMotor : 1; unsigned Minus : 1; unsigned unused : 14; } Flags; ":" 表示 佔用多少bit "="才是初始值設定.
發表於: 2009/4/12 21:17
|
|||
|
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
|
|||
|