Re: Harmony USART Driver對MAX485傳收的方向控制問題
|
||||
---|---|---|---|---|
管理員
|
由於選用了 Asynchronous USART Driver, 因此一旦Submit transfer task後App即可馬上做其他事, 但真正的Transfer就必須等到Driver處裡到Queue中的Transfer Request才會發生, 唯一可以攔截Rx/Tx的Driver Transfer Callback卻都是在完成後才會Callback.
如果因為傳送或是接受前需要"同步"做的一些事, 那可以選擇Synchronous USART Driver mode, 則每次傳送及接收時都必須等到完成才會往下做, 這樣就可以在下達Read/Write Transfer前, 先控制DE/~RE pin了, 並且在傳送完成後關閉DE/~RE pin 如果要保有Asynchronous USART Driver的Queue排隊方式時, 目前USART Driver沒有可在Rx/Tx發生前可以插入"Callback"的API, 因為Callback是Interrupt發生時才會做的, 時間點不對也就不是Callback. 正確應該是想辦法在Driver Transfer Queue中, 每次處裡要Read/Write request前, 可以正確地插入DE/~Re pin控制的code才是, 那這樣就必須要去改Gen出的code了! Harmony 沒有規定不能去改他Gen出來的Code, 很多時候是需要去改的, 所以在Gencode時, 才會有Merge User code的選項, 只是如果自己改了code, 就必須要確保加上去的code不會影響Framework的運作. 以下幾點方向可以嘗試看看 1. 因為 SERCOM PLIB已經被USART Driver給全權管理了, 因此絕對不能再去呼叫SERCOM PLIB下的API不然會造成Driver混亂, 比如去呼叫SERCOMx_USART_WriteCallbackRegister()等等, 2. 可以去Driver中尋找Queue的Transfer Request, 何時被抓出來交給SERCOM PLIB執行 Read/Write, 基本上在這個Moment時的動作幾乎是馬上被PLIB執行的, 因此在這時去控制 DE/~RE pin應該不會有問題, Driver中的static function為 _DRV_USART_ReadSubmit() 與 _DRV_USART_WriteSubmit() 3. 由於 Driver全部使用 Function Pointer來進行操作, 所以可以在Driver initialization時, 查出PLIB的Function在Driver中變成什麼樣子, 這樣比較好找到PLIB在哪個地方被Driver給呼叫執行, code改在這裡就比較safe.
const DRV_USART_PLIB_INTERFACE drvUsart0PlibAPI = {
發表於: 2021/9/14 8:18
|
|||
|
Re: ATSAMD51J18A 有關Code Protect相關文件
|
||||
---|---|---|---|---|
管理員
|
關於您的問題, 是否有使用Bootloader呢?
1. 如果要避免Flash被debugger讀出來時,請設定NVM Fuse 中的 Security bit,但是您的問題這個應該無效. 2. 如果是Flash前面幾個Byte被不明破壞(寫入)時,請設定NVM Fuse中的Boot Protect,可以指定要保護開機區的Byte數. 3. 如果想要保護整個Flash或是大區域時,請設定NVM Fuse中的 Region Lock,可以指定要Lock的區塊 4. 電壓不穩時,一樣要去設定NVM Fuse中的 BOD值,避免讓MCU在電壓不穩時工作. 注意! 一但設定Boot Protect或是Region Lock時,則被保護及鎖定的Flash區域,將無法再被燒錄新程式, Erase All 可以清除Flash全部內容, 但是無法解除(清除)Boot Protect及Region Lock的設定, 因此 要 Reprogram 之前一定要先解除(清除)Boot Protect及Region Lock的設定後,才能釋放被保護或鎖定的Flash區域,否則 Reprogram 會失敗 Note: Atmel studio 7中可以找到Fuse的設定介面,如果是使用MPLAB X IDE時,則在 Configuration bit中設定。
發表於: 2021/9/11 18:28
Edited by Libra on 2021年09月23日 10:25:18
|
|||
|
Re: ATSAMD51J18A 有關Code Protect相關文件
|
||||
---|---|---|---|---|
管理員
|
不是很清楚您的問題, 可否詳述?
發表於: 2021/9/9 8:12
|
|||
|
Re: 請問如何匯出MCH的Pin Configuration
|
||||
---|---|---|---|---|
管理員
|
這個功能在新版的Harmony v3已經拿掉
請先用截圖方式替代
發表於: 2021/9/9 8:11
|
|||
|
Re: ATSAMC21J18A FLASH 模凝 EEPROM
|
||||
---|---|---|---|---|
管理員
|
這部分SAMC2x/D2x沒有參考應用, 可參考類似的範例,
\HarmonyFramework\csp_apps_sam_c20_c21\apps\nvmctrl\nvmctrl_flash_read_while_write SAMD5x/E5x的範例可以研究 https://microchip-mplab-harmony.github ... rom_emulation/readme.html
發表於: 2021/9/6 8:12
|
|||
|
Re: ATSAMC21J18A WDT
|
||||
---|---|---|---|---|
管理員
|
課程目的是舉一反三, 給上課的學員建立Harmony應用的基礎,
Harmony的範例都可以在Framework的目錄下找的到, 不是每一顆晶片的所有周邊都有做成範例, 因此有時候需要也需要參考別的晶片的範例來觸類旁通. \HarmonyFramework\csp_apps_sam_c20_c21\apps\wdt\wdt_timeout
發表於: 2021/9/6 8:08
|
|||
|
Re: ATSAMC21j18a adc 參考電壓pin
|
||||
---|---|---|---|---|
管理員
|
因為這是ADC的科普知識, 建議先自行學習
發表於: 2021/8/30 18:44
|
|||
|
Re: ATSAMC21j18a adc 參考電壓pin
|
||||
---|---|---|---|---|
管理員
|
你用這個算是Bandgap電壓, 內部電壓一般是指供應給MCU的電壓後, 由MCU內部自己的某組電壓來當參考電壓, 因此ADC轉換值, 就會與系統電壓VCC/VDDANA產生一定的計算關聯, 用Bandgap電壓可以當成校準值
發表於: 2021/8/30 13:52
|
|||
|
Re: ATSAMC21j18a adc 參考電壓pin
|
||||
---|---|---|---|---|
管理員
|
看來大家上完 RTC 與 CAE空中教室 的SAM課程後 ,大家都開始在這個園地相互討論SAM的設計不再只是PIC系列了, 很棒呢!
Dginlon說的沒錯喔! 空中教室上的 SAMD21, ADC 沒有設計rail to rail 的internal ADC Vref, 同一時期開發的兄弟SAMC21也是沒有rail to rail的Internal ADC Vref, 但是! SAMD21的bandgap 只能有 1.1V的選項! 而SAMC21的bandgap可以有1.024V, 2.048V及4.096V的選項, 也就是ADC的 INTREF, 其中若選擇INTREF = 4.096V時的VDDANA必須大於4.5V 所以當 VDDANA = 4.5V時也還是沒有 rail to rail INTREF = 4.5V 的選項, 只能到4.096V 回答jxchenpp01的問題: 在Harmony中請選擇ADC vref為 bandgap, 另外新增 SUPC component可以選擇INTREF(1.024/2.049/4.096V) 因為這個功能少用, 我自己沒設定過, 可否請你測完跟大家說是否還有缺甚麼呢? 謝謝! Attach file: SAMC21_ADV_INTREF.jpg (197.07 KB) SAMC21_ADC_INTVREF.jpg (123.67 KB) SAMC21_ADV_INTREF_MHC.jpg (138.05 KB) SAMC21_ADC_SUPC.jpg (190.23 KB)
發表於: 2021/8/30 12:41
|
|||
|