乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      avr單片機(jī)的定時(shí)器、中斷和PWM(轉(zhuǎn))

       KevinGuo079 2012-08-04
       
      中斷:我的理解就是cpu執(zhí)行時(shí),遇到中斷——根據(jù)對(duì)應(yīng)的中斷源(硬件或軟件)——pc定位中斷入口地址,然后根據(jù)這里的函數(shù)指針——跳轉(zhuǎn)到相應(yīng)的服務(wù)程序

          之所以上面()了硬件或軟件,這里還涉及到向量中斷和非向量中斷:區(qū)別就在于確定中斷源,如果是硬件編碼了中斷源的,直接跳轉(zhuǎn)相應(yīng)的服務(wù)函數(shù)則是向量中斷。而非向量中斷指的是:如果發(fā)生中斷了,但此時(shí)還不清楚是那個(gè)中斷,需要查找標(biāo)志位來(lái)確定跳轉(zhuǎn)到那個(gè)中斷區(qū)域。

          可以發(fā)現(xiàn)向量中斷肯定來(lái)的快些,這里為定時(shí)器的中斷來(lái)做好準(zhǔn)備。

          再來(lái)看看avr單片機(jī)的定時(shí)器:

      定時(shí)器/計(jì)數(shù)1(16位)————分為普通模式,CTC模式,快速pwm模式,相位修正pwm模式,相位頻率修正pwm模式,輸入捕獲模式。

          普通模式

         *1 寄存器TCCR1B (控制寄存器)

                                                                      0

          ICNC1      ICES1             WGM13        WGM12       CS12       CS11        CS10

         

          CS12  CS11 CS10控制分頻(內(nèi):預(yù)分頻器):取值0-5對(duì)應(yīng)了停止,無(wú)分頻,8,64,256,1024

          當(dāng)為110為下降沿驅(qū)動(dòng),111為上升沿驅(qū)動(dòng)(外部):用于對(duì)外部信號(hào)的計(jì)數(shù)

       

          *2上面的計(jì)數(shù)結(jié)果放在計(jì)數(shù)寄存器TCNT1,TCNT0中(高低8位)

       

          *3中斷屏蔽寄存器(TIMSK)

               OCIE2      TOIE2      TICIE1   OCIE1A    OCIE1B    TOIE1     OCIE0      TOIE0

           TOIE1 :設(shè)置為溢出中斷,置1

       

      嘿嘿,有了上面的3個(gè)寄存器就可以做秒表等了——思路為:設(shè)定控制寄存器(內(nèi)分頻,還是外部計(jì)數(shù)?)——裝初值——設(shè)置中斷方式(這里用了溢出)——打開(kāi)中斷

      注意點(diǎn):裝初值時(shí)需要先寫(xiě)高位TCNT1,再寫(xiě)低位TCNT0,讀時(shí)相反

               TCCR1B=0x01;無(wú)分頻

               TCNT1H=0x88;

               TCNT1L=0x88;TIMSK|=BIT(2); 再開(kāi)中斷 SREG|=bit(7);  這樣初始化oK!

        由于avr不像51無(wú)int code等之類定義的方法,用的是#pragma data:code   底下為存儲(chǔ)的內(nèi)容

        寫(xiě)中斷也類似:#pragma interrupt_handler  (中斷函數(shù)名:向量號(hào))miao:9 (現(xiàn)在該理解向量中斷吧)

          寫(xiě)好申明后就寫(xiě)函數(shù)體了 void miao(){中斷服務(wù)程序} 

                這樣作為普通用法就小功告成了

           總結(jié)一下就是模式,初值,中斷 (對(duì)應(yīng)的3個(gè)寄存器)  和具體C函數(shù)的寫(xiě)法

       

      CTC模式比較輸出模式 用于輸出50%占空比的方波信號(hào),用于產(chǎn)生準(zhǔn)確的連續(xù)定時(shí)信號(hào)

      硬件:對(duì)應(yīng)了pd4,pd5輸出比較b和a

      比較輸出
        *1 寄存器TCCR1A(控制寄存器)  功能多了寄存器也分a、b了^_^       

                                                                      0

        com1A1     COM1A0    com1B1     COM1B0        FOC1A       FOC1B       WGM11       WGM10

          用到了4567和01     4、5控制b  6、7控制a

        com1A(B)1   COM1A(B)0      一般用00和01          WGM11,WGM10放在底下講

                           普通i/0

                          比較匹配時(shí)輸出取反

                          比較匹配時(shí)輸出0

                          比較匹配時(shí)輸出1

         *2 寄存器TCCR1B (控制寄存器)  

                                                                      0

          ICNC1      ICES1             WGM13        WGM12       CS12       CS11        CS10

          CS12、CS11、CS10為設(shè)置時(shí)鐘源的  

          WGM13,WGM12,WGM11,WGM10用于波形產(chǎn)生描述的位選擇,有對(duì)應(yīng)的表0-15  這里選了4:CTC-OCR1A-立即更新-最大     OCR1A (16位)輸出比較寄存器-這里存放了上限值  

          設(shè)置的目的是,計(jì)數(shù)上升到了設(shè)定的上限后就電平取反 

       

      思路:先初始話,對(duì)應(yīng)的復(fù)用i/o為輸出——設(shè)定com1A(B)1,COM1A(B)0 為比較輸出取反——設(shè)定上限值為ocr1A   就ok了

          0CR1A可以根據(jù)公式計(jì)算:具體公式看手冊(cè),這里因?yàn)槲掖虿黄饋?lái) o(∩_∩)o...哈哈

        總結(jié)一下就是控制寄存器a,b以及上限的值即可產(chǎn)生方波

      快速PWM

         分8位9位10位快速pwm,以及自定義方式

          我的理解:OCR1A存放上限值,這樣用上了A的功能,由上面可知A只能為方波了,且計(jì)數(shù)到這個(gè)值時(shí)取反

          下限值通過(guò)OCR1B來(lái)確定的,從而計(jì)數(shù)到這個(gè)值置0,從而可以發(fā)現(xiàn)在一個(gè)周期內(nèi) OCROB即為高電平的時(shí)間(確定占空比)如圖

      TCCR1A=0x63;TCCR1B=0x1B;   工作方式(快速pwm15,64分頻)和分頻系數(shù)

      OcR1A=1249;OCCR1B=250;     設(shè)為100Hz PWM信號(hào),和2毫秒的高電平時(shí)間

       總結(jié)一下就是控制寄存器:由上限值,和分頻系數(shù)可以確定計(jì)數(shù)的時(shí)間,確定頻率

                               由下限值可以確定占空比

        怎么樣?明白了嗎?o(∩_∩)o...

      相位修正PWM 

      和快速pwm一樣,模式分8位9位10位快速pwm,以及自定義方式共5種對(duì)應(yīng)123和10,11

      相位修正其實(shí)和上面的方法相同,只不過(guò)到最大值時(shí),不是取反,而是計(jì)數(shù)--,直到到了下限時(shí)取反

      由上可以發(fā)現(xiàn)2圖的區(qū)別吧,一個(gè)為到TOP后,直接置0,后者為--,且在top不取反而是到了最小值是取的,周期故而也比快速的長(zhǎng)了一倍,故頻率為快速pwm的一半,但是占空比不變,這也是為什么叫快速pwm的原因
      TCCR1A=0x63;TCCR1B=0x13    工作方式(相位修正pwm11,64分頻)和分頻系數(shù)

      OcR1A=1249;OCCR1B=250;     設(shè)為100Hz PWM信號(hào),和2毫秒的高電平時(shí)間

      相位頻率修正PWM 

      和相位修正的類似
      輸入捕獲

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多