در میکروکنترلر های AVR  از معماری “هاروارد”  استفاده شده است بطوریکه در این معماری حافظه میکروکنترلر به دو قسمت حافظه برنامه ) از نوع Flash ) و حافظه داده (از نوع EEPROM )  تقسیم می شود و هر کدام از این دو حافظه از گذرگاه مجزا استفاده می کنند . معماری هاروارد در مقایسه با معماری سنتی فون نیومن سریع تر است. شکل زیر تفاوت دو معماری را نشان می دهد .

آموزش برنامه نویسی AVR

حافظه داده SRAM

این حافظه جهت ذخیره سازی موقت اطلاعات در اختیار کاربر قرار می گیرد و با قطع تغذیه آی سی اطلاعات آن از بین می رود. این حافظه به طور مستقیم در اختیار CPU  نمی باشد ، برای دستیابی به آن از  یکی از 32 رجیستر عمومی به عنوان واسط استفاده میشود . یعنی جهت انجام هر عملیات دیتا نمیتواند مستقیما از SRAM به ALU  منتقل شود بلکه باید ابتدا به یکی از 32 رجیستر عمومی برود و از آنجا به ALU منتقل شود.

حافظه داده EEPROM

این حافظه که توسط رجیستر های عمومی 32 گانه با CPU در ارتباط است دائمی بوده و با قطع برق از بین نمی رود.  از این حافظه میتوان در مواقعی که مقدار یک داده در برنامه مهم بوده و نباید با قطع برق یا ریست شدن از بین برود استفاده کرد .

حافظه برنامه FLASH

این حافظه دائمی پرسرعت برای ذخیره برنامه کاربر استفاده می گردد . در واقع حافظه فلش در میکروکنترلر به دو قسمت تقسیم شده است بخشی برای بوت شدن سیستم و بخشی برای برنامه کاربر مورد استفاده قرار می گیرد. فیوز بیت ها (Fuse Bits) و بیت های قفل ( Lock Bits )  نیز در قسمت بوت لودر  حافظه فلش وجود دارند. در قسمت دیگر این حافظه برنامه کاربر وجود دارد که در هنگام کار میکرو خط به خط خوانده شده و اجرا می شود .