AVR單片機一些學(xué)習(xí)筆記
49、 AVCC為ADC模塊的獨立電源。參考電源可選擇片內(nèi)2.56V,AVCC或者外部參考電源。
50、 ADMUX(ADC多路復(fù)用選擇寄存器),ADLAR(ADC LeftAdjust Result)結(jié)果左對齊。ADCSRA(ADC控制和狀態(tài)寄存器A),ADEN,ADC使能位。ADSC(ADC Start Conversion)開始轉(zhuǎn)換位。ADATE(ADC Auto Trigger Enable)自動觸發(fā)開始轉(zhuǎn)換,信號源由SFIOR的ADTS位決定。ADPS[2:0]預(yù)分頻選擇位。
51、 如果AVREF接到外部電源,那么就不能使用內(nèi)部參考電源。
52、 ADC模塊在使能ADATE(自動觸發(fā)轉(zhuǎn)換)后,利用T0的溢出中斷來觸發(fā)開始轉(zhuǎn)換,一定要開啟T0的中斷允許位(TOIE0),否則無法觸發(fā)轉(zhuǎn)換。
53、 一次正常的ADC轉(zhuǎn)換過程需要13個采樣時鐘,假定ADC采樣時鐘頻率為200kHZ,那么最高的采樣頻。率為200kHZ/13=15.384kHZ,所以由香農(nóng)定理,被測信號的最高頻率為7.7kHZ。
54、 通用同步/異步串行接收/發(fā)送器(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時(數(shù)據(jù)寄存器為空),UDR才能夠被寫入,一旦被寫入,硬件自動將其中的內(nèi)容送到TXD上串行移出。RXD和TXD均可以產(chǎn)生相應(yīng)的中斷,并在進入中斷后標(biāo)志自動清0。
57、 由于UBRRH (U Baud Rate Register)和UCSRC的物理地址相同,只是在最高位URSEL的不同,而寫操作和讀操作的對象不同。當(dāng)URSEL為0時,對象為UBRRH;當(dāng)URSEL為1時,對象為UCSRC。(讀UCSRC時,需要連續(xù)讀兩次才能得到結(jié)果,第一次讀的是UBRRH的值)。
58、 USART的初始化包括:設(shè)置波特率,使能接收和發(fā)送器,設(shè)置幀格式。
數(shù)據(jù)發(fā)送:while(!(UCSRA (1 UDRE))); UDR = data;UDRE在UDR被寫入值后被硬件自動清0,如果在UDR空中斷沒有對UDR賦值,那么UDRE沒有清0,退出中斷后會再次觸發(fā)中斷。但是TXC中斷可以硬件自動清0TXC標(biāo)志
數(shù)據(jù)接收:while(!(UCSRA (1 RXC)));data = UDR;RXC在UDR數(shù)據(jù)被讀出后被硬件自動清0,所以在RXC中斷時必須讀取UDR,以清0RXC?;蛘呤謩忧?RXC
TXD和RXD功能由TXEN和RXEN的設(shè)置來開啟和關(guān)閉
59、 如果UCSRA中的FE,PE,DOR在RXC中斷中需要讀出進行錯誤檢測,那么一定要先讀UCSRA再讀UDR
60、 串行外設(shè)接口(Serial Peripheral Interface,SPI.飛思卡爾公司提出),兩線串行接口(Two-wireSerial Interface,TWI)。SPI一般有四根信號線:MOSI,MISO,SCLK,/SS.可以想象一下主機和從機從MOSI到MISO收尾相連形成環(huán)(本質(zhì)就是串行移位唄~),當(dāng)數(shù)據(jù)全部交換完畢后,主機拉高/SS,停止SPI傳輸。這就是為什么SPI比TWI(I2C)快的原因:因為數(shù)據(jù)是全雙工,并且數(shù)據(jù)走不同的通道。
61、 SPI有四種工作模式,取決于同步時鐘的極性(Clock Polariy)和同步時鐘的相位(Clock Phase)2個參數(shù)。
62、 SPI的主機方式最高速率為(CK/2),從機方式最高速率為(CKI/4)
63、 數(shù)據(jù)寄存器SPDR。在讀SPDR時,讀取的是緩沖寄存器內(nèi)容;寫SPDR時,寫到移位寄存器中。一旦將數(shù)據(jù)寫入SPDR,硬件自動傳輸一次SPI通信,如果中斷允許,則進入SPI中斷。
64、 SPI速率一般為1MHZ,最高可達(dá)10MHZ
65、 TWI工作在被控模式時,CPU頻率fcpuclock必須大于TWI時鐘線SCL頻率的16倍。SCL的頻率: (在主機模式下,TWBR應(yīng)大于10.另外特別需要注意的一點: 指的不是4的TWPS次方,應(yīng)該是按照分頻表格,將表格中的1,4,16,64替換 整體)
66、 TWINT中斷標(biāo)志位,當(dāng)其被置位時,時鐘線SCL被拉低,并且執(zhí)行中斷向量時,標(biāo)志不會清0,只能靠手動軟件清0。
67、 如果TWINT被置位,表示正在傳送數(shù)據(jù),此時如果寫入TWDR,那么TWWC(寫沖突)會被置位。也就是說當(dāng)TWINT被置位時,TWDR應(yīng)該保持穩(wěn)定,這和I2C的協(xié)議是一致的。
68、 TWAR(地址寄存器)的高7位用于存儲自己的地址,最后一位TWGCE(TWI General Call Recognition Enable)為地址匹配成功使能位。如果地址匹配成功,將會產(chǎn)生一次TWI中斷
69、 在I2C的TWI寄存器設(shè)置中,不能使用|賦值,必須整體賦值
70、 CKOPT當(dāng)系統(tǒng)頻率較高時或者要求抗干擾能力強,設(shè)置為1。如果系統(tǒng)頻率低,設(shè)置為0,這樣可以減少電流的損耗。
71、 片內(nèi)EEPROM,執(zhí)行讀操作時,CPU停止運行4個時鐘周期。而在執(zhí)行寫操作時,CPU停止運行2個時鐘周期。
評論