新聞中心

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

AVR單片機一些學習筆記

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

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

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

PORTA ^= (1

輸入口操作:

PINA (1 PORTAx) // 位讀取

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

30、 滿足中斷條件,AVR硬件自動將相應的中斷標志位置1,并且由硬件自動清除(僅對于部分中斷有此功能,當然也可以手動軟件清除,清除的方法是寫1),硬件也同時自動清除I標志位(缺省不能進行中斷嵌套,SEI將I置1,使能中斷嵌套功能)。

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

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

33、 在使能中斷允許位之前,最好先將對應中斷源的中斷標志位清除,為了防止在使能時,會立馬產生一次“多余”的中斷。

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

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

36、 T/C0和T/C2可產生PWM,頻率發(fā)生器,外部事件計數器(僅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被置位時,滿足條件即可觸發(fā)對應的中斷。

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中可以輸出可變的高低電平信號??焖貾WM模式(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不同,注意區(qū)別。

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)??焖貾WM模式(GWM1[3:0]=5,6,7,14,15)有兩路同時輸出,OC1A,OC1B。

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

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



評論


相關推薦

技術專區(qū)

關閉