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