微芯片結(jié)合了令人印象深刻的PIC和AVR微控制器(MCU)系列,擁有市場領(lǐng)先的8位MCU系列。作為一名嵌入式開發(fā)人員,理想情況下,為給定項(xiàng)目選擇MCU是基于哪個(gè)設(shè)備(外圍設(shè)備)最適合實(shí)現(xiàn)應(yīng)用程序的功能。
通常,這取決于MCU上不同外設(shè)的組合。例如,你可能有嚴(yán)格的模擬測量應(yīng)用要求,要求仔細(xì)檢查MCU的模數(shù)轉(zhuǎn)換器(ADC)。在一種應(yīng)用中,PIC
MCU的10位模擬數(shù)字轉(zhuǎn)換器(ADCC)外圍設(shè)備(視頻)可能具有優(yōu)勢,因?yàn)橹С指鞣N類型的獨(dú)立于核心的后采樣計(jì)算。對于另一個(gè)應(yīng)用,AVR
MCU的12位差分ADC可能由于其分辨率或與AVR
MCU的事件系統(tǒng)一起操作而具有優(yōu)勢。這兩種ADC都提供相對專門的功能,根據(jù)應(yīng)用要求提供某些優(yōu)勢。
熟悉生態(tài)系統(tǒng)的支持對MCU選擇有重大影響。為了將重點(diǎn)放在為其設(shè)計(jì)選擇最佳的MCU和外圍設(shè)備上,在過去的幾年中,已經(jīng)做出了巨大的努力來調(diào)整PIC和AVR
MCU產(chǎn)品系列的工具支持。Microchip仍致力于支持Atmel Studio 7和Atmel START生態(tài)系統(tǒng)中的新AVR設(shè)備。此外,AVR
MCU已添加到MPLAB
X集成開發(fā)環(huán)境(IDE)和MPLAB代碼配置器(MCC),統(tǒng)一了這些MCU系列之間的開發(fā)經(jīng)驗(yàn)。通用工具生態(tài)系統(tǒng)的支持旨在讓你快速使用新的MCU系列,顯著降低探索障礙。然而,對于嵌入式開發(fā)人員來說,使用MCU進(jìn)行舒適的開發(fā)比工具生態(tài)系統(tǒng)更深入,一直到寄存器級(jí)或裸機(jī)編碼。
理解項(xiàng)目中的所有代碼
MPLAB代碼配置器(MCC)或Atmel
START等代碼生成工具是在設(shè)計(jì)中節(jié)省大量時(shí)間的絕佳方法。但是,如果你不理解這些工具生成的代碼,你可能永遠(yuǎn)不會(huì)對它們感到完全滿意。具有諷刺意味的是,你可能只在不再需要該工具時(shí)才信任它。作為一名嵌入式開發(fā)人員,你還知道,如果不自己至少修改一些寄存器級(jí)代碼,就不可能進(jìn)入生產(chǎn)環(huán)境。
裸機(jī)編碼:使用設(shè)備數(shù)據(jù)表和頭文件作為主要編程參考
MCU由幾個(gè)構(gòu)建塊或模塊組成:CPU、SRAM、閃存、EEPROM和外圍設(shè)備(如ADC)。其中每一項(xiàng)都在設(shè)備數(shù)據(jù)表中定義,并可通過寄存器進(jìn)行配置。“裸機(jī)編碼”中的“金屬”指的是設(shè)備寄存器,因此它指的是寫入配置MCU模塊所需的寄存器級(jí)代碼的實(shí)踐。該寄存器級(jí)代碼的形式受設(shè)備頭文件的影響,而設(shè)備頭文件又受MCU外圍模塊(數(shù)據(jù)表)的結(jié)構(gòu)的影響。所以,高效地編寫裸機(jī)代碼需要數(shù)據(jù)表模塊結(jié)構(gòu)以及頭文件定義的工作知識(shí)。除代碼示例外,在該級(jí)別開發(fā)的主要編程參考通常是MCU數(shù)據(jù)表和設(shè)備頭文件。
裸機(jī)編碼是一種嵌入式開發(fā)技能,往往需要在同一MCU系列上的多個(gè)項(xiàng)目中掌握。對于特定的MCU,工程師熟悉MCU系列的數(shù)據(jù)表模塊和頭文件的組織方式的隱式模式。對這些模式的了解有助于該MCU系列的快速開發(fā),但也會(huì)造成選擇不同MCU的阻力,即使它可能更適合新項(xiàng)目。隨著時(shí)間的推移,能夠快速使用與頭文件定義相關(guān)的命名約定,使工程師能夠利用現(xiàn)代IDE的代碼完成功能,如MPLAB
X IDE(或Atmel Studio)。
MCC生成的項(xiàng)目的編碼樣式和項(xiàng)目結(jié)構(gòu)可能與你自己實(shí)現(xiàn)的不同。然而,在寄存器級(jí)別,MCC生成的代碼與手動(dòng)編寫的代碼非常相似。因此,使用MCC生成的代碼作為示例上下文,通過我們可以從PIC1000和AVR1000b應(yīng)用說明中了解的內(nèi)容,探索PIC和AVR
MCU寄存器級(jí)代碼之間的差異。在此過程中,我們還將指出一些你可能不知道的有趣的MPLAB X IDE編輯器特性。