音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

在RAM中,緩沖區(qū)的設(shè)立與使用

作者:真水無(wú)香 欄目:單片機(jī)
在RAM中,緩沖區(qū)的設(shè)立與使用
我使用mega48單片機(jī)通過(guò)spi口接受數(shù)據(jù),再通過(guò)串口發(fā)到上位機(jī)去,由于spi的速度大于串口的速度,我想在ram中建立一個(gè)緩沖區(qū),來(lái)緩沖spi接受到數(shù)據(jù)。
我在C中定義一個(gè)數(shù)組,如a[20]
定義一個(gè)變量i
收到一個(gè)數(shù)a[i++],
通過(guò)串口發(fā)送一個(gè)數(shù)a[--i]
不過(guò)這樣作,有一個(gè)問(wèn)題。
好像使用緩沖區(qū)以后,spi收到的數(shù)據(jù),與上位機(jī)接受到的數(shù)據(jù),數(shù)據(jù)的前后順序被打亂了。
請(qǐng)問(wèn)各位大俠,如何設(shè)計(jì)緩沖區(qū),使接受和發(fā)送的數(shù)據(jù),不會(huì)由于有緩沖區(qū)的存在,而是數(shù)據(jù)的順序被打亂?
謝謝 

2樓: >>參與討論
kanprin
使用環(huán)形的緩沖區(qū)。
如定義一個(gè)a[20],接收時(shí)往緩沖區(qū)寫(xiě)a[i++], 處理時(shí)用另外一指針讀a[j++], 發(fā)送和接收的緩沖區(qū)是分開(kāi)的如定義一個(gè)b[20],發(fā)送數(shù)據(jù)往緩沖區(qū)寫(xiě)b[x++],而由緩沖區(qū)向串口發(fā)數(shù)據(jù)時(shí)讀b[x++],當(dāng)指針i,j,x,y 達(dá)到緩沖區(qū)的最大值時(shí),回到0,從頭開(kāi)始。如果怕數(shù)據(jù)被覆蓋,緩沖區(qū)開(kāi)大些。 不知道這樣行不行?

3樓: >>參與討論
真水無(wú)香
研究中······
 
4樓: >>參與討論
hanyafeng
建議你用“new”一片內(nèi)存緩沖區(qū)
 
5樓: >>參與討論
hanyafeng
好像各種編譯器都支持new這個(gè)方法
 
6樓: >>參與討論
ljxh401
FIFO
數(shù)組使用兩個(gè)指針 一個(gè)指向串口的讀數(shù)據(jù)地址
另一個(gè)指向spi的寫(xiě)數(shù)據(jù)地址 這是FIFO嗎
好像是的 以前看書(shū)的感覺(jué)

7樓: >>參與討論
kanprin
就是fifo的概念。
 
8樓: >>參與討論
hanyafeng
除非保證對(duì)指針的訪問(wèn)以及緩沖區(qū)的訪問(wèn)是唯一
 
9樓: >>參與討論
真水無(wú)香
能舉一個(gè)使用new的例子嘛?謝謝
 
10樓: >>參與討論
DEF
new 好像只有C++才有啊!C是另外一個(gè)函數(shù)啊!
 
11樓: >>參與討論
hanyafeng
對(duì)
malloc

12樓: >>參與討論
slickedit
最好能互斥
在進(jìn)行緩沖數(shù)據(jù)指針操作的時(shí)候,最好能互斥一下,避免沖突,
同時(shí)在讀寫(xiě)的時(shí)候,也需要加入對(duì)緩沖是否滿和空的判斷,避免
讀寫(xiě)失誤,這樣的例子應(yīng)該有很多的,仔細(xì)琢磨琢磨吧。

13樓: >>參與討論
athlon64fx
樓主所言極是. 獨(dú)占資源就可以了.
 
14樓: >>參與討論
ljxh401
只有一個(gè)cpu怎么會(huì)讀寫(xiě)沖突了 哈哈
 
參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
用中斷方式將AVR從休眠狀態(tài)喚醒的問(wèn)題
winavr編譯程序的代碼大小有限制嗎?
新手請(qǐng)教語(yǔ)句
LABTOOL-48XP軟件升級(jí)沒(méi)有?
請(qǐng)問(wèn):在IARAVR的多個(gè)模塊程序中如何才能允許重復(fù)的函數(shù)名?
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)