久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

機械社區

標題: 關于串口通訊丟數問題的解決 [打印本頁]

作者: 卓信    時間: 2008-12-17 09:41
標題: 關于串口通訊丟數問題的解決
問題:51單片機在與電腦軟件通訊的過程中,通訊了100多次 多200多次的時候會出現丟數的情況; L% w8 k* E' a4 w& k" d6 B
原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html3 i- `. s7 h" _0 v  C, p

  o$ Z" p$ |3 S8 g* q8 E) ^  x解決辦法:實際上數并沒有丟 只是可能電路有時候不穩 造成了波特率的波動 導致了同步有點問題 ; ^, I6 c1 [& t. k% G6 R
原來的單片機程序:
$ n4 \) f" ~& n) _' gvoid main()% ^) @0 \$ `5 h$ Y, w* ?8 Z' @
{( z" }8 l' f+ P. C+ h5 W  s

' X0 Q4 J3 T# \  w    P1=0xff;
) ^5 F7 R& V* A  B: \    main_init();, ^1 `5 M0 g  q
    init_8253();* Y6 ?8 Q5 h4 N( m1 ?6 v2 }
    serial_init();
' |$ [2 N  p; ]0 ]/ b" Q' S# l
) m( s9 ], b1 v7 C5 i! L6 n) ]    while(1)& y5 C' W/ Q  n5 \
    {6 |% B. Z3 c: F2 P+ ~
        if(state >=3 )                     //state代表接收的字節數                 問題就出在這個判上,   2 O4 O$ `3 m* |/ M- ^
                                                                                                       有時候就會發生            & h( t- Z. q  B
          {                                                                                           state<3的情況,就是我所說0 [9 v: x+ K4 q  ?- ?# \1 Q& k# P2 ]
                                                                                                       的丟數,其實數并有丟3 |: i9 n: P* b
             ……                                                                                   我覺得從理論上講能通訊7 D: s$ \$ E( `3 A) O# z% Q$ s4 l* o
                                                                                                      一次成功就通訊N次,! U, Z' r4 Y8 W9 V- v& d( B! ?) o
                                                                                                      因為同一個循環……事
) o9 u0 B2 @& s0 S9 i                                                                                                      實 證明錯了……      
9 V0 m1 z2 F" {7 V6 v            }
9 ]! T) w' F6 c3 U' O- [" u     }+ F, @; w. m5 l0 D% F- ]7 Y
}' s2 J7 n8 q# u  b3 u

* w; w% X: F& A/ _) q" K0 B: I% Z% m! D: L% h7 z
后來一直想為啥,在網上找了N久,終于發現有個類似的,于是在if之前多加了5 a/ u7 N! O4 T$ T' a1 |/ L; }# u$ u- h
for(timeout=0;timeout<800;timeout++); 就好了8 k+ Z- R; N  `. M6 @6 X

+ S4 H. g% X% Z把經歷寫出來,可能問題很簡單,我很菜鳥,不過還是希望和大家分享……
( m+ `! K( b3 [: S1 L2 f, ]* w! J
: ?/ b* I9 D5 |; z5 q3 M[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ]
作者: 過街蛤蟆    時間: 2008-12-17 09:55
現有的各種標準接口都不會丟數據,有時是信號電平不穩定,有時是傳輸問題,有時是傳輸干擾的問題,有時是同步問題,也可能是交叉問題,但數據應該不會是在接口中丟的,假如是你新設計的你自己的變換接口,都不太可能有這個問題,因為數學是非常死板的東西,以前用格雷碼變二進制或變其他的碼都是硬件,現在的接口有軟件問題,但數學公式是非常可靠的,
作者: 卓信    時間: 2008-12-17 12:15
你從理論上講當然不會 但是以前 就有碰到過串口通訊會出現問題的電腦  這是我們時間過程中遇到的 后來都換了聯想的另一型號的電腦
; z3 x. P; k8 _% G# q1 ]5 S3 c$ N
' n% \; {( y' U& w. r) J- S還有 理論上認為不可能的事情發生了 你就不知道問題出在哪了
作者: 過街蛤蟆    時間: 2008-12-17 14:28
有些問題是不知道為什么,比如到高速DSP的時候,因為它的高速,牽涉到芯片里的一些問題,但對于串口的數據問題,肯定有非常明確的答案,絕不可能是一個誰都說不清的含混說法,再高的一些問題,比如到工業控制的DP網絡,有時也有各種問題,但一定有一個明確的說法,我的工程,我從來不接受含混的說法,到底是接地問題?是干擾問題?是隔離問題?是軟件問題?每次我都要明確說法。只有到芯片級的問題,才有不確定的說法。
作者: 卓信    時間: 2008-12-17 14:49
那你對我的問題總結一個明確的說法?
作者: 過街蛤蟆    時間: 2008-12-17 15:03
我要是調試你的設備,就一定有明確的說法,& q) g1 [) q! \* @2 X1 j: N9 v) g
以前,有人對我說怎么都不能穩定,當然,你用家用PC是穩定不了,
- U- v; ^0 m% a電源不穩定也影響接口,7 x( p! E7 r  {- U$ z! I9 A
用觸屏的顯示亂跳,愣說沒辦法,什么沒辦法,單獨給我做接地,看還亂跳,
; V& E' ?0 b; ^4 u/ \" w% U有些就本身不是接口的問題,是電路電平的事,一接上就跳,得找到底什么地方電平不穩定,$ g3 a  w: P1 R! x5 a2 a; K
對于串口、并口、一般工業以太網、DP網絡等,我從來就不接受什么數據會丟的事情,煉著一爐鋼,你告訴我數據沒了,我相信不會有人接受這個說法,8 y% p6 Y4 q, y+ C$ E, ~# ]8 S$ v
8 O' S% K6 o4 N
看你沒真正干什么事情,假如你做工程的過程控制,用串口還丟數據,問人家要說法,不知道你下面怎么樣,
作者: 卓信    時間: 2008-12-18 09:55
標題: 回復 6# 過街蛤蟆 的帖子
哈哈  我是沒干過什么事情 不過我不知道你搞不搞模電和信號處理
& E' L/ O. c- {; t
1 b( }, K% h- D. M) }+ c如果你搞過 那么我對你的什么都有確定的“說法”表示深深的佩服。
作者: 過街蛤蟆    時間: 2008-12-18 11:04
好像你有些要誤導我了,和我們先前說的接口傳輸也有些跑題了,
4 a+ @% l' m/ W# g
3 L1 v. l  [7 v1 Y我現在作的一個東西的壓力測量就是用一個高精度的壓力傳感器,經過模/數轉換,數字信號入機控制某些對象,模擬測量設備的誤差是自身的,有溫度的影響等,在一定范圍內可以補償,可以通過算法的某些系數進行修正,但數字變換以后的信號就是一個確定的信號,當電路電平符合傳輸要求和傳輸距離合適的時候,數字是不會有誤差的,即不會丟數據,要丟也是在模擬部分。5 K+ V: |( R6 N) e: T8 y9 m
" Z% I& Y4 G% g8 m4 Z9 U# S
說事情,應按一個路說說下去,串口的數據丟失,和模轉及模擬信號的處理好像沒關系,轉數字電路以后,丟數據我絕對是要問明白,以前一些控制配套商也有你類似的說法,從熱電偶那里開始‘攪和’,都以為自動控制在中國是‘說不清’的事情,我從來不信這東西,到底是哪里的問題?肯定會搞明白的,不能以為大家都是混事的,是熱電偶問題?是補償線問題?是變換問題?是傳輸問題?不可能讓誰混過去的,我加熱和壓力控制水平精度是非常高的,0 A% l" L* ]9 D3 z% c# e. S- C  }
  B( m/ }6 @$ K) T2 [- J2 r
有些東西,要學習日本人,盡管某些方面我不喜歡他們,
作者: 卓信    時間: 2008-12-18 15:24
標題: 回復 8# 過街蛤蟆 的帖子
嗯嗯  前輩誤會啦
# p' D  I$ k+ S6 Q% T% e( N. j. c9 P
只是我年輕氣盛……其實我說的說不清和你所說的要有一個明說的對象有點不同0 y9 ], Z/ N/ K+ T

! A; l: |# ]  ^# r特別是在模電里邊 涉及到高頻信號和弱小信號放大的時候……有些飄忽不定的干擾真的不是你能說明白的,我確信……
* F2 k+ j1 i* Z也許你說的要有個說法我理解為做事的態度好點……是一種認真的態度,我認為比較好。
作者: 過街蛤蟆    時間: 2008-12-18 16:04
呵呵,你誤會了,說不上什么誤解,因為我們每年作不少的事情,各種東西都有,有時調試一個東西必須要做好,有時一個環節很大,常有自動化的人和我說怎么不行,有時我就是不信,該給我做接地的,該隔離的,用質量次的信號線的,什么都見過,我就是一個環節一個環節看,看到底問題在哪里,最后都能處理掉,即使是高頻的射頻信號,都要處理掉,有些是基板介電常數的問題,是玻璃布的含堿量和樹脂的問題,最終都能找到問題,為什么你給我用介電常數不合格的基板,
4 {5 r/ \2 z0 ?8 {0 _! \/ Q* s$ _9 T, _3 Y0 b3 E  k
我其實是要說,在我國現階段的設備,還沒到說不明白的程度,在工程里面,你看日本人什么樣,每個數據要寫出來,誰負責,數據沒處理好,你必須說為什么,
作者: 卓信    時間: 2008-12-21 18:33
原帖由 過街蛤蟆 于 2008-12-18 16:04 發表 1 N+ A! I# \0 u2 i1 y, o
呵呵,你誤會了,說不上什么誤解,因為我們每年作不少的事情,各種東西都有,有時調試一個東西必須要做好,有時一個環節很大,常有自動化的人和我說怎么不行,有時我就是不信,該給我做接地的,該隔離的,用質量次的 ...
5 P, B% s  E- @5 M
, o% O' `& o% ]: T
嗯嗯 學習啦 前輩真棒
作者: minmin0000    時間: 2009-2-4 01:05
標題: 我覺得你們好象說的不是同一個問題啊........
我看了樓主發在電子工程世界上的同一個帖子,要不你把你的下位機接收程序發上來看下...還有,你是不是用的筆記本電腦,還用了串行口數據轉換器???那東西容易丟數據...最后想問你的其他和"timeout"變量有關的代碼發上來看看啊,看看為什么加這個變量就ok了......




歡迎光臨 機械社區 (http://www.ytsybjq.com/) Powered by Discuz! X3.5