新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機一些學習筆記

        AVR單片機一些學習筆記

        作者: 時間:2013-05-30 來源:網絡 收藏

        49、 為ADC模塊的獨立電源。參考電源可選擇片內2.56V,或者外部參考電源。

        50、 ADMUX(ADC多路復用選擇寄存器),ADLAR(ADC LeftAdjust Result)結果左對齊。ADCSRA(ADC控制和狀態寄存器A),ADEN,ADC使能位。ADSC(ADC Start Conversion)開始轉換位。ADATE(ADC Auto Trigger Enable)自動觸發開始轉換,信號源由SFIOR的ADTS位決定。ADPS[2:0]預分頻選擇位。

        51、 如果AVREF接到外部電源,那么就不能使用內部參考電源。

        52、 ADC模塊在使能ADATE(自動觸發轉換)后,利用T0的溢出中斷來觸發開始轉換,一定要開啟T0的中斷允許位(TOIE0),否則無法觸發轉換。

        53、 一次正常的ADC轉換過程需要13個采樣時鐘,假定ADC采樣時鐘頻率為200kHZ,那么最高的采樣頻。率為200kHZ/13=15.384kHZ,所以由香農定理,被測信號的最高頻率為7.7kHZ。

        54、 通用同步/異步串行接收/發送器(Universal Synchronous and Asynchronous Serial Recevier andTransimitter)支持四種工作模式:普通異步模式、雙倍速異步模式、主機同步模式和從機同步模式。UCSRC中的UMSEL(U Mode Select)位用于選擇同步或異步模式。UCSRA中的U2X用于控制是否使用倍速模式。

        55、 波特率計算公式:BAUD=fosc/(16(UBRR+1))。

        56、 UCSRA中的UDRE(U Data Register Empty)置1時(數據寄存器為空),UDR才能夠被寫入,一旦被寫入,硬件自動將其中的內容送到TXD上串行移出。RXD和TXD均可以產生相應的中斷,并在進入中斷后標志自動清0。

        57、 由于UBRRH (U Baud Rate Register)和UCSRC的物理地址相同,只是在最高位URSEL的不同,而寫操作和讀操作的對象不同。當URSEL為0時,對象為UBRRH;當URSEL為1時,對象為UCSRC。(讀UCSRC時,需要連續讀兩次才能得到結果,第一次讀的是UBRRH的值)。

        58、 USART的初始化包括:設置波特率,使能接收和發送器,設置幀格式。

        數據發送:while(!(UCSRA (1 UDRE))); UDR = data;UDRE在UDR被寫入值后被硬件自動清0,如果在UDR空中斷沒有對UDR賦值,那么UDRE沒有清0,退出中斷后會再次觸發中斷。但是TXC中斷可以硬件自動清0TXC標志

        數據接收:while(!(UCSRA (1 RXC)));data = UDR;RXC在UDR數據被讀出后被硬件自動清0,所以在RXC中斷時必須讀取UDR,以清0RXC。或者手動清0RXC

        TXD和RXD功能由TXEN和RXEN的設置來開啟和關閉

        59、 如果UCSRA中的FE,PE,DOR在RXC中斷中需要讀出進行錯誤檢測,那么一定要先讀UCSRA再讀UDR

        60、 串行外設接口(Serial Peripheral Interface,SPI.飛思卡爾公司提出),兩線串行接口(Two-wireSerial Interface,TWI)。SPI一般有四根信號線:MOSI,MISO,SCLK,/SS.可以想象一下主機和從機從MOSI到MISO收尾相連形成環(本質就是串行移位唄~),當數據全部交換完畢后,主機拉高/SS,停止SPI傳輸。這就是為什么SPI比TWI(I2C)快的原因:因為數據是全雙工,并且數據走不同的通道。

        61、 SPI有四種工作模式,取決于同步時鐘的極性(Clock Polariy)和同步時鐘的相位(Clock Phase)2個參數。

        62、 SPI的主機方式最高速率為(CK/2),從機方式最高速率為(CKI/4)

        63、 數據寄存器SPDR。在讀SPDR時,讀取的是緩沖寄存器內容;寫SPDR時,寫到移位寄存器中。一旦將數據寫入SPDR,硬件自動傳輸一次SPI通信,如果中斷允許,則進入SPI中斷。

        64、 SPI速率一般為1MHZ,最高可達10MHZ

        65、 TWI工作在被控模式時,CPU頻率fcpuclock必須大于TWI時鐘線SCL頻率的16倍。SCL的頻率: (在主機模式下,TWBR應大于10.另外特別需要注意的一點: 指的不是4的TWPS次方,應該是按照分頻表格,將表格中的1,4,16,64替換 整體)

        66、 TWINT中斷標志位,當其被置位時,時鐘線SCL被拉低,并且執行中斷向量時,標志不會清0,只能靠手動軟件清0。

        67、 如果TWINT被置位,表示正在傳送數據,此時如果寫入TWDR,那么TWWC(寫沖突)會被置位。也就是說當TWINT被置位時,TWDR應該保持穩定,這和I2C的協議是一致的。

        68、 TWAR(地址寄存器)的高7位用于存儲自己的地址,最后一位TWGCE(TWI General Call Recognition Enable)為地址匹配成功使能位。如果地址匹配成功,將會產生一次TWI中斷

        69、 在I2C的TWI寄存器設置中,不能使用|賦值,必須整體賦值

        70、 CKOPT當系統頻率較高時或者要求抗干擾能力強,設置為1。如果系統頻率低,設置為0,這樣可以減少電流的損耗。

        71、 片內EEPROM,執行讀操作時,CPU停止運行4個時鐘周期。而在執行寫操作時,CPU停止運行2個時鐘周期。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 松原市| 长泰县| 漳浦县| 故城县| 宜城市| 连江县| 栾川县| 西青区| 石狮市| 财经| 渝北区| 历史| 色达县| 土默特左旗| 双峰县| 施甸县| 富裕县| 丰镇市| 平阳县| 商城县| 昌乐县| 鹤庆县| 宝丰县| 迁安市| 青神县| 林周县| 明水县| 佳木斯市| 财经| 青海省| 五大连池市| 准格尔旗| 合水县| 汝城县| 兴城市| 祁阳县| 淳化县| 宿迁市| 手游| 姜堰市| 抚松县|