2007年8月8日 星期三

多核的幾個方便用途

FPPA 八核常常只用到4-5個就很夠了,下的 CPU 可以拿來作別的用途~蠻方便的…
一、當成硬體訊號輸入模擬
 例如~模擬回授信號,一個純的無雜訊信號,方便驗證其它核心程式的正確性。
二、當成系統監測 CPU
 隨時監看系統狀況,必要時透過 RS232 即時傳回系統狀態。
三、拿來校正系統時脈
四、拿來唱歌
…有想到再補充

2007年8月2日 星期四

Melody 音調

昨天我在已經跑了 6 個核的 FPPA 上多加了可以反應按鍵並發聲的程式~
只用了不到一分鐘,結果非常滿意,不止聲音好、即時、還能在背景執行(形容成這樣蠻貼切的)~

底下各音階個音符的頻率:
音階 Do Re Mi Fa So La Si
低音 頻率
(Hz) 131 147 165 175 196 220 247
中音 頻率
(Hz) 262 294 330 349 392 440 494
高音 頻率
(Hz) 522 587 659 700 784 880 988

讓MCU發聲,這讓我想到了之前寫 PIC 程式的一些心得…
以前寫慣了 Windows 程式,總是習慣於用事件的處理方式來寫作,當某個條件觸發時才會去作處理。
有點類似 MCU 的 interrupt 處理方式~中斷來了或 timer 到了才去作特定的事。
事實上這樣子寫作也確實比較條理分明,有的負責處理狀態的變化、有的負責處理該作的事、有的負責時序的變化,CPU在不同的狀態之間飛舞,一切都在你的預料之中…
初寫 PIC 也是用這樣子的方式來寫程式~寫起來很快~難只難在一些時序的計算光用腦袋想像是不夠的~(這時有個示波器什麼都能迎刃而解)~再怎麼寫跑起來也是八九不離十,比起複雜的AP程式,某些地方來講 MCU 的程式確實是非常簡單~(呵~當然是在不考慮硬體的情況下)
但是這樣子的情況在卻被一個簡單的嗶嗶聲給崩解~
問題關鍵點是:
1.我需要定時用掃描的方式去作輸出(例如掃LED DISPLAY數字出來)
2.我還要在有按鍵按住時持續發出嗶~~~的音調
在PIC,我用TIMER中斷來製造1,我用POOLING的方式來偵測按鈕的動作,同時在按住時,持續發聲。
程式看起來沒問題~跑起來卻完全不是想像那樣美妙= ="
發出來的聲音是破破的~聽的出來有斷斷續續~LED也看的到閃閃動人= =
搞了 N 種方法~努力嚐式去均擔、固定住兩邊的時序~而過程跟結果卻都是非常惱人~"~
顧了這邊掉了那邊~時序怎麼橋就是橋不順~
最後是妥協了~為了發出正常的聲音,在按鍵時只得將LED先關掉~(結果證明聲音比較重要,搞不好還沒人意識到LED燈不見了)
回想起來~也算是一場惡夢了= =" (還不是自己功力太差才這樣 = =" )

現在覺得~有多核可以用還真是幸福~

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...