基于ATt i n y 1 3的模擬量隔離采集
4.2 波特率設置
波特率是UART異步串行通信中非常重要的參數。通信雙方必須以約定好的速率通信,才能保證通信成功。波特率與異步串行協議中“位”所占用的時間密切相關。對于二進制信號,數據幀中每一位的占用時間就是波特率的倒數。因此,如何精確確定每一位的時間寬度,成為確保串口通信成功的關鍵因素。
ATtiny13沒有集成UART,但內部含有一個8位定時器/計數器,可利用軟件控制該定時器產生波特率。MCU自帶的RC振蕩器可以作為時鐘源,但是振蕩頻率存在最大±10%的誤差,并且受溫度影響較大。這樣會造成波特率不穩,通信時可能出現接收不到數據,或者丟數據位、出現亂碼和錯碼的情況。ATtiny13從外部引入了7.372 8 MHz有源晶振時鐘信號,從而保證了主時鐘頻率的穩定性。
異步通信波特率可按式(1)計算。

式中:XTAL為引入的主時鐘頻率;Baud為需設置的波特率;C為定時器時鐘分頻系數;n為8位定時器/計數器的預加載比較值。定時器/計數器工作在CTC模式(比較匹配時清零定時器)。
XTAL即7.372 8 MHz,Baud設定為9 600,定時器時鐘信號為主時鐘4分頻(即C=4),可得n=192。據此,8位定時器/計數器從0計到192時,產生比較中斷,軟件控制發送新的一位信息。
4.3 數據發送
UART異步串行協議規定了在沒有數據幀發送時,通過邏輯“1”表示目前處于閑置狀態。如果有數據需要發送,首先將發送線TXD拉低成邏輯“0”,并保持一個基本時間單位;之后根據待發送數據的二進制數值,依次逐位輸出。本設計中未使用奇偶校驗位,相關處理略去。5位數據發送完畢后,緊接著將TXD拉高為邏輯“1”,表示該幀結束。軟件UART發送流程如圖2所示。本文引用地址:http://www.j9360.com/article/188463.htm
函數Uart_SendByte(unsigned char data)實現了上述功能,一次發送5位數據。在模擬量隔離采集中,單片機不斷地獲取A/D轉換值,并通過調用上述函數發送出去。
結 語
本文介紹一種基于ATtiny13的模擬量隔離采集電路,受ADC最大采樣速率及光耦PC817傳輸帶寬的限制,只適用于頻率變換緩慢的模擬信號。該電路體積小、成本低、接線簡單,已用于開關電源成品檢測。
評論