Browsing this Thread:
1 Anonymous Users
|
Re: 關於震盪器問題
|
|
資深會員
Joined
: 2007/6/5 21:45 最後登入時間
: 2023/7/12 22:35
Group:
註冊會員
Level : 29 HP : 0 / 722 MP : 390 / 36550 EXP : 89
|
//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
|
|
|
關於震盪器問題
|
|
新會員
Joined
: 2008/6/10 16:30 最後登入時間
: 2009/2/10 20:16
Group:
註冊會員
Level : 2 HP : 0 / 28 MP : 3 / 1344 EXP : 12
|
我是使用模擬版APP020有參考曾百由老師的書上範例,關於UART範例問題,因為APP020是使用7.3728MHz的震盪器,所以他範例包率產生器數值為 /* Setup the Buad Rate Generator */ baudvalue = 95; //UxBRG = ( (FCY/Desired Baud Rate)/16) – 1 //UxBRG = ( (7372800*2/9600)/16-1) = 95 那我如果要自己做電路板但是震盪器選用7.2MHz時,包率產生器值是要改成為 baudvalue = 92.75; //UxBRG = ( (7200000*2/9600)/16-1) = 92.75 這樣改為小數沒問題嗎? 謝謝!!!
發表於: 2009/2/10 20:26
|
|
You can view topic.
你 不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.