新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)一些學(xué)習(xí)筆記

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

作者: 時(shí)間:2013-05-30 來源:網(wǎng)絡(luò) 收藏

25、 DDRx=1,I/O口處于推挽輸出工作方式,PORTn為1輸出20mA電流,為0吸納20mA電流。DDRx = 0,I/O口處于輸入工作方式,將PINx中的電平讀入到DB上(PORTn用來設(shè)置是否使用內(nèi)部上拉電阻,1為使用,0為不使用)在SFIOR中有一位PUD,PUD=1全部I/O上拉電阻無效,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)軟件清除,清除的方法是寫1),硬件也同時(shí)自動(dòng)清除I標(biāo)志位(缺省不能進(jìn)行中斷嵌套,SEI將I置1,使能中斷嵌套功能)。

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

32、 中斷響應(yīng)至少需要4個(gè)CK才能開始運(yùn)行中斷向量表中的跳轉(zhuǎn)指令(清I,清中斷標(biāo)志位,壓棧PC,中斷向量送入PC),至于要真正開始運(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中的中斷寫法: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位)寄存器用來存放計(jì)數(shù)數(shù)值,如果在計(jì)數(shù)器運(yùn)行期間寫入數(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,然后重新開始計(jì)數(shù),如果匹配OCR0則根據(jù)COM[1:0]中的設(shè)置值分別置位或者清0OC0,以此來輸出PWM波形。相位可調(diào)PWM模式(WGM[1:0]=1):雙向計(jì)數(shù)器,所以最高PWM頻率比快速PWM模式慢了一半。

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

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

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

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

47、 T1輸入捕捉功能:觸發(fā)信號(hào)由ICP1輸入或者又模擬比較器AC0輸入。觸發(fā)時(shí),TCNT1的值被寫入到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的多路開關(guān)。置0,比較器負(fù)極接到AIN1。ACSR(AnalogComparator Control and Status Register)模擬比較器控制和狀態(tài)寄存器。ACD(AnalogControl Disable)置1時(shí),切斷模擬比較器的開關(guān)。在改變?cè)O(shè)置時(shí),應(yīng)先失能ACIE,禁止產(chǎn)生模擬器比較中斷。ACO(Analog Comparator Output)模擬比較器輸出。ACIS[1:0](AnalogComparator Interrupt Select)模擬比較器中斷模式選擇。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉