<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          AVR單片機一些學習筆記

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

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

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

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

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

          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可產(chǎn)生PWM,頻率發(fā)生器,外部事件計數(shù)器(僅T/C0),10位時鐘預分頻器,溢出和比較匹配中斷源,允許用32.768kHz晶體作為獨立的計數(shù)時鐘源(僅T/C2)。

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

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

          39、 OCR0中的數(shù)據(jù)會一直和TCNT0中的數(shù)值進行比較,如果匹配,將產(chǎn)生一個比較匹配的中斷申請或者改變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):計數(shù)到0xFF會產(chǎn)生溢出中斷,TOV0置1。比較匹配清0計數(shù)器CTC模式(WGM[1:0]=2):f=f(IO)/(2N(1+OCR0)),TCNT0和OCR0匹配,匹配后TCNT0清0重新計數(shù),同時置OCF0為1,便于產(chǎn)生中斷。在中斷中改變OCR0的值,在OC0中可以輸出可變的高低電平信號??焖貾WM模式(WGM[1:0]=3):f=f(IO)/(256N),TCNT0從0計數(shù)到0xFF,然后重新開始計數(shù),如果匹配OCR0則根據(jù)COM[1:0]中的設置值分別置位或者清0OC0,以此來輸出PWM波形。相位可調(diào)PWM模式(WGM[1:0]=1):雙向計數(shù)器,所以最高PWM頻率比快速PWM模式慢了一半。

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

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

          45、 由于T1可以修改計數(shù)器的上限值(TOP),所以可以產(chǎn)生頻率可變的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)為噪聲抑制功能,實現(xiàn)原理就是延遲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,禁止產(chǎn)生模擬器比較中斷。ACO(Analog Comparator Output)模擬比較器輸出。ACIS[1:0](AnalogComparator Interrupt Select)模擬比較器中斷模式選擇。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();