68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門 >> AVR單片機(jī)一些學(xué)習(xí)筆記

AVR單片機(jī)一些學(xué)習(xí)筆記

關(guān)鍵字:AVR 單片機(jī) 作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-19  瀏覽:20

下面是自己在學(xué)習(xí)AVR單片機(jī)時(shí)的學(xué)習(xí)經(jīng)驗(yàn),分享出來(lái)給大家,一起學(xué)習(xí)。

1、 AVR單片機(jī)采用RISC架構(gòu),8051單片機(jī)采用CISC架構(gòu)。前者速度為后者的2~4倍,為流水線操作指令。

2、 AVR單片機(jī)有32個(gè)通用寄存器(地址在RAM區(qū)從$0000開(kāi)始到$001F),其中有6個(gè)(最后6個(gè))合并為3個(gè)16位的X,Y,Z寄存器,用來(lái)存放地址指針,Z寄存器還可以尋址程序存儲(chǔ)器。

3、 哈佛結(jié)構(gòu),131條機(jī)器指令。

4、 延遲開(kāi)機(jī)功能。

5、 內(nèi)部自帶RC振蕩器,可提供1/2/4/8MHZ的工作時(shí)鐘。

6、 FLASH+EEPROM+SRAM+SPI+USART+TWI+PWM+RTC+10位ADC+模擬比較器+JTAG。

7、 堆棧指針向下增長(zhǎng),51單片機(jī)向上增長(zhǎng)。

8、 程序存儲(chǔ)器按字來(lái)訪問(wèn),擦除和寫(xiě)入以頁(yè)為單位。

9、 復(fù)位時(shí),所有的I/O口處于沒(méi)有上拉電阻的輸入狀態(tài)(高阻)。

10、 沒(méi)有中斷優(yōu)先級(jí)控制寄存器,由中斷向量表的地址決定優(yōu)先級(jí)(地址越低,優(yōu)先級(jí)越高)。

11、 PORTB |= (1<<2)D2置1,PORTB&= ~(1<<6)D6清零。

12、 FLASH分兩段:引導(dǎo)程序段(BootProgram Section)+應(yīng)用程序段(Application Program Section)。BPS中可以使用SPM指令實(shí)現(xiàn)IAP功能。

13、 中斷向量表位于FLASH程序存儲(chǔ)器的最前面。

14、 I/O空間為連續(xù)的64個(gè)I/O寄存器空間,在數(shù)據(jù)存儲(chǔ)器空間的映射地址為$0020~$005F。訪問(wèn)I/O寄存器的兩種方式:IN,OUT指令+對(duì)SRAM訪問(wèn)指令。

15、 單獨(dú)的AVcc用于給PORTA的ADC做AREF。

16、 13位的程序計(jì)數(shù)器PC,正好滿足16KB的尋址。

17、 AVR對(duì)片內(nèi)SRAM的訪問(wèn)需要2個(gè)時(shí)鐘周期。

19、 狀態(tài)寄存器SREG:

I:全局中斷使能位。置1,CPU可以響應(yīng)中斷;清0,CPU禁止響應(yīng)中斷。清0時(shí),單獨(dú)的中斷觸發(fā)控制的值保持不變。并且中斷響應(yīng)后,I由硬件清0(手動(dòng)置1實(shí)現(xiàn)中斷嵌套),由RETI置1再響應(yīng)其他中斷。

T:位復(fù)制存儲(chǔ)。BLD,BST?梢詫⑼ㄓ眉拇嫫鹘M中的任何一位復(fù)制到T中,反過(guò)來(lái)也可以。

H:半進(jìn)位標(biāo)志位。用于BCD的運(yùn)算。

S:符號(hào)標(biāo)志位。S=N⊕V。不管溢出與否(溢出后N的表示就不正確了!),但S總是能正確的表示計(jì)算結(jié)果的符號(hào)。

V:2的補(bǔ)碼溢出標(biāo)志位。溢出時(shí),N取反才是真正的結(jié)果符號(hào)。

N:負(fù)數(shù)標(biāo)志位。直接取自運(yùn)算結(jié)果的最高位。

Z:零值標(biāo)志位。運(yùn)算結(jié)果為0,置1。

C:進(jìn)/借位標(biāo)志。

20、 MCUCSR可以查看復(fù)位原因。

21、 掉電檢測(cè)(BOD)復(fù)位,2.7V閾值,具有遲滯效應(yīng)(間隙特性??)

22、 在FLASH的$0000H存放的是一條JMP或者RJMP指令,用來(lái)跳轉(zhuǎn)到正式代碼入口。$0002H~0028H(針對(duì)中斷向量為一個(gè)字的,如果中斷向量為兩個(gè)字$0002H~0050H)存放的是中斷向量表,20個(gè)中斷口<算上第一個(gè)復(fù)位中斷為21個(gè)>,主程序開(kāi)始在$002AH。

23、 硬件開(kāi)發(fā)工具:軟件模擬仿真器,實(shí)時(shí)在板仿真器(ICE),實(shí)時(shí)在片仿真器(JTAG)。

24、 每組I/O口配置三個(gè)寄存器用來(lái)表征他們的狀態(tài):方向控制寄存器DDRx(Data Direction Register),數(shù)據(jù)寄存器PORTn,輸入引腳寄存器PINx。

25、 DDRx=1,I/O口處于推挽輸出工作方式,PORTn為1輸出20mA電流,為0吸納20mA電流。DDRx = 0,I/O口處于輸入工作方式,將PINx中的電平讀入到DB上(PORTn用來(lái)設(shè)置是否使用內(nèi)部上拉電阻,1為使用,0為不使用)在SFIOR中有一位PUD,PUD=1全部I/O上拉電阻無(wú)效,PUD =0,上拉取決于PORTn的設(shè)置。

26、 使用I/O口時(shí),一定要先配置I/O口。首先配置DDRx,確定I/O口是輸入還是輸出。根據(jù)實(shí)際情況,輸入時(shí)需要配置是上拉還是下拉(上拉就是默認(rèn)輸入是高電平,下拉就是默認(rèn)輸入是低電平)。

27、 I/O口輸入方式時(shí),應(yīng)該讀取的是PINx的值。

28、 輸出口操作:

PORTA |= (1 <

PORTA &= ~(1<< PORTAx) // 位置低

PORTA ^= (1 <

輸入口操作:

PINA & (1<< PORTAx) // 位讀取

29、 有三個(gè)外部中斷(INT0,INT1,INT2),其中INT2只支持邊緣觸發(fā)

30、 滿足中斷條件,AVR硬件自動(dòng)將相應(yīng)的中斷標(biāo)志位置1,并且由硬件自動(dòng)清除(僅對(duì)于部分中斷有此功能,當(dāng)然也可以手動(dòng)軟件清除,清除的方法是寫(xiě)1),硬件也同時(shí)自動(dòng)清除I標(biāo)志位(缺省不能進(jìn)行中斷嵌套,SEI將I置1,使能中斷嵌套功能)。

31、 退出中斷后,AVR至少要再執(zhí)行一條指令后才能去響應(yīng)其他被掛起的中斷。

32、 中斷響應(yīng)至少需要4個(gè)CK才能開(kāi)始運(yùn)行中斷向量表中的跳轉(zhuǎn)指令(清I,清中斷標(biāo)志位,壓棧PC,中斷向量送入PC),至于要真正開(kāi)始運(yùn)行用戶的代碼,至少需要6~7個(gè)CK。中斷返回RETI也需要4個(gè)CK(彈出PC,置SREG中的I為1)。

33、 在使能中斷允許位之前,最好先將對(duì)應(yīng)中斷源的中斷標(biāo)志位清除,為了防止在使能時(shí),會(huì)立馬產(chǎn)生一次“多余”的中斷。

34、 INT0,INT1支持四種形式的中斷觸發(fā):上升沿,下降沿,任意電平變化,低電平(不帶中斷標(biāo)志位,低電平并不影響INTF0和INTF1的值(保持為0))。INT2只支持異步的上升沿和下降沿觸發(fā)(常用作喚醒MCU功能)。

35、 中斷初始化步驟:配置中斷觸發(fā)類型(MCUCR,MCUCSR),使能對(duì)應(yīng)的中斷(GICR),清除對(duì)應(yīng)的中斷標(biāo)志位(GIFR),使能全局中斷(asm(“SEI”))。AVR STUDIO6中的中斷寫(xiě)法:SIGNAL(xx){}(x為中斷向量號(hào))或者ISR(xx){}。

36、 T/C0和T/C2可產(chǎn)生PWM,頻率發(fā)生器,外部事件計(jì)數(shù)器(僅T/C0),10位時(shí)鐘預(yù)分頻器,溢出和比較匹配中斷源,允許用32.768kHz晶體作為獨(dú)立的計(jì)數(shù)時(shí)鐘源(僅T/C2)。

37、 時(shí)鐘源和51單片機(jī)差不多:(CS[2:0]共八種選擇),停止計(jì)數(shù),上升沿或下降沿,10位預(yù)分頻器(1/1,1/8,1/64,1/256,1/1024)。

38、 TCNT0(8位)寄存器用來(lái)存放計(jì)數(shù)數(shù)值,如果在計(jì)數(shù)器運(yùn)行期間寫(xiě)入數(shù)值,那么在下一個(gè)定時(shí)時(shí)鐘周期中會(huì)阻塞比較匹配(丟失一次TCNT0和OCR0的匹配操作)。

39、 OCR0中的數(shù)據(jù)會(huì)一直和TCNT0中的數(shù)值進(jìn)行比較,如果匹配,將產(chǎn)生一個(gè)比較匹配的中斷申請(qǐng)或者改變OC0的輸出邏輯電平。

40、 TIMSK中的OCIE0(OutputCompare Interrupt Enable),TOIE(Timer Overflow Interrupt Enable)分別為比較匹配中斷允許標(biāo)志位和溢出中斷允許位,當(dāng)I被置位時(shí),滿足條件即可觸發(fā)對(duì)應(yīng)的中斷。

41、 TIFR中的OCF0(OutputCompare Flag)和TOV0(Timer Overflow)分別為比較匹配標(biāo)志位和定時(shí)器溢出標(biāo)志位。

42、 TCCR中的WGM[1:0]決定T/C0的四種工作方式:普通模式,比較匹配時(shí)定時(shí)器清0,兩種PWM模式。COM[1:0]比較匹配輸出方式的作用取決于T/C0的工作方式。普通模式(WGM[1:0]=0):計(jì)數(shù)到0xFF會(huì)產(chǎn)生溢出中斷,TOV0置1。比較匹配清0計(jì)數(shù)器CTC模式(WGM[1:0]=2):f=f(IO)/(2N(1+OCR0)),TCNT0和OCR0匹配,匹配后TCNT0清0重新計(jì)數(shù),同時(shí)置OCF0為1,便于產(chǎn)生中斷。在中斷中改變OCR0的值,在OC0中可以輸出可變的高低電平信號(hào)?焖貾WM模式(WGM[1:0]=3):f=f(IO)/(256N),TCNT0從0計(jì)數(shù)到0xFF,然后重新開(kāi)始計(jì)數(shù),如果匹配OCR0則根據(jù)COM[1:0]中的設(shè)置值分別置位或者清0OC0,以此來(lái)輸出PWM波形。相位可調(diào)PWM模式(WGM[1:0]=1):雙向計(jì)數(shù)器,所以最高PWM頻率比快速PWM模式慢了一半。

43、 T2定時(shí)器的分頻系數(shù)與T0不同,注意區(qū)別。

44、 T1定時(shí)器在讀取數(shù)據(jù)時(shí),先讀低八位,再讀高八位。在寫(xiě)入數(shù)據(jù)時(shí),先寫(xiě)高八位,再寫(xiě)低八位。就像對(duì)高位壓棧一樣。

45、 由于T1可以修改計(jì)數(shù)器的上限值(TOP),所以可以產(chǎn)生頻率可變的PWM波形,而T0/T2定時(shí)器無(wú)法做到這一點(diǎn)。

46、 T1的工作模式由WGM1[3:0]決定,由此可以看出T1有16種工作模式。普通模式(WGM1[3:0]=0)。CTC模式(GWM1[3:0]=4或12)。快速PWM模式(GWM1[3:0]=5,6,7,14,15)有兩路同時(shí)輸出,OC1A,OC1B。

47、 T1輸入捕捉功能:觸發(fā)信號(hào)由ICP1輸入或者又模擬比較器AC0輸入。觸發(fā)時(shí),TCNT1的值被寫(xiě)入到ICR1中置位ICF1。此外,ICNC(Input Capture NoiseCanceler)為噪聲抑制功能,實(shí)現(xiàn)原理就是延遲4個(gè)CK檢測(cè)電平變化,如果連續(xù)4個(gè)CK不變,則認(rèn)為是真正的觸發(fā)。ICES(Input Capture Edge Select)為觸發(fā)邊緣的選擇,0為下降沿,1為上升沿。

48、 模擬比較器(正極AIN0和負(fù)極AIN1),SFIOR(Special Funciton IO Register)中的ACME(Analog Comparator Multiplexer Enable)模擬比較多路使能,置1并且ADC失能,比較器負(fù)極接到ADC的多路開(kāi)關(guān)。置0,比較器負(fù)極接到AIN1。ACSR(AnalogComparator Control and Status Register)模擬比較器控制和狀態(tài)寄存器。ACD(AnalogControl Disable)置1時(shí),切斷模擬比較器的開(kāi)關(guān)。在改變?cè)O(shè)置時(shí),應(yīng)先失能ACIE,禁止產(chǎn)生模擬器比較中斷。ACO(Analog Comparator Output)模擬比較器輸出。ACIS[1:0](AnalogComparator Interrupt Select)模擬比較器中斷模式選擇。

49、 AVCC為ADC模塊的獨(dú)立電源。參考電源可選擇片內(nèi)2.56V,AVCC或者外部參考電源。

50、 ADMUX(ADC多路復(fù)用選擇寄存器),ADLAR(ADC LeftAdjust Result)結(jié)果左對(duì)齊。ADCSRA(ADC控制和狀態(tài)寄存器A),ADEN,ADC使能位。ADSC(ADC Start Conversion)開(kāi)始轉(zhuǎn)換位。ADATE(ADC Auto Trigger Enable)自動(dòng)觸發(fā)開(kāi)始轉(zhuǎn)換,信號(hào)源由SFIOR的ADTS位決定。ADPS[2:0]預(yù)分頻選擇位。

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

52、 ADC模塊在使能ADATE(自動(dòng)觸發(fā)轉(zhuǎn)換)后,利用T0的溢出中斷來(lái)觸發(fā)開(kāi)始轉(zhuǎn)換,一定要開(kāi)啟T0的中斷允許位(TOIE0),否則無(wú)法觸發(fā)轉(zhuǎn)換。

53、 一次正常的ADC轉(zhuǎn)換過(guò)程需要13個(gè)采樣時(shí)鐘,假定ADC采樣時(shí)鐘頻率為200kHZ,那么最高的采樣頻。率為200kHZ/13=15.384kHZ,所以由香農(nóng)定理,被測(cè)信號(hào)的最高頻率為7.7kHZ。

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

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

56、 UCSRA中的UDRE(U Data Register Empty)置1時(shí)(數(shù)據(jù)寄存器為空),UDR才能夠被寫(xiě)入,一旦被寫(xiě)入,硬件自動(dòng)將其中的內(nèi)容送到TXD上串行移出。RXD和TXD均可以產(chǎn)生相應(yīng)的中斷,并在進(jìn)入中斷后標(biāo)志自動(dòng)清0。

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

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

數(shù)據(jù)發(fā)送:while(!(UCSRA& (1 << UDRE))); UDR = data;UDRE在UDR被寫(xiě)入值后被硬件自動(dòng)清0,如果在UDR空中斷沒(méi)有對(duì)UDR賦值,那么UDRE沒(méi)有清0,退出中斷后會(huì)再次觸發(fā)中斷。但是TXC中斷可以硬件自動(dòng)清0TXC標(biāo)志

數(shù)據(jù)接收:while(!(UCSRA & (1 << RXC)));data = UDR;RXC在UDR數(shù)據(jù)被讀出后被硬件自動(dòng)清0,所以在RXC中斷時(shí)必須讀取UDR,以清0RXC;蛘呤謩(dòng)清0RXC

TXD和RXD功能由TXEN和RXEN的設(shè)置來(lái)開(kāi)啟和關(guān)閉

59、 如果UCSRA中的FE,PE,DOR在RXC中斷中需要讀出進(jìn)行錯(cuò)誤檢測(cè),那么一定要先讀UCSRA再讀UDR

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

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

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

63、 數(shù)據(jù)寄存器SPDR。在讀SPDR時(shí),讀取的是緩沖寄存器內(nèi)容;寫(xiě)SPDR時(shí),寫(xiě)到移位寄存器中。一旦將數(shù)據(jù)寫(xiě)入SPDR,硬件自動(dòng)傳輸一次SPI通信,如果中斷允許,則進(jìn)入SPI中斷。

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

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

66、 TWINT中斷標(biāo)志位,當(dāng)其被置位時(shí),時(shí)鐘線SCL被拉低,并且執(zhí)行中斷向量時(shí),標(biāo)志不會(huì)清0,只能靠手動(dòng)軟件清0。

67、 如果TWINT被置位,表示正在傳送數(shù)據(jù),此時(shí)如果寫(xiě)入TWDR,那么TWWC(寫(xiě)沖突)會(huì)被置位。也就是說(shuō)當(dāng)TWINT被置位時(shí),TWDR應(yīng)該保持穩(wěn)定,這和I2C的協(xié)議是一致的。

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

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

70、 CKOPT當(dāng)系統(tǒng)頻率較高時(shí)或者要求抗干擾能力強(qiáng),設(shè)置為1。如果系統(tǒng)頻率低,設(shè)置為0,這樣可以減少電流的損耗。

71、 片內(nèi)EEPROM,執(zhí)行讀操作時(shí),CPU停止運(yùn)行4個(gè)時(shí)鐘周期。而在執(zhí)行寫(xiě)操作時(shí),CPU停止運(yùn)行2個(gè)時(shí)鐘周期。

擴(kuò)展閱讀:?jiǎn)纹瑱C(jī)I/O口推挽輸出與開(kāi)漏輸出的區(qū)別

編輯:admin  最后修改時(shí)間:2018-05-19

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

桦南县| 于都县| 金门县| 康保县| 儋州市| 富阳市| 屯昌县| 罗甸县| 湟中县| 马鞍山市| 鄄城县| 临猗县| 丰宁| 舞阳县| 利津县| 丰镇市| 石狮市| 十堰市| 会理县| 阿城市| 苏尼特右旗| 曲靖市| 淮阳县| 五常市| 肇东市| 牟定县| 巴中市| 尉犁县| 宝清县| 宝兴县| 阿荣旗| 双柏县| 临漳县| 昆山市| 大城县| 尖扎县| 鹤庆县| 那坡县| 舟曲县| 综艺| 道真|