新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AVR的微功耗電刺激器

        基于AVR的微功耗電刺激器

        作者: 時間:2013-10-15 來源:網絡 收藏

          4 功能實現及軟件編程

          ATmega48有131條指令,大多是單機器周期指令,指令系統非常豐富。ATmega48在指令設計時很好地考慮到C語言的操作模式,用C語言編程可以得到很高的代碼效率。ATmega48屬于系列的單片機,常用的用于單片機開發的C語言有兩種:-ICC和AVR-GCC。AVR-ICC是商業的AVR的C語言集成化開發工具(IDE),界面友好,使用簡單,有生產和代理商很好的技術支持。而AVR-GCC是依靠網絡流行的公開源代碼的自由軟件,可以從網上(http://www.avrfreaks.net)免費下載編譯軟件和各種工具軟件。由于AVR-GCC有大量的高手參與開發和眾多網上參與者的測試,其軟件的更新速度和代碼效率以及軟件缺陷率的排除都非常出色。但是AVR-GCC是由UNIX平臺上移植過來的,保留了類似UNIX的操作方式,對于不熟悉UNIX的WINDOWS用戶,其使用時入門很困難,只有熟練使用后才能感到其功能的強大。在http://www.avrfreaks.net網上有關于AVR-GCC的論壇,使用中的許多問題都可以在論壇上得到幫助。由于AVR-GCC具有低廉的使用成本和出色的功能,所以本系統選用AVR-GCC作為編程工具。

          在工作的間歇期進入休眠狀態。ATmega48有6種休眠方式,每一種方式休眠的部件不相同,休眠后單片機的功耗也不同。由于在休眠時要求定時重新喚醒進行工作,必須保留一個定時器的工作。因此選用的休眠方式為IDLE,在IDLE方式下定時器2仍然可以工作。以下是休眠部分的程序。

          set_sleep_mode(SLEEP_MODE_IDLE); //設置休眠方式為IDLE
        SMCR |= _BV(SE);         //允許休眠
        _asm_ _volatile_ ('sleep' 'nt' :: ); //進入休眠
        SMCR amp;= ~_BV(SE); //從休眠中喚醒,進入工作狀態,不允許休眠

          定時器2用于對休眠期的時間間隔計時。t2_init_idle(void) 是進入休眠狀態前初始定時器2的程序,SIGNAL(SIG_OVERFLOW2)是休眠狀態下定時器2的中斷服務程序。每1分鐘定時器2將會產生溢出中斷,喚醒單片機。

          void t2_init_idle(void){ //定時器2進入休眠狀態前的初始化
        CLKPR=(1<<CLKPCE); //允許改變系統時鐘;進入休眠狀態前改變系統時鐘
        CLKPR=0x05; //系統時鐘的分頻比例為32,系統時鐘為4kHz
        TCCR2A=0; //定時器/計數器2工作于定時器方式
        TIMSK2=(1<<TOIE2); //允許定時器2溢出中斷
        TCCR2B=0x07; //定時器2時鐘分頻比例為1024
        TCNT2=32; //定時器2產生1分鐘定時的初始值
        }
        SIGNAL(SIG_OVERFLOW2){ //定時器2溢出的中斷服務程序
        TCNT2=32; //重置定時器2產生1分鐘定時的初始值
        min++; //分鐘計數
        }

          當喚醒5次,即休眠5分鐘后,單片機重新進入喚醒工作狀態。在喚醒工作狀態下,使用定時器2控制脈沖的寬度和頻率,需要定時器2重新初始化,并將系統時鐘恢復到128kHz(程序略)。

          設置定時器0工作于PWM輸出方式,用于控制刺激強度。

          void t0_init(void){ //定時器0初始化為PWM輸出
        TCCR0B=(1<<CS01); //定時器0時鐘分頻比例為8
        TCCR0A=(1<<WGM00)|(1<<WGM01); //快速PWM方式
        TCCR0A|=(1<<COM0B1); //符合時為低電平,峰值變高
        OCR0B=outv; //輸出電平用OCR0B控制
        }

          系統總程序流程如圖4所示。

          電刺激實驗器的開發是為了植入大鼠體內,研究電刺激對癲癇抑制的機理。本研究開發的電刺激實驗器整體結構尺寸為Φ17mm(直徑) x 7mm(厚)。脈沖發生放大電路用開關方式實現,大大降低了系統的功耗。采用ATmega48單片機控制輸出脈沖,精度高、功耗小、工作可靠、可以連續工作一個月以上,滿足了實驗的要求。


        上一頁 1 2 3 下一頁

        關鍵詞: AVR 微功耗 電刺激器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 酉阳| 西昌市| 乳源| 正宁县| 扎鲁特旗| 瓮安县| 桐梓县| 若尔盖县| 平乡县| 印江| 治县。| 枣强县| 托克逊县| 汕头市| 长兴县| 孝义市| 荣昌县| 东乌珠穆沁旗| 安陆市| 库车县| 潞城市| 四川省| 平罗县| 射阳县| 景德镇市| 长子县| 沂南县| 元阳县| 宾川县| 平谷区| 乐东| 阿克| 嘉峪关市| 闻喜县| 曲阳县| 喀什市| 江川县| 淅川县| 光山县| 汾西县| 林芝县|