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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機ATmega16的CCD驅動電路的設計

          基于單片機ATmega16的CCD驅動電路的設計

          作者: 時間:2010-10-22 來源:網(wǎng)絡 收藏

          CCD是一種固體成像器件[1],應用廣泛。CCD工作需要多路脈沖驅動,并且各路脈沖在時序上要嚴格對應。對于CCD時序的設計,通常采用CPLD和FPGA技術,CPLD在低頻CCD時序設計中使用[2-4],F(xiàn)PGA則用在更為復雜的時序設計中[5]。對于驅動比較簡單的線陣CCD沒有必要用這種成本比較高的電路。本文針對東芝公司的線陣CCD芯片TCD1304設計了基于單片機ATmega16的驅動電路。采用ATmega16的定時器/計數(shù)器timer0的CTC(比較匹配時清零定時器)模式和timer1的相位與頻率修正PWM模式產(chǎn)生所需要的基本波形,可通過修改單片機程序中的參數(shù)來改變輸出波形的頻率和占空比,使得波形調整便捷。
          1 ATmega16的CTC模式及相位與頻率修正PWM模式
           ATmega16的timer0的CTC模式可通過令控制寄存器TCCR0的WGM01=1和WGM00=0來設定。寄存器OCR0用于調節(jié)計數(shù)器的分辨率,當計數(shù)器的數(shù)值TCNT0等于OCR0中的值時計數(shù)器清零,即OCR0定義了計數(shù)器的TOP值,亦即分辨率。這個模式使得用戶可以很容易地控制比較匹配輸出的頻率。CTC模式的時序圖如圖1所示。計數(shù)器數(shù)值TCNT0一直累加到TCNT0與OCR0匹配,然后TCNT0清零。

          本文引用地址:http://www.ex-cimer.com/article/173173.htm

          為了在CTC模式下得到波形輸出,可以設置輸出腳OC0在每次比較匹配發(fā)生時改變邏輯電平,這可以通過設置COM01:0=1來完成。在期望獲得OC0輸出之前,首先要將其端口設置為輸出。波形發(fā)生器能夠產(chǎn)生的最大頻率由公式fOC0=fclk_I/O/2·N·(1+OCR0)來確定,變量N代表預分頻因子(1、8、64或1 024)。
           ATmega16的timer1的相位與頻率修正模式可通過令控制寄存器TCCR1A和TCCR1B中的WGM13:0=8或9來設定。該種模式可以產(chǎn)生高精度的、相位與頻率都準確的PWM波形,其工作時序圖如圖2所示。這是一種雙斜坡操作的模式,計數(shù)器重復地從BOTTOM計數(shù)到TOP,然后又從TOP倒退回到BOTTOM。TOP的值可由ICR1(WGM13:0=8)或OCR1A(WGM13:0=9)來確定。在一般比較輸出模式下,當TCNT1向TOP計數(shù)時,若TCNT1與OCR1A相匹配,輸出腳OC1A(B)清零,并置為低電平;當TCNT1向BOTTOM計數(shù)時,若TCNT1與OCR1A相匹配時,輸出腳OC1A(B)置為高電平,工作于反向輸出比較時正好相反。輸出的PWM波形的頻率由公式fOC1A(B)=fclk_I/O/2·N·TOP來確定,變量N代表預分頻因子(1、8、64或1 024)。通過改變ICR1及OCR1A兩個寄存器的值就可完成PWM波形占空比的調整。

          2 線陣圖像傳感器TCD1304的時序分析
          CCD芯片TCD1304是一款高靈敏度、低暗電流的線陣圖像傳感器,其光電靈敏度的典型值可達到160 V/lx.s,可用于條碼掃描、光譜測量等場合。TCD1304有兩種工作方式:普通工作方式和電子快門工作方式,圖3為在普通工作方式下的時序圖。


          上一頁 1 2 3 下一頁

          關鍵詞: 功率模塊

          評論


          相關推薦

          技術專區(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); })();