Ray
September 16, 2021, 1:19am
1
大家好,我近期在進行 Interrupt 的測試
使用RTL8722DM的開發版,用 Arduino IDE 進行開發
但是觸發 Interrupt 的時候,會 delay 50 us 之後才觸發函式
想詢問這個問題是甚麼原因造成的呢?
code :
//INPUT
#define READY 28
#define TEST_PIN 27
void button_handler(uint32_t id, uint32_t event) {
digitalWrite(TEST_PIN, HIGH);
}
void setup() {
pinMode(READY, INPUT);
pinMode(TEST_PIN, OUTPUT);
pinMode(READY, INPUT_IRQ_FALL);
digitalSetIrqHandler(READY, button_handler);
}
void loop() {
digitalWrite(TEST_PIN, LOW);
}
1 Like
Hi @Ray
建議嘗試使用外部電路來觸發interrupt,然後再看是否會有速度上的提升?
總而言之,Arduino并不會對MCU的效能有什麽優化,更多是兼容性和易用性,因此一定會損失一些效能
Ray
September 16, 2021, 4:05pm
3
@xidameng 您好
我是透過訊號產生器給予 3.3V - 8kHz 的訊號來觸發 interrupt 的喔
再透過示波器檢視觸發訊號,發現有大約 50us 的延遲
所以是因為使用 Arduino IDE 開發,才會有這樣的狀況嗎?
若想要排除這樣的狀況,是需要更換 IDE 開發嗎?
是否有推薦的 IDE 開發平台呢?
1 Like
瞭解
建議可以使用下面的example再試一試,因爲Arduino環境默認會運行FreeRTOS,這會比下面使用bare-metal的example多使用一些CPU時間
需要注意的是,下面的example是瑞昱的Standard SDK,在Windows上使用的時候,需要安裝Cygwin環境,詳細的上手教程在這裏:
https://www.amebaiot.com/zh/ameba-sdk-getting-started-8722/
Ray
September 21, 2021, 9:52am
5
@xidameng 您好
我按照手冊進行 Standard SDK Image download 時
發生了 Err: Flashloader download fail 錯誤
想詢問您這個錯誤是發生了甚麼問題呢?
1 Like
Hi @Ray
Flashloader download fail很有可能是路徑錯誤了
建議你使用路徑爲SDK\tools\AmebaD\Image_Tool\ImageTool.exe 來下載試試
Ray
September 21, 2021, 1:27pm
8
@xidameng 您好
我按照您提供的網頁上的說明進行操作
使用的開發版是 RTL8722DM mini
但是依然發生 Err: Flashloader download fail 錯誤
1 Like
請看一下image tool的相同路徑下有沒有一個叫imgtool_flashloader_amebad.bin
的文檔,一般這個文檔都會放在和image tool同路徑之下,就像這樣:
Ray
September 22, 2021, 11:47am
10
有喔,在 image tool 的路徑底下存在著這個檔案喔
可以試最後一個方法,把所有需要的bin檔都放在上圖中的這個資料夾中,然後再嘗試一次
需要的bin有:
km0_boot_all.bin
km4_boot_all.bin
km0_km4_image2.bin
Ray
September 22, 2021, 2:29pm
12
成功了,非常感謝您的協助
另外想詢問您,檔案的放置位置是這樣,對嗎?
km0_boot_all.bin : 0x08000000
km4_boot_all.bin : 0x08004000
km0_km4_image2.bin : 0x08006000
Ray
September 23, 2021, 6:43am
14
您好,目前想透過 GCC 編譯範例內的程式
關於 RTL8722DM_AN0400.pdf 內的第四、五步驟不太明白
想詢問您
4. Add C++ files into protect. We have tested a small program and provide it as an example, which can be found in main.cpp.
指的是將 main.c 放置在 /project/realtek_amebaD_va0_example/GCC-RELEASE 之下嗎?
5. Use command make in console to compile project with C++ files.
這邊指的是 make all:/project_lp 與 /project_hp,然後再透過 ImageTool 燒錄至開發版內嗎?
1 Like
Ray:
Add C++ files into protect. We have tested a small program and provide it as an example, which can be found in main.cpp.
指的是將 main.c 放置在 /project/realtek_amebaD_va0_example/GCC-RELEASE 之下嗎?
您有cpp的檔案嗎? 如果沒有就不用擔心了,所有的example的main.c都要放在以下的路徑中
Ray:
Use command make in console to compile project with C++ files.
這邊指的是 make all:/project_lp 與 /project_hp,然後再透過 ImageTool 燒錄至開發版內嗎?
請使用您已經驗證可用的方法來燒錄吧,image tool是個很好的選擇
Ray
September 24, 2021, 2:05am
16
@xidameng 您好
非常感謝您的協助,我已經成功運行 gpio_irq 範例
然後針對 GPIO 的 Interrupt 功能再進行了一次測試
我使用訊號產生器,產生了 8k Hz 訊號 trigger Interrupt Pin
然後再用示波器觀察 Output Pin 與訊號產生器的訊號
還是有大約 50us 的 delay 問題 (每次delay的時間都有些微差距)
1 Like