基于ATt i n y 1 3的模擬量隔離采集
4.2 波特率設(shè)置
波特率是UART異步串行通信中非常重要的參數(shù)。通信雙方必須以約定好的速率通信,才能保證通信成功。波特率與異步串行協(xié)議中“位”所占用的時間密切相關(guān)。對于二進制信號,數(shù)據(jù)幀中每一位的占用時間就是波特率的倒數(shù)。因此,如何精確確定每一位的時間寬度,成為確保串口通信成功的關(guān)鍵因素。
ATtiny13沒有集成UART,但內(nèi)部含有一個8位定時器/計數(shù)器,可利用軟件控制該定時器產(chǎn)生波特率。MCU自帶的RC振蕩器可以作為時鐘源,但是振蕩頻率存在最大±10%的誤差,并且受溫度影響較大。這樣會造成波特率不穩(wěn),通信時可能出現(xiàn)接收不到數(shù)據(jù),或者丟數(shù)據(jù)位、出現(xiàn)亂碼和錯碼的情況。ATtiny13從外部引入了7.372 8 MHz有源晶振時鐘信號,從而保證了主時鐘頻率的穩(wěn)定性。
異步通信波特率可按式(1)計算。
![](http://editerupload.eepw.com.cn/fetch/20131113/188463_2_0.jpg)
式中:XTAL為引入的主時鐘頻率;Baud為需設(shè)置的波特率;C為定時器時鐘分頻系數(shù);n為8位定時器/計數(shù)器的預(yù)加載比較值。定時器/計數(shù)器工作在CTC模式(比較匹配時清零定時器)。
XTAL即7.372 8 MHz,Baud設(shè)定為9 600,定時器時鐘信號為主時鐘4分頻(即C=4),可得n=192。據(jù)此,8位定時器/計數(shù)器從0計到192時,產(chǎn)生比較中斷,軟件控制發(fā)送新的一位信息。
4.3 數(shù)據(jù)發(fā)送
UART異步串行協(xié)議規(guī)定了在沒有數(shù)據(jù)幀發(fā)送時,通過邏輯“1”表示目前處于閑置狀態(tài)。如果有數(shù)據(jù)需要發(fā)送,首先將發(fā)送線TXD拉低成邏輯“0”,并保持一個基本時間單位;之后根據(jù)待發(fā)送數(shù)據(jù)的二進制數(shù)值,依次逐位輸出。本設(shè)計中未使用奇偶校驗位,相關(guān)處理略去。5位數(shù)據(jù)發(fā)送完畢后,緊接著將TXD拉高為邏輯“1”,表示該幀結(jié)束。軟件UART發(fā)送流程如圖2所示。本文引用地址:http://www.biyoush.com/article/188463.htm
函數(shù)Uart_SendByte(unsigned char data)實現(xiàn)了上述功能,一次發(fā)送5位數(shù)據(jù)。在模擬量隔離采集中,單片機不斷地獲取A/D轉(zhuǎn)換值,并通過調(diào)用上述函數(shù)發(fā)送出去。
結(jié) 語
本文介紹一種基于ATtiny13的模擬量隔離采集電路,受ADC最大采樣速率及光耦PC817傳輸帶寬的限制,只適用于頻率變換緩慢的模擬信號。該電路體積小、成本低、接線簡單,已用于開關(guān)電源成品檢測。
評論