国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 9134|回復: 11

關于串口通訊丟數問題的解決

[復制鏈接]
1#
發表于 2008-12-17 09:41:04 | 只看該作者 |倒序瀏覽 |閱讀模式
問題:51單片機在與電腦軟件通訊的過程中,通訊了100多次 多200多次的時候會出現丟數的情況' ^6 J0 l* ^& _, e
原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html; u7 o/ H# F9 K0 z9 N2 T5 k
4 _( N9 q1 Y9 [4 j6 d3 `& Y, m
解決辦法:實際上數并沒有丟 只是可能電路有時候不穩 造成了波特率的波動 導致了同步有點問題
( {, `# {; A" x' j) u原來的單片機程序:, \' b+ L' E5 d" Y, v: y
void main()
+ Y/ F7 ~3 a1 N0 e' U/ v% i2 R4 O& W{
" I/ S, N( G9 t+ {. H* C# l2 A5 I* C
9 F- B/ L7 V4 a3 t  W8 k    P1=0xff;! R2 P) A2 W- M
    main_init();& ?/ i6 e& k1 C( l% {. i5 m% f  |
    init_8253();
1 t8 a2 N1 m8 W, e8 e8 r8 {; @    serial_init();
) g) S* ?4 F0 i3 T6 Z( ~
/ Z, M; K, D" k! E) ?% h9 f7 Y8 q& X. z    while(1)
/ j8 u" H- R8 R0 V3 P    {  E# s1 |; T" h* L' s
        if(state >=3 )                     //state代表接收的字節數                 問題就出在這個判上,   0 K0 @' k* k  M/ ^/ z* H
                                                                                                       有時候就會發生            ) v% K6 J. |; }6 x8 L' y
          {                                                                                           state<3的情況,就是我所說* V) g& {  W; d
                                                                                                       的丟數,其實數并有丟  K$ E! j' q# B5 q
             ……                                                                                   我覺得從理論上講能通訊
1 f" P, S+ x+ V* S6 a# w                                                                                                      一次成功就通訊N次,, K5 b/ q+ E* y' U
                                                                                                      因為同一個循環……事
  m7 B) h/ R* @$ W. M9 Q2 C- S; p                                                                                                      實 證明錯了……       6 B, ^9 |' ^; \# t4 l. @! B
            }) m% g: F4 G/ Z. Q
     }
- \+ x3 M3 j: n+ C4 j. o}. y+ z( `- e7 T& K7 I

8 L# a! f8 X! d$ @. J9 p, K3 u; M5 S, {+ W  D, i, H
后來一直想為啥,在網上找了N久,終于發現有個類似的,于是在if之前多加了
* z: Q. |. |  n0 K1 R. @' gfor(timeout=0;timeout<800;timeout++); 就好了) D- }" H: M2 c4 }0 a1 @/ W

* A4 _* u- [" A' i- m5 U把經歷寫出來,可能問題很簡單,我很菜鳥,不過還是希望和大家分享……
4 |& I% T3 x% A% {4 @6 b' f& G9 |: Q* z9 R$ o" N
[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ]
回復

使用道具 舉報

2#
發表于 2008-12-17 09:55:11 | 只看該作者
現有的各種標準接口都不會丟數據,有時是信號電平不穩定,有時是傳輸問題,有時是傳輸干擾的問題,有時是同步問題,也可能是交叉問題,但數據應該不會是在接口中丟的,假如是你新設計的你自己的變換接口,都不太可能有這個問題,因為數學是非常死板的東西,以前用格雷碼變二進制或變其他的碼都是硬件,現在的接口有軟件問題,但數學公式是非常可靠的,
3#
 樓主| 發表于 2008-12-17 12:15:31 | 只看該作者
你從理論上講當然不會 但是以前 就有碰到過串口通訊會出現問題的電腦  這是我們時間過程中遇到的 后來都換了聯想的另一型號的電腦
. L7 _; P) V6 k8 A4 T$ q5 }7 s  C
還有 理論上認為不可能的事情發生了 你就不知道問題出在哪了
4#
發表于 2008-12-17 14:28:45 | 只看該作者
有些問題是不知道為什么,比如到高速DSP的時候,因為它的高速,牽涉到芯片里的一些問題,但對于串口的數據問題,肯定有非常明確的答案,絕不可能是一個誰都說不清的含混說法,再高的一些問題,比如到工業控制的DP網絡,有時也有各種問題,但一定有一個明確的說法,我的工程,我從來不接受含混的說法,到底是接地問題?是干擾問題?是隔離問題?是軟件問題?每次我都要明確說法。只有到芯片級的問題,才有不確定的說法。
5#
 樓主| 發表于 2008-12-17 14:49:12 | 只看該作者
那你對我的問題總結一個明確的說法?
6#
發表于 2008-12-17 15:03:48 | 只看該作者
我要是調試你的設備,就一定有明確的說法,! {; Z3 [7 r  g
以前,有人對我說怎么都不能穩定,當然,你用家用PC是穩定不了,: E% o  [& q0 X! f; i
電源不穩定也影響接口,1 {! B' F9 }) \% E& N
用觸屏的顯示亂跳,愣說沒辦法,什么沒辦法,單獨給我做接地,看還亂跳,$ w3 s- M* T4 j
有些就本身不是接口的問題,是電路電平的事,一接上就跳,得找到底什么地方電平不穩定,
+ P$ r5 q& ?. V  j5 a對于串口、并口、一般工業以太網、DP網絡等,我從來就不接受什么數據會丟的事情,煉著一爐鋼,你告訴我數據沒了,我相信不會有人接受這個說法,
& J* R9 P: U' Q& i4 E) r
7 H; W! x6 ~4 G9 U% @5 V8 w/ N4 _看你沒真正干什么事情,假如你做工程的過程控制,用串口還丟數據,問人家要說法,不知道你下面怎么樣,
7#
 樓主| 發表于 2008-12-18 09:55:01 | 只看該作者

回復 6# 過街蛤蟆 的帖子

哈哈  我是沒干過什么事情 不過我不知道你搞不搞模電和信號處理
/ V- E7 K: S# V, |) H1 J# T; n) B1 k' o
如果你搞過 那么我對你的什么都有確定的“說法”表示深深的佩服。
8#
發表于 2008-12-18 11:04:17 | 只看該作者
好像你有些要誤導我了,和我們先前說的接口傳輸也有些跑題了,& m9 t3 z5 S1 D8 \  S2 c5 q
: |7 s9 m) E/ ?. T3 i2 n3 t
我現在作的一個東西的壓力測量就是用一個高精度的壓力傳感器,經過模/數轉換,數字信號入機控制某些對象,模擬測量設備的誤差是自身的,有溫度的影響等,在一定范圍內可以補償,可以通過算法的某些系數進行修正,但數字變換以后的信號就是一個確定的信號,當電路電平符合傳輸要求和傳輸距離合適的時候,數字是不會有誤差的,即不會丟數據,要丟也是在模擬部分。0 y9 l+ T  a4 i- q9 m; Z
4 U, P6 T2 [2 f, ~( o# t
說事情,應按一個路說說下去,串口的數據丟失,和模轉及模擬信號的處理好像沒關系,轉數字電路以后,丟數據我絕對是要問明白,以前一些控制配套商也有你類似的說法,從熱電偶那里開始‘攪和’,都以為自動控制在中國是‘說不清’的事情,我從來不信這東西,到底是哪里的問題?肯定會搞明白的,不能以為大家都是混事的,是熱電偶問題?是補償線問題?是變換問題?是傳輸問題?不可能讓誰混過去的,我加熱和壓力控制水平精度是非常高的,
8 j' v% d/ Q4 ^3 T+ N  g; T$ Z$ J+ H. {
有些東西,要學習日本人,盡管某些方面我不喜歡他們,
9#
 樓主| 發表于 2008-12-18 15:24:04 | 只看該作者

回復 8# 過街蛤蟆 的帖子

嗯嗯  前輩誤會啦
1 C3 I* J6 k7 E2 [9 K
% m$ c' |4 k5 P$ D2 B  \5 V3 n只是我年輕氣盛……其實我說的說不清和你所說的要有一個明說的對象有點不同
% P! J5 t* ^! U& {: V, x3 C# D7 q
- d' t3 F6 T, C. {6 ^特別是在模電里邊 涉及到高頻信號和弱小信號放大的時候……有些飄忽不定的干擾真的不是你能說明白的,我確信……+ h, l* M8 J# p
也許你說的要有個說法我理解為做事的態度好點……是一種認真的態度,我認為比較好。
10#
發表于 2008-12-18 16:04:55 | 只看該作者
呵呵,你誤會了,說不上什么誤解,因為我們每年作不少的事情,各種東西都有,有時調試一個東西必須要做好,有時一個環節很大,常有自動化的人和我說怎么不行,有時我就是不信,該給我做接地的,該隔離的,用質量次的信號線的,什么都見過,我就是一個環節一個環節看,看到底問題在哪里,最后都能處理掉,即使是高頻的射頻信號,都要處理掉,有些是基板介電常數的問題,是玻璃布的含堿量和樹脂的問題,最終都能找到問題,為什么你給我用介電常數不合格的基板,6 c4 |& C, h" f' e) x7 Y4 W4 N/ u
) R7 q: N" M4 V+ W$ F2 E
我其實是要說,在我國現階段的設備,還沒到說不明白的程度,在工程里面,你看日本人什么樣,每個數據要寫出來,誰負責,數據沒處理好,你必須說為什么,
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-9-21 14:03 , Processed in 0.061702 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表