久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11959|回復: 18
打印 上一主題 下一主題
收起左側

AVR單片機掃盲

  [復制鏈接]
跳轉到指定樓層
樓主
ID:434779 發表于 2018-11-29 17:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1、  AVR單片機采用RISC架構,8051單片機采用CISC架構。前者速度為后者的2~4倍,為流水線操作指令
2、  AVR單片機有32個通用寄存器(地址在RAM區從$0000開始到$001F),其中有6個(最后6個)合并為3個16位的X,Y,Z寄存器,用來存放地址指針,Z寄存器還可以尋址程序存儲器
3、  哈佛結構,131條機器指令
4、  延遲開機功能
5、  內部自帶RC振蕩器,可提供1/2/4/8MHZ的工作時鐘
6、  FLASH+EEPROM+SRAM+SPI+USART+TWI+PWM+RTC+10位ADC+模擬比較器+JTAG
7、  堆棧指針向下增長,51單片機向上增長
8、  程序存儲器按字來訪問,擦除和寫入以頁為單位
9、  復位時,所有的I/O口處于沒有上拉電阻的輸入狀態(高阻)
10、沒有中斷優先級控制寄存器,由中斷向量表的地址決定優先級(地址越低,優先級越高)
11、PORTB |= (1<<2)D2置1,PORTB&=  ~(1<<6)D6清零
12、FLASH分兩段:引導程序段(BootProgram Section)+應用程序段(Application Program Section)。BPS中可以使用SPM指令實現IAP功能
13、中斷向量表位于FLASH程序存儲器的最前面
14、 I/O空間為連續的64個I/O寄存器空間,在數據存儲器空間的映射地址為$0020~$005F。訪問I/O寄存器的兩種方式:IN,OUT指令+對SRAM訪問指令
15、單獨的AVcc用于給PORTA的ADC做AREF
16、13位的程序計數器PC,正好滿足16KB的尋址
17、AVR對片內SRAM的訪問需要2個時鐘周期
18、休息一會兒;
19、 狀態寄存器SREG:
           I:全局中斷使能位。置1,CPU可以響應中斷;清0,CPU禁止響應中斷。清0時,單獨的中斷觸發控制的值保持不變。并且中斷響應后,I由硬件清0(手動置1實現中斷嵌套),由RETI置1再響應其他中斷
           T:位復制存儲。BLD,BST。可以將通用寄存器組中的任何一位復制到T中,反過來也可以
           H:半進位標志位。用于BCD的運算
           S:符號標志位。S=N⊕V。不管溢出與否(溢出后N的表示就不正確了!),但S總是能正確的表示計算結果的符號
           V:2的補碼溢出標志位。溢出時,N取反才是真正的結果符號
           N:負數標志位。直接取自運算結果的最高位
           Z:零值標志位。運算結果為0,置1
           C:進/借位標志。
20、MCUCSR可以查看復位原因
21、掉電檢測(BOD)復位
22、在FLASH的$0000H存放的是一條JMP或者RJMP指令,用來跳轉到正式代碼入口。$0002H~0028H(針對中斷向量為一個字的,如果中斷向量為兩個字$0002H~0050H)存放的是中斷向量表,20個中斷口
23、硬件開發工具:軟件模擬仿真器,實時在板仿真器(ICE),實時在片仿真器(JTAG)
24、每組I/O口配置三個寄存器用來表征他們的狀態:方向控制寄存器DDRx(Data Direction Register),數據寄存器PORTn,輸入引腳寄存器PINx。
25、DDRx=1,I/O口處于推挽輸出工作方式,PORTn為1輸出20mA電流,為0吸納20mA電流。DDRx = 0,I/O口處于輸入工作方式,將PINx中的電平讀入到DB上(PORTn用來設置是否使用內部上拉電阻,1為使用,0為不使用)在SFIOR中有一位PUD,PUD=1全部I/O上拉電阻無效,PUD =0,上拉取決于PORTn的設置
26、使用I/O口時,一定要先配置I/O口。首先配置DDRx,確定I/O口是輸入還是輸出。根據實際情況,輸入時需要配置是上拉還是下拉(上拉就是默認輸入是高電平,下拉就是默認輸入是低電平)
27、I/O口輸入方式時,應該讀取的是PINx的值
28、輸出口操作:
PORTA |= (1<<portax)           位置高<=""p=""></portax)          >
PORTA &= ~(1<<PORTAx)       // 位置低
PORTA ^= (1<<portax)          位取反<=""p=""></portax)         >
輸入口操作:
PINA & (1<<PORTAx)              // 位讀取
29、有三個外部中斷(INT0,INT1,INT2),其中INT2只支持邊緣觸發
30、滿足中斷條件,AVR硬件自動將相應的中斷標志位置1,并且由硬件自動清除(僅對于部分中斷有此功能,當然也可以手動軟件清除,清除的方法是寫1),硬件也同時自動清除I標志位(缺省不能進行中斷嵌套,SEI將I置1,使能中斷嵌套功能)
31、退出中斷后,AVR至少要再執行一條指令后才能去響應其他被掛起的中斷
32、中斷響應至少需要4個CK才能開始運行中斷向量表中的跳轉指令(清I,清中斷標志位,壓棧PC,中斷向量送入PC),至于要真正開始運行用戶的代碼,至少需要6~7個CK。中斷返回RETI也需要4個CK(彈出PC,置SREG中的I為1)
33、在使能中斷允許位之前,最好先將對應中斷源的中斷標志位清除,為了防止在使能時,會立馬產生一次“多余”的中斷。
34、 INT0,INT1支持四種形式的中斷觸發:上升沿,下降沿,任意電平變化,低電平(不帶中斷標志位,低電平并不影響INTF0和INTF1的值(保持為0))。INT2只支持異步的上升沿和下降沿觸發(常用作喚醒MCU功能)
35、中斷初始化步驟:配置中斷觸發類型(MCUCR,MCUCSR),使能對應的中斷(GICR),清除對應的中斷標志位(GIFR),使能全局中斷(asm(“SEI”))。AVR STUDIO6中的中斷寫法:SIGNAL(xx){}(x為中斷向量號)或者ISR(xx){}
36、T/C0和T/C2可產生PWM,頻率發生器,外部事件計數器(僅T/C0),10位時鐘預分頻器,溢出和比較匹配中斷源,允許用32.768kHz晶體作為獨立的計數時鐘源(僅T/C2)
37、時鐘源和51單片機差不多:(CS[2:0]共八種選擇),停止計數,上升沿或下降沿,10位預分頻器(1/1,1/8,1/64,1/256,1/1024)
38、 TCNT0(8位)寄存器用來存放計數數值,如果在計數器運行期間寫入數值,那么在下一個定時時鐘周期中會阻塞比較匹配(丟失一次TCNT0和OCR0的匹配操作)
39、OCR0中的數據會一直和TCNT0中的數值進行比較,如果匹配,將產生一個比較匹配的中斷申請或者改變OC0的輸出邏輯電平
40、 TIMSK中的OCIE0(OutputCompare Interrupt Enable),TOIE(Timer Overflow Interrupt Enable)分別為比較匹配中斷允許標志位和溢出中斷允許位,當I被置位時,滿足條件即可觸發對應的中斷
41、TIFR中的OCF0(OutputCompare Flag)和TOV0(Timer Overflow)分別為比較匹配標志位和定時器溢出標志位
42、TCCR中的WGM[1:0]決定T/C0的四種工作方式:普通模式,比較匹配時定時器清0,兩種PWM模式。COM[1:0]比較匹配輸出方式的作用取決于T/C0的工作方式。普通模式(WGM[1:0]=0):計數到0xFF會產生溢出中斷,TOV0置1。比較匹配清0計數器CTC模式(WGM[1:0]=2):f=f(IO)/(2N(1+OCR0)),TCNT0和OCR0匹配,匹配后TCNT0清0重新計數,同時置OCF0為1,便于產生中斷。在中斷中改變OCR0的值,在OC0中可以輸出可變的高低電平信號。快速PWM模式(WGM[1:0]=3):f=f(IO)/(256N),TCNT0從0計數到0xFF,然后重新開始計數,如果匹配OCR0則根據COM[1:0]中的設置值分別置位或者清0OC0,以此來輸出PWM波形。相位可調PWM模式(WGM[1:0]=1):雙向計數器,所以最高PWM頻率比快速PWM模式慢了一半。
43、T2定時器的分頻系數與T0不同,注意區別
44、T1定時器在讀取數據時,先讀低八位,再讀高八位。在寫入數據時,先寫高八位,再寫低八位。就像對高位壓棧一樣。
45、由于T1可以修改計數器的上限值(TOP),所以可以產生頻率可變的PWM波形,而T0/T2定時器無法做到這一點
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)有兩路同時輸出,OC1A,OC1B
47、T1輸入捕捉功能:觸發信號由ICP1輸入或者又模擬比較器AC0輸入。觸發時,TCNT1的值被寫入到ICR1中置位ICF1。此外,ICNC(Input Capture NoiseCanceler)為噪聲抑制功能,實現原理就是延遲4個CK檢測電平變化,如果連續4個CK不變,則認為是真正的觸發。ICES(InputCapture Edge Select)為觸發邊緣的選擇,0為下降沿,1為上升沿
48、模擬比較器(正極AIN0和負極AIN1),SFIOR(Special Funciton IO Register)中的ACME(Analog Comparator MultiplexerEnable)模擬比較多路使能,置1并且ADC失能,比較器負極接到ADC的多路開關。置0,比較器負極接到AIN1。ACSR(AnalogComparator Control and Status Register)模擬比較器控制和狀態寄存器。ACD(AnalogControlDisable)置1時,切斷模擬比較器的開關。在改變設置時,應先失能ACIE,禁止產生模擬器比較中斷。ACO(Analog Comparator Output)模擬比較器輸出。ACIS[1:0](AnalogComparatorInterrupt Select)模擬比較器中斷模式選擇
49、AVCC為ADC模塊的獨立電源。參考電源可選擇片內2.56V,AVCC或者外部參考電源
50、ADMUX(ADC多路復用選擇寄存器),ADLAR(ADC LeftAdjust Result)結果左對齊。ADCSRA(
ADC控制和狀態寄存器A),ADEN,ADC使能位。ADSC(ADC Start Conversion)開始轉換位。ADATE(ADC Auto TriggerEnable)自動觸發開始轉換,信號源由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 RecevierandTransimitter)支持四種工作模式:普通異步模式、雙倍速異步模式、主機同步模式和從機同步模式。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-wireSerialInterface,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黑幣 +5 收起 理由
放輕菘 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:290796 發表于 2018-12-3 16:46 | 只看該作者
總結得不錯啊。雖然AVR用了很久,還真沒有了解得這么熟悉過。收藏了!
回復

使用道具 舉報

板凳
ID:149451 發表于 2018-12-28 08:56 | 只看該作者
正準備開始學習AVR單片機,看到上面這些,被嚇到了。感覺這是“掃盲”嗎?這么些條條都搞清楚了,是不是“大學”應該畢業了吧???
回復

使用道具 舉報

地板
ID:422553 發表于 2019-3-4 20:23 | 只看該作者
總結的恰到好處
回復

使用道具 舉報

5#
ID:8222 發表于 2019-3-23 15:22 | 只看該作者
謝謝分享,很好。。。。
回復

使用道具 舉報

6#
ID:607710 發表于 2020-2-29 17:28 | 只看該作者
把上面的弄清楚,進入大神級別
回復

使用道具 舉報

7#
ID:693665 發表于 2020-3-17 21:39 | 只看該作者
看了一下    我要學到啥時候呀
回復

使用道具 舉報

8#
ID:52178 發表于 2020-3-18 20:57 | 只看該作者
樓主厲害
回復

使用道具 舉報

9#
ID:821328 發表于 2020-9-22 16:26 | 只看該作者
剛剛開始自學,感覺好難
回復

使用道具 舉報

10#
ID:879338 發表于 2021-1-21 10:52 | 只看該作者
第一次看到這么專業的文章,佩服!
回復

使用道具 舉報

11#
ID:879563 發表于 2021-1-21 22:00 | 只看該作者
總結的相當到位,新手上路,多多賜教
回復

使用道具 舉報

12#
ID:28260 發表于 2021-6-27 09:22 | 只看該作者
很透徹,學習了,謝謝!
回復

使用道具 舉報

13#
ID:81441 發表于 2021-8-10 09:53 | 只看該作者
詳細的科普,謝謝。
回復

使用道具 舉報

14#
ID:72587 發表于 2021-8-16 16:58 | 只看該作者
如何使用模擬比較器,
回復

使用道具 舉報

15#
ID:72587 發表于 2021-8-16 22:59 | 只看該作者
想用ATmega8模擬比較器 比較兩個模擬量大小。看了好久ATmega8手冊,也沒有弄明白怎么啟用PD7和PD6引腳的第二功能AIN0和AIN1。望大師指教。
回復

使用道具 舉報

16#
ID:55016 發表于 2021-8-20 22:45 | 只看該作者
學習了,感覺這個時間學習,別人都淘汰了。。。
回復

使用道具 舉報

17#
ID:936712 發表于 2021-8-31 21:46 | 只看該作者

看了一下    我要學到啥時候呀
回復

使用道具 舉報

18#
ID:314110 發表于 2021-10-2 20:13 | 只看該作者
感謝樓主,總結的太好的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美另类在线观看 | 国产激情一区二区三区 | 久久成人国产精品 | 国产精品99免费视频 | 黄色在线免费观看视频 | 国产一区二区三区色淫影院 | 成人一区二区三区在线 | a级毛片基地 | 中文字幕亚洲区一区二 | 亚洲高清网 | 久久久女女女女999久久 | 日韩第一夜 | 日韩在线中文字幕 | 成人久久视频 | 国产在线精品一区二区三区 | 91中文字幕在线 | av黄在线观看 | 在线欧美小视频 | 日本人爽p大片免费看 | 成人午夜精品 | 一区二区三区精品视频 | 午夜影院在线观看免费 | 国产精品免费福利 | 久久精品免费观看 | 国久久 | 日韩成人精品在线 | 国产91av视频 | 久久久久久毛片免费观看 | 免费观看一级毛片 | 精国产品一区二区三区四季综 | 午夜久久av | 亚洲欧美在线一区 | 欧美一级在线观看 | 亚洲男人天堂 | 欧美国产免费 | 99久久精品免费 | 日日夜夜草 | 免费av观看 | 91欧美激情一区二区三区成人 | 麻豆视频在线免费看 | 久久i|