• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (b9015038)




SAME54-有關SmartEEPROM操作
#31
資深會員
資深會員


我測試
csp_apps_sam_d5x_e5x\apps\nvmctrl\nvmctrl_smarteeprom

在MHC設定smarteeprom size的地方,這個說明看不出哪一欄要設定什麼東西吧...?
MHC

查了datasheet,看到下面的說明:
DataSheet
The SBLK bits indicate the number of blocks allocated per SmartEEPROM virtual sector.

The SmartEEPROM virtual page size (PSZ bits). This configuration is loaded after a reset into
SEESTAT.PSZ bits.

看起來MHC的兩欄指的是SEESTAT.PSZ(上欄) 與SEESTAT.SBLK(下)?
然後SEESTAT.SBLK選0表示4,選1表示8,...,是這樣?

DataSheet那張圖應該要怎麼解釋?
以範例中的1,3為例的話,表示有1個page,1個sector有32個block,此時SmartEEPROM size為4096(Bytes)?
這裡面的page、sector及block間是什麼關係?怎麼組合出4096這個size的?

MHC的NVMCTRL裡好像沒有SmartEEPROM 的enable選項,所以這是個預設開啟的功能,不想使用的話就把SEESTAT.PSZ與SEESTAT.SBLK都設成0,是這個意思嗎?

發表於: 2021/5/26 15:14
頂部


有關Watchdog設定
#32
資深會員
資深會員


我測試Watchdog時,發現在Configuration Bits中與MHC的system->Device&Project Configuration中都可以設定值

請問在這兩個地方設定有什麼不同的地方嗎?
如果兩邊的值不一樣,最後會用哪邊的值?

Configuration Bits

MHC

Attach file:



jpg  watchdog_mhc.jpg (89.48 KB)
4537_60ade793cd87b.jpg 743X547 px

發表於: 2021/5/26 14:19
頂部


Re: 請教SAME54,EVSYS設定
#33
資深會員
資深會員


感謝提示,看到設定的地方了。

這個設定方式最好能加個說明在Event System Configuration畫面中,我在
範例說明

csp說明網頁
都沒有看到
(還有中國版裡的MPLAB Harmony之基础篇(22) - 如何通过EVENT SYSTEM和DMA 实现无CPU参与的ADC连续采样.pdf)

要靠自己找到設定方式難度頗高啊

發表於: 2021/5/26 8:36
頂部


請教SAME54,EVSYS設定
#34
資深會員
資深會員


我試用範例:
csp_apps_sam_d5x_e5x\apps\evsys\evsys_trigger\firmware\sam_e54_xpro.X

他的功能是按下SW0後,toggle LED0 (PC18)

從MHC中,我看到
設定畫面一
設定畫面二


從畫面一中我看到EIC_EXINT_15,這個我知道它是SW0(由圖二),
但PORT_EV_0為什麼可以對應到PC18?
我在專案中搜尋只看到
#define EVENT_ID_USER_PORT_EV_0                           1 /**< ID for PORT event user EV_0 */


請問PORT_EV_0對應到PC18 (LED 0)應該要從哪裡看?
Toggle這個動作是在哪邊定義的?

發表於: 2021/5/25 15:02
頂部


Re: SAME54 - 請教測量外部輸入的方波頻率
#35
資深會員
資深會員


感謝回覆

我在發問時提到的"Timer的Capture範例",就是您說的
\csp_apps_sam_d5x_e5x\apps\tc\tc_capture_mode

從說明檔:/csp_apps_sam_d5x_e5x/docs/apps/tc/tc_capture_mode/readme.html

這個範例用了兩個Timer,一個用來產生800Hz的輸入(compare),來接到另一個capture Timer

我把Timer產生的800Hz換成信號產生器,振幅調成與timer輸出一樣(約3.3V),但量起來有誤差,輸入800Hz只量到795Hz,且頻率上升後誤差還會變大

再來是capture的用法須先註冊callback
void capture_handlerTC_CAPTURE_STATUS statusuintptr_t context)
{
    if ((
status  TC_CAPTURE_STATUS_CAPTURE0_READY) == TC_CAPTURE_STATUS_CAPTURE0_READY)
    {
        
tc_buffer_ready true;
    }
}


如果外面沒有pulse輸入時,它就不會被觸發,主程式中偵測的地方就會停下來,我希望這個量測是連續的,即沒有變化時應量到值為0Hz

所以看起來SAM系列並沒有辦法設定Timer的clock source來做counter?
(就是說Ryang提到的External Clock,其實並沒有這個功能?)

(在plib看到一個FREQM,很高興開起來,結果是用來量internal RC Oscillator的頻率...,有什麼應用會須要用到這個?)

發表於: 2021/5/25 14:42
頂部


Re: SAME54 - 請教測量外部輸入的方波頻率
#36
資深會員
資深會員


呃,感謝回應啦

抓pulse我以前在PIC18F67K22上面做過啦,以前就是在INT遞增去數pulse,然後每秒拿出來看數了幾次

現在是因為程式裡要做的事比較多,想說看看是不是MCU自己有提供什麼比較方便的功能可以做到
(理論上要數的頻率也不高,應該也是用INT自己遞增一下counter就行了)

我第一次用Atmel的chip做產品,以前都是用PIC的,兩個功能不太一樣,想說看有沒有人知道MCU有什麼內建的功能可以做這個

發表於: 2021/5/25 10:32
頂部


SAME54 - 請教測量外部輸入的方波頻率
#37
資深會員
資深會員


我想從外部輸入方波,頻率大概在2K Hz以下

大概500ms取一次頻率值

以前使用PIC18時Timer中有像是T0CKI,參考
(或是直接找可當INT的pin來輸入,再用Timer定時取值)

但在SAME54的Timer中沒有看到類似的腳,參考

請問SAME54有類似的功能嗎?我試著用Timer的Capture範例接信號產生器,值有些誤差,輸入800Hz時值會差到5Hz左右,且沒有信號時因不會觸發中斷,就沒辦法持續測量

請問在SAME54上要量pulse頻率一般是用什麼來做?

發表於: 2021/5/25 8:37
頂部


Re: Harmony V3 - FreeRTOS Sercom RingBuffer Mode錯誤
#38
資深會員
資深會員


感謝提示

我再試了一次,先加入Driver再右鍵加入sercom5,的確設定值就被固定在non-blocking mode了

在freeRTOS範例中:
HarmonyV3\core_apps_sam_d5x_e5x\apps\rtos\freertos\basic_freertos\firmware\sam_e54_xpro.X

這個範例的MHC設定值

看起來連driver都沒加,就直接用了sercom2 + ring buffer

找了些說明,裡面看起來也是配合driver使用,這個範例可能有點偷懶?


為什麼使用driver時會鎖定使用non-blocking mode?這樣在操作上比較方便嗎?還是只是因為這個功能還沒被支援?

Harmony產生的driver在code裡幾乎沒有說明,找範例又常出現這種讓人困惑的內容,讓人不知道用哪種模式較好

主要還是說明文件實在太少,感覺討論也不太熱烈好像用的人不多,遇到問題找不到答案有種孤兒的感覺...


再提一下論壇裡不支援上傳圖片嗎?這樣用google drive發以後檔移掉就看不見啦

發表於: 2021/5/6 15:41
頂部


Harmony V3 - FreeRTOS Sercom RingBuffer Mode錯誤
#39
資深會員
資深會員


MPLAB 5.45
Harmony V3,core, csp都是3.9.0 (Local Packages中所有項目都已更新目前最新版)

使用sam e54 xplained Pro Evaluation Kit


我試著用Harmony V3新建專案,然後使加入FreeRTOS, Sercom 5,並選擇RingBuffer Mode

Generate Code後按Compile就直接出現錯誤訊息

MHC設定

Compile錯誤訊息

看起來是plib_sercom5_usart.c沒有產生對應的driver function,DRV_USART_PLIB_INTERFACE中要用時發生錯誤

這個問題去年我在測試的時候便發現了,到了現在還是一樣的問題…

且SERCOM的Operation Mode若只有plib時,似乎會被鎖住(變灰色)不能設定?此時若再拉進FreeRTOS組件,仍會鎖住,必須把MHC關掉重開才會變成可以設定
(但開啟下面範例並沒有這個現象:
\HarmonyV3\csp_apps_sam_d5x_e5x\apps\sercom\usart\usart_ring_buffer_interrupt\firmware\sam_e54_xpro.X)

我不太確定這個規則是什麼,也許在FreeRTOS下只支援某種Operation Mode,所以其它選項會發生錯誤?

請問在FreeRTOS中使用SERCOM,有什麼建議的設定方式嗎?

Attach file:



jpg  MHC_ring_buffer_error.jpg (307.32 KB)
4537_609242bbad138.jpg 1305X903 px

發表於: 2021/5/5 15:25
頂部


Re: SAME54 Bootloader範例請教
#40
資深會員
資深會員


感謝提示,

我搜尋時也看到這篇,有提到可以使用MPLAB IPE來產生(如附檔)
我試了一下,除了.bin檔外,也產生了一個.pm3檔案,不知功能為何

所以在compiler選項中新增
${MP_CC_DIR}/xc32-objcopy -I ihex -O binary ${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.hex ${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.bin

就每次compile完會自動新增bin檔的樣子,應該是比較方便些

我想知道bin檔裡的內容是怎麼定義的,如hex檔中有:
:1010000014EF09F0FF00FF005982FACF03F0FBCF85


表示起始位址0x1000,資料長度16位,類型為data

.bin檔的內容是怎麼mapping到program memory的?是否有相關的說明?
(.bin檔是否只是把hex中每一行的data段轉為binary後連在一起?)

因我從範例程式看起來,bin檔讀出後完全沒有處理就直接用NVMCTRL_PageWrite寫入了,addr都必須自己計算(bootloader必須寫死app起始位址而非從hex檔中讀出每行的位址)

請教一下基礎概念:
.SAME54每個指令的長度(1 instruction = ? Bytes)
.Program memory及hex檔在顯示時,每一行為16 Bytes (Hex的Data部份),hex檔中的每一行是幾個instruction?
.PC在前進時,每次應該是前進1個instruction?(若沒有jump的話)

有沒有專門解釋相關概念的說明?

其實我目前只是想知道,bootloader中每次燒錄512Bytes,是否裡面固定包含512 / 16 = 32行Hex?




case BOOTLOADER_READ_FILE:
        {
            
fileReadLength SYS_FS_FileRead(btlData.fileHandle, (void *)fileBufferPAGE_SIZE);

            
/* Reached End of File */
            
if (fileReadLength <= 0)
            {
                
SYS_FS_FileClose(btlData.fileHandle);

                
bootloader_TriggerReset();
            }
            else
            {
                
btlData.currentState BOOTLOADER_PROCESS_FILE_BUFFER;
            }

            break;
        }

        case 
BOOTLOADER_PROCESS_FILE_BUFFER:
        {
            
bootloader_NVMPageWrite(fileBuffer);

            
memset((void *)fileBuffer0xFFPAGE_SIZE);

            
btlData.currentState BOOTLOADER_READ_FILE;

            break;
        }




void bootloader_NVMPageWrite(uint8_tdata)
{
    
NVMCTRL_PageWrite((uint32_t *)databtlData.progAddr);

    while(
NVMCTRL_IsBusy() == true);

    
btlData.progAddr += PAGE_SIZE;
}

Attach file:



jpg  MPLAB_IPE.jpg (167.82 KB)
4537_6090bca6e2941.jpg 1920X1048 px

發表於: 2021/5/4 12:13
頂部



« 1 2 3 (4) 5 6 7 ... 18 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------