冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 572|回覆: 0
打印 上一主題 下一主題

[討論] ATmega4809 多通道示波器

[複製鏈接]

2609

主題

0

好友

945

積分

高級會員

Rank: 4

UID
373967
帖子
7420
主題
2609
精華
0
積分
945
楓幣
1080
威望
925
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
407 小時
註冊時間
2023-1-12
最後登入
2024-5-1

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-22 19:16:56 |只看該作者 |倒序瀏覽
需要以下材料:

ATmega4809微控制器:這是示波器的主要處理器,負責處理輸入的信號和顯示輸出結果。
示波器顯示器:顯示器類型可以是LCD顯示器、OLED顯示器或其他類型的顯示器。
示波器探頭:這些探頭用於檢測和捕捉要顯示在示波器屏幕上的信號。
聲音蜂鳴器:用於發出聲音信號,以便提示操作者。
電源供應:用於為示波器提供所需的電力。
杜邦線、面包板等電子元件:用於建立電路和連接各個零件。


以下是ATmega4809多通道示波器的程式碼示例


#include <avr/io.h>
#include <avr/interrupt.h>

// 設定ADC和DMA
void setupADC() {
    // 設定ADC採樣率為20kHz
    ADC0.CTRLA = ADC_ENABLE_bm | ADC_RESSEL_12BIT_gc | ADC_FREERUN_bm | ADC_RUNSTBY_bm;
    ADC0.CTRLB = ADC_SAMPNUM_ACC4_gc | ADC_CURRLIMIT_HIGH_gc;
    ADC0.CTRLC = ADC_PRESC_DIV4_gc | ADC_REFSEL_VDDREF_gc;
    ADC0.MUXPOS = ADC_MUXPOS_AIN0_gc;
    ADC0.COMMAND = ADC_STCONV_bm;

    // 設定DMA
    DMA.CTRL |= DMA_RESET_bm;
    DMA.CTRL = DMA_ENABLE_bm | DMA_PRIMODE_CH0123_gc;
    DMA.CH0.CTRLA = DMA_CH_SINGLE_bm | DMA_CH_REPEAT_bm | DMA_CH_BURSTLEN_2BYTE_gc;
    DMA.CH0.CTRLB = DMA_CH_TRNINTLVL_LO_gc;
    DMA.CH0.ADDRCTRL = DMA_CH_SRCRELOAD_BLOCK_gc | DMA_CH_SRCDIR_INC_gc | DMA_CH_DESTRELOAD_BURST_gc | DMA_CH_DESTDIR_INC_gc;
    DMA.CH0.TRFCNT = 2;
    DMA.CH0.SRCADDR0 = (uint8_t)(uintptr_t)&ADC0.RES;
    DMA.CH0.SRCADDR1 = (uint8_t)((uintptr_t)&ADC0.RES >> 8);
    DMA.CH0.DESTADDR0 = (uint8_t)(uintptr_t)&PORTA.OUT;
    DMA.CH0.DESTADDR1 = (uint8_t)((uintptr_t)&PORTA.OUT >> 8);
    DMA.CH0.DESTADDR2 = 0x04;
    DMA.CH0.CTRLA |= DMA_CH_ENABLE_bm;
}

// 初始化
void setup()

{
// 設定輸入和輸出引腳
PORTA.DIRSET = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm | PIN4_bm | PIN5_bm | PIN6_bm | PIN7_bm;
PORTB.DIRSET = PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm | PIN4_bm | PIN5_bm | PIN6_bm | PIN7_bm;

// 設定時鐘
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, CLKCTRL_PEN_bm | CLKCTRL_PDIV_2X_gc);

// 設定中斷
sei();
}

// 主要循環
void loop() {
// 進入睡眠模式以節省電力
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_mode();
}

// 主程序
int main() {
setup();
setupADC();
while (1) {
loop();
}
}
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-1 05:35

回頂部