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

機械社區

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

作者: 卓信    時間: 2008-12-17 09:41
標題: 關于串口通訊丟數問題的解決
問題:51單片機在與電腦軟件通訊的過程中,通訊了100多次 多200多次的時候會出現丟數的情況
- ~+ w7 n0 p0 K原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html6 F" m) Y' m. H+ R
$ B5 s1 W. G& {5 h
解決辦法:實際上數并沒有丟 只是可能電路有時候不穩 造成了波特率的波動 導致了同步有點問題 - C. ^1 J. {- ^. k" T: y* Y
原來的單片機程序:! x# E7 R0 M& S+ X6 a: ~
void main()4 F8 g7 w) [0 M  k+ j2 X" j
{
* w. k, |4 C" T9 @# o5 n. E" _
1 n. Z7 k5 R1 j' @1 D: C    P1=0xff;
9 ~4 r- U  q2 f" P+ P2 B    main_init();
8 Z; K5 |: s) |; {3 |    init_8253();3 w3 p  K' L) q& _
    serial_init();) V4 A/ M0 Y2 d- G. b" l- F! \5 D
( S3 W. Z3 a6 G& X/ J( \
    while(1)
) ~# O, d5 v6 n8 A' T5 ^    {
# U* F* ]2 X* ?# N. I+ u        if(state >=3 )                     //state代表接收的字節數                 問題就出在這個判上,   
5 B( _3 r; k1 B( J                                                                                                       有時候就會發生            ' z: l+ m% f% B( J* S' k
          {                                                                                           state<3的情況,就是我所說
5 C3 U: Q6 ^! b  }! _+ @" L                                                                                                       的丟數,其實數并有丟& ^% m" P9 h; Z( J' h/ ], s
             ……                                                                                   我覺得從理論上講能通訊8 E$ H2 ^- W) o, J# [
                                                                                                      一次成功就通訊N次,# X3 f' m4 n2 L& e) D. y
                                                                                                      因為同一個循環……事5 v7 k8 ?' z6 C- ?  G& k
                                                                                                      實 證明錯了……      
% t. ^$ ~' k. u( k0 d            }4 q$ X  a8 s! H( ?$ V
     }
1 A2 C" \% y1 l, ^7 N}
+ d" A5 O6 D' h
$ X3 {9 E+ [/ [; T
% a- Q0 Z3 ]* ?7 c; c, ^后來一直想為啥,在網上找了N久,終于發現有個類似的,于是在if之前多加了* t- p5 T( Q  q" x, @' N' A4 l
for(timeout=0;timeout<800;timeout++); 就好了
- y- k3 w5 c1 q
: d' t% x( b* W7 S把經歷寫出來,可能問題很簡單,我很菜鳥,不過還是希望和大家分享……2 Q: {2 T! P8 c$ j
* ^5 V4 |. q4 G
[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ]
作者: 過街蛤蟆    時間: 2008-12-17 09:55
現有的各種標準接口都不會丟數據,有時是信號電平不穩定,有時是傳輸問題,有時是傳輸干擾的問題,有時是同步問題,也可能是交叉問題,但數據應該不會是在接口中丟的,假如是你新設計的你自己的變換接口,都不太可能有這個問題,因為數學是非常死板的東西,以前用格雷碼變二進制或變其他的碼都是硬件,現在的接口有軟件問題,但數學公式是非常可靠的,
作者: 卓信    時間: 2008-12-17 12:15
你從理論上講當然不會 但是以前 就有碰到過串口通訊會出現問題的電腦  這是我們時間過程中遇到的 后來都換了聯想的另一型號的電腦
4 b5 D5 p% }! T: @" p3 e0 J1 H. s' k& {; H' z0 V" E$ H
還有 理論上認為不可能的事情發生了 你就不知道問題出在哪了
作者: 過街蛤蟆    時間: 2008-12-17 14:28
有些問題是不知道為什么,比如到高速DSP的時候,因為它的高速,牽涉到芯片里的一些問題,但對于串口的數據問題,肯定有非常明確的答案,絕不可能是一個誰都說不清的含混說法,再高的一些問題,比如到工業控制的DP網絡,有時也有各種問題,但一定有一個明確的說法,我的工程,我從來不接受含混的說法,到底是接地問題?是干擾問題?是隔離問題?是軟件問題?每次我都要明確說法。只有到芯片級的問題,才有不確定的說法。
作者: 卓信    時間: 2008-12-17 14:49
那你對我的問題總結一個明確的說法?
作者: 過街蛤蟆    時間: 2008-12-17 15:03
我要是調試你的設備,就一定有明確的說法,
/ T/ n7 T' t* _- W7 k) o以前,有人對我說怎么都不能穩定,當然,你用家用PC是穩定不了,( u& t0 ^6 d# e& R0 c  H  e
電源不穩定也影響接口,
/ V- Z0 j& J9 L1 C用觸屏的顯示亂跳,愣說沒辦法,什么沒辦法,單獨給我做接地,看還亂跳,) m9 C* }( g" \5 K9 K! n1 e0 A' H
有些就本身不是接口的問題,是電路電平的事,一接上就跳,得找到底什么地方電平不穩定,. f$ G: g2 j! t8 p+ X' c
對于串口、并口、一般工業以太網、DP網絡等,我從來就不接受什么數據會丟的事情,煉著一爐鋼,你告訴我數據沒了,我相信不會有人接受這個說法,
7 n9 Z  p; ]1 j7 j2 s
* F2 M. _6 i/ L2 @看你沒真正干什么事情,假如你做工程的過程控制,用串口還丟數據,問人家要說法,不知道你下面怎么樣,
作者: 卓信    時間: 2008-12-18 09:55
標題: 回復 6# 過街蛤蟆 的帖子
哈哈  我是沒干過什么事情 不過我不知道你搞不搞模電和信號處理
% g, S7 a% |: j( e" X- S( B( \
1 c9 D* A  B, V8 D如果你搞過 那么我對你的什么都有確定的“說法”表示深深的佩服。
作者: 過街蛤蟆    時間: 2008-12-18 11:04
好像你有些要誤導我了,和我們先前說的接口傳輸也有些跑題了,
( a0 ~, X& n1 w/ R9 v' M8 L$ p% q
我現在作的一個東西的壓力測量就是用一個高精度的壓力傳感器,經過模/數轉換,數字信號入機控制某些對象,模擬測量設備的誤差是自身的,有溫度的影響等,在一定范圍內可以補償,可以通過算法的某些系數進行修正,但數字變換以后的信號就是一個確定的信號,當電路電平符合傳輸要求和傳輸距離合適的時候,數字是不會有誤差的,即不會丟數據,要丟也是在模擬部分。
0 U$ i' |, z2 ?2 x
3 K8 ]! H: Y, o! l) W說事情,應按一個路說說下去,串口的數據丟失,和模轉及模擬信號的處理好像沒關系,轉數字電路以后,丟數據我絕對是要問明白,以前一些控制配套商也有你類似的說法,從熱電偶那里開始‘攪和’,都以為自動控制在中國是‘說不清’的事情,我從來不信這東西,到底是哪里的問題?肯定會搞明白的,不能以為大家都是混事的,是熱電偶問題?是補償線問題?是變換問題?是傳輸問題?不可能讓誰混過去的,我加熱和壓力控制水平精度是非常高的,
# V1 ]8 `. `0 G) N
$ ]' c& e! |/ o/ q- @& F0 |有些東西,要學習日本人,盡管某些方面我不喜歡他們,
作者: 卓信    時間: 2008-12-18 15:24
標題: 回復 8# 過街蛤蟆 的帖子
嗯嗯  前輩誤會啦
7 ]' f, d9 x2 ?& {8 v8 O
1 C; E) \  _  b: v% O- [1 x, M6 A3 b* Q只是我年輕氣盛……其實我說的說不清和你所說的要有一個明說的對象有點不同, l% A1 u9 C2 {# X( G# }
9 g( J, }* z4 q; o& s* e/ L$ ~
特別是在模電里邊 涉及到高頻信號和弱小信號放大的時候……有些飄忽不定的干擾真的不是你能說明白的,我確信……
9 q: _/ Z5 h* t5 n也許你說的要有個說法我理解為做事的態度好點……是一種認真的態度,我認為比較好。
作者: 過街蛤蟆    時間: 2008-12-18 16:04
呵呵,你誤會了,說不上什么誤解,因為我們每年作不少的事情,各種東西都有,有時調試一個東西必須要做好,有時一個環節很大,常有自動化的人和我說怎么不行,有時我就是不信,該給我做接地的,該隔離的,用質量次的信號線的,什么都見過,我就是一個環節一個環節看,看到底問題在哪里,最后都能處理掉,即使是高頻的射頻信號,都要處理掉,有些是基板介電常數的問題,是玻璃布的含堿量和樹脂的問題,最終都能找到問題,為什么你給我用介電常數不合格的基板,
5 q: f' u( P3 E/ n( Z: M5 b, v+ L1 H
我其實是要說,在我國現階段的設備,還沒到說不明白的程度,在工程里面,你看日本人什么樣,每個數據要寫出來,誰負責,數據沒處理好,你必須說為什么,
作者: 卓信    時間: 2008-12-21 18:33
原帖由 過街蛤蟆 于 2008-12-18 16:04 發表 . g' q2 N9 f. ~# S
呵呵,你誤會了,說不上什么誤解,因為我們每年作不少的事情,各種東西都有,有時調試一個東西必須要做好,有時一個環節很大,常有自動化的人和我說怎么不行,有時我就是不信,該給我做接地的,該隔離的,用質量次的 ...
/ D; E4 n8 g/ l. i0 i
/ [1 n; V; g4 y6 d9 i
嗯嗯 學習啦 前輩真棒
作者: minmin0000    時間: 2009-2-4 01:05
標題: 我覺得你們好象說的不是同一個問題啊........
我看了樓主發在電子工程世界上的同一個帖子,要不你把你的下位機接收程序發上來看下...還有,你是不是用的筆記本電腦,還用了串行口數據轉換器???那東西容易丟數據...最后想問你的其他和"timeout"變量有關的代碼發上來看看啊,看看為什么加這個變量就ok了......




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