從8/16位向32位圖形MCU升級的技巧
是我開(kāi)始嘗試移植第12章中代碼的時(shí)候了:“黑屏”確實(shí)是一件有趣的事情。用PIC24,我能夠演示SPI端口是如何的簡(jiǎn)單,只需要三只電阻器,幾個(gè)中斷,以及一些創(chuàng )新就可以產(chǎn)生一個(gè)復合視頻信號,特別是可以將任意的電視機轉換成單色顯示器。要產(chǎn)生一個(gè)視頻信號,需要中斷代碼與外設之間的精密協(xié)調。實(shí)際上,因為即便是在輸出定時(shí)上只差一個(gè)時(shí)鐘周期,在顯示器屏幕的左側就會(huì )產(chǎn)生可見(jiàn)的抖動(dòng)(所有的豎直線(xiàn)都變得像鋸齒一樣),故訓練結果將是用于中斷“決策”的一個(gè)理想放大鏡,這是PIC架構傳統上一直出眾的特性。然而不幸的是,根據定義,指令預取和存儲器緩存機制都是非確定的。本文引用地址:http://dyxdggzs.com/article/173681.htm
經(jīng)過(guò)一段苦思冥想,我最終明白了。我在試圖做不應該做的事情!32位內核是為了提高性能而設計的。其使命是C代碼的運行盡可能地快,而把實(shí)時(shí)嚴格的工作留給外設。特別是,DMA外設是一個(gè)非常好的工具。
最終,我想出了如何利用定時(shí)器直接產(chǎn)生復合視頻信號,并將DMA數據傳輸同步到SPI端口的方法。這種新方案提供了確定性的定時(shí),而且還將CPU的開(kāi)銷(xiāo)減少了大約25%到5%。幾個(gè)小時(shí)工作后,我完成了2D和3D視頻演示并運行,還加上了動(dòng)畫(huà),從高清顯示一直到單顯VGA(實(shí)例見(jiàn)圖3和圖4)。
圖3:用PIC32所產(chǎn)生的3D圖形。
圖4:用PIC32所產(chǎn)生的不規則幾何圖形。
開(kāi)發(fā)PIC32很快變成一件令人上癮的事情,結果是很好的回報,那就是讓我完成了一本有關(guān)32位器件新書(shū)的寫(xiě)作之旅!PIC32與早先的16-bit PIC24微控制器的兼容性是那樣的無(wú)縫。這款新的MIPS內核的速度和性能給我留下了深刻的印象,大大擴展了任何先前的PIC MCU都無(wú)法實(shí)現的應用范圍。
表1:PIC24F AD1CON寄存器的并排比較。
評論