مقدمه:
آشنايي با ميکرو کنترلرهاي :AVR

ميکرو کنترلر : به آي سي هايي که قابل برنامه ريزي مي باشد و عملکرد آنها از قبل تعيين شده ميکروکنترلرگويند ميکرو کنترل ها داراي ورودي – خروجي و قدرت پردازش مي باشد.
بخشهاي مختلف ميکروکنترلر :
ميکروکنترلر ها از بخشهاي زير تشکيل شده اند
Cpu واحد پردازش
Alu واحد محاسبات

I /O ورودي ها و خروجي ها
Ram حافظه اصلي ميکرو
Rom حافظه اي که برنامه روي آن ذخيره مي گردد
Timer براي کنترل زمان ها
و . . .

يک ميکروکنترلر چگونه برنامه ريزي ميشود: ميکرو کنترلر ها داراي کامپايلرهاي خاصي مي باشد که با زبان هاي Assembly basic, c مي توان براي آنها برنامه نوشت سپس برنامه نوشته شده را توسط دستگاهي به نام programmer که در اين دستگاه اي سي قرار مي گيرد و توسط يک کابل به يکي از در گاه هاي کامپيوتر وصل مي شود برنامه نوشته شده روي آي سي انتقال پيدا ميکند و در Rom ذخيره مي شود .

با ميکرو کنترلر چه کارهايي مي توان انجام داد:
اين آي سي ها حکم يک کامپيوتر در ابعاد کوچک و قدرت کمتر را دارند بيشتر اين آي سي ها براي کنترل و تصميم گيري استفاده مي شود چون طبق الگوريتم برنامه ي آن عمل مي کند اين آي سي ها براي کنترل ربات ها تا استفاده در کارخانه هاي صنعتي کار برد دارد .

ميکرو AVR داراي معماري است که مي تواند در تمام جهات مورد استفاده شما،عمل کند ميکرو AVR معماري دارد که براي شما کارايي ۱۶ بيتي ارائه مي دهد که البته قيمتش به اندازه يک ۸ بيتي تمام مي شود.

بهره هاي کليدي AVR :
داراي بهترين MCU براي حافظه فلش در جهان ! (MCU: Master Control Unit)
داراي سيستمي با بهترين هماهنگي
داراي بالاترين کارايي و اجرا در CPU (يک دستورالعمل در هر سيکل کلاک(
داراي کدهايي با کوچکترين سايز
داراي حافظه خود برنامه ريز
داراي واسطه JTAG که با IEEE 1149.1 سازگار است
(IEEE: Institute of Electrical and Electronics Engineers.)
داراي سخت افزار ضرب کننده روي خود

داراي بهترين ابزارها براي پيشرفت و ترقي
داراي حالات زيادي براي ترفيع دادن يا Upgrade
واژگان کليدي AVR :
ميکرو کنترلر AVR به منظور اجراي دستورالعملهاي قدرتمند در يک سيکل کلاک(ساعت) به اندازه کافي سريع است و مي تواند براي شما آزادي عملي را که احتياج داريد به منظور بهينه سازي توان مصرفي فراهم کند. ميکروکنترلر AVR بر مبناي معماري RISC (کاهش مجموعه ي دستورالعملهاي کامپيوتر) پايه گذاري شده و مجموعه اي از دستورالعملها را که با ۳۲ ثبات کار ميکنند ترکيب مي کند.

به کارگرفتن حافظه از نوع Flash که AVR ها به طور يکسان از آن بهره مي برند از جمله مزاياي آنها است. يک ميکرو AVR مي تواند با استفاده از يک منبع تغذيه ۲٫۷ تا ۵٫۵ ولتي از طريق شش پين ساده در عرض چند ثانيه برنامه ريزي شود يا Program شود. ميکروهاي AVR در هرجا که باشند با ۱٫۸ ولت تا ۵٫۵ ولت تغذيه مي شوند البته با انواع توان پايين Low Powerکه موجودند.
راه حلهايي که AVR پيش پاي شما مي گذارد، براي يافتن نيازهاي شما مناسب است:

با داشتن تنوعي باور نکردني و اختيارات فراوان در کارايي محصولات AVR، آنها به عنوان محصولاتي که هميشه در رقابت ها پيروز هستند شناخته شدند.در همه محصولات AVR مجموعه ي دستورالعملها و معماري يکسان هستند بنابراين زماني که حجم کدهاي دستورالعمل شما که قرار است در ميکرو دانلود شود به دلايلي افزايش يابد يعني بيشتر از گنجايش ميکرويي که شما در نظر گرفته ايد شود مي توانيد از همان کدها استفاده کنيد و در عوض آن را در يک ميکروي با گنجايش بالاتر دانلود کنيد.

 

خانواده هاي محصولات AVR :
Tiny AVR:
ميکروهاي مدل tiny توانايي هاي عظيمي دارند.به خاطر کوچک بودن و داشتن MCU بسيار پر قدرت به اينگونه ميکروها نياز فراواني هست آنها به هيچ منطق خارجي نياز نداشته و به همراه يک IC مبدل آنالوگ به ديجيتال و يک حافظه قابل برنامه ريزي EEPROM قابليتهاي خود را ثابت مي کنند.
ميکروکنترلري با اهداف کلي و با بيش از ۴ کيلو بايت حافظه فلش و ۱۲۸ بايت حافظه استاتيک و قابل برنامه ريزي است.(منظور از حافظه استاتيک SRAM و حافظه قابل برنامه ريزي EEPROM است).

نکات کليدي و سودمند مدل Tiny :
• آنها به منظور انجام يک عمليات ساده بهينه سازي شده و در ساخت وسايلي که به ميکروهاي کوچک احتياج است کاربرد فراوان دارند.
• کارايي عظيم آنها براي ارزش و بهاي وسايل موثر است.

Mega AVR:
اگر شما به ميکرويي احتياج داريد که داراي سرعت و کارايي بالا باشد و توانايي اجراي حجم زيادي از کد برنامه را داشته و بتواند داده هاي زيادي را سروسامان دهد بايد از AVR هاي مدل Mega استفاده کنيد آنها به ازاي هر يک مگا هرتز سرعت ، توانايي اجراي يک ميليون دستورالعمل در هر يک ثانيه را دارند همچنين قابل برنامه ريزي و بروزرساني کدها با سرعت و امنيت بسيار بالايي هستند. اين نوع ميکروها قابليت خود برنامه ريزي دارند و مي توان آنها را بدون استفاده از مدارات اضافي برنامه ريزي کرد همچنين بيش از ۲۵۶ کيلو بايت حافظه فلش و ۴ کيلوبايت حافظه استاتيک و قابل برنامه ريزي دارند.

نکات کليدي و سودمند مدل :Mega
• حافظه سريع از نوع فلش با عملکرد خود برنامه ريز و بلوکه ي بوت (Boot Block)
• دقت بسيار بالاي ۸-کانال در تبديل آنالوگ به ديجيتال ۱۰ بيتي
• USART و SPI و TWI بر طبق واسطه هاي سريال
• واسطه ي JTAG بر طبق IEEE 1149.1

TWI: Two Wire Interface is a byte oriented interface
USART: Universal Serial Asynchronous Receiver/Transmitter
SPI: Serial Peripheral Interface
JTAG available only on devices with 16KB Flash and up
واسط JTAG فقط در ميکروهاي با بيش از ۱۶ کيلوبايت حافظه فلش موجود است.

معايب و مزاياي ميکروکنترلر هاي مختلف

ميکرو کنترلر ۸۰۵۱:
اگربخواهيم به صورت کلي سير پيشرفت اين نوع ميکروکنترلر را در نظر بگيريم اولين ميکروکنترلر هايي که ساخته شد با جديدترين ميکروکنترلرهاي ۸۰۵۱ که الان توليد مي شود با توجه به پيشرفت شگفت که صنايع ديگر در دنيا دارند پيشرفت زيادي نکرده اند به طور مثال AT89S5X که ميکروکنترلر ۸۰۵۱ ساخت جديد ATMEL است نسبت به مدل هاي اوليه ۸۰۵۱ پيشرفت آنچناني ندارد . امکانات اين ميکرو نسبت به AVR و PIC قابل مقايسه نيست . به صورتي که که همين مد

ل جديد ۸۰۵۱ تقريبا حافظه اي برابر يک صدم (۰٫۰۰۱ ) ميکروکنترلر هاي AVR را دارد و سرعتش ۴ برابر کمتر از ميکروکنترلر هاي PIC و ۱۲ بار کمتر از ميکروکنترلر هاي AVR است . از لحاظ امکانات ديگر هم چنين ضعفي احساس ميشود. اما براي کارهاي ساده تر که پيچيدگي زيادي در آن نباشد به خاطر قيمت بسيار پاييني که اين ميکروکنترلر دارد بسيار مناسب است . قيمت مدل جديد AT89S5X حدود ۱۰۰۰ تومان است که قيمت بسيار مناسبي است.

اين ميکرو کنترلر از زبان اسمبلي و C پشتيباني ميکند که زبان برنامه نويسي اصلي آن اسمبلي است که واقعا نوشتن با اين زبان برنامه نويسي نسبت به زبان هاي برنامه نويسي ديگر هم مشکل تر و هم طولاني تر است. در کل اين ميکروکنترلر امروزه ديگر تواناي رقابت با AVR و PIC رو ندارد و امروزه رقابت اصلي بين اين دو ميکروکنترلر است .

ميکروکنترلرPIC :
اين خانواده از نظر امکانات مانند AVR ميباشد و در کل صنعتي تر است . ميکروکنترلر خيلي قوي است که بر اساس بعضي آمار ها بيشترين کاربر را به خود اختصاص داده است البته در ايران اين آمار به نفع AVR است. اين ميکروکنترلر ساخت شرکت ميکرو چيپ است که PIC رو در مدل هاي خيلي زيادي با امکانات مختلف براي کارهاي مختلف ميسازد . اين ميکروکنترلر با مدل هاي مختلفPIC16XXX و PIC12XXXX که به جاي X دوم از چپ به راست حروف C ,X,E,F قرار ميگيرد که هر کدام مفهوم خاصي دارد که X هاي بعدي هم اعدادي هستنند که نشان دهنده مدل هاي مختلف هستنند .

ميکروکنترلرAVR:
اين خانواده از ميکرو کنترلرها تمامي امکانات ۸۰۵۱ را دارا مي باشد و امکاناتي چون ADC مبدل آنالوگ به ديجيتال نوسان ساز داخلي و قدرت و سرعت بيشتر و( – EEPROM حافظه) از جمله مزاياي اين خانواده مي باشد.
.اول از همه سرعت اين ميکروکنترلر بسيار بالاست و دستوراتي که به آن داده مي شود را در يک سيکل کلاک انجام ميدهد در صورتي که اين سيکل کلاک براي ۸۰۵۱ بايد تقسيم بر۱۲شودو براي PIC بايد تقسيم بر ۴ بنابراين AVR سريعترين ميکروکنترلر موجود در بازار است . AVR از زبان هاي برنامه نويسي سطح بالا يا به اصطلاح (HIGH LEVEL LANGUAGE) HLLپشتيباني مي کند که

باعث توليد کدهاي بيشتري مي شود که در کل برنامه نوشته شده نسبت به برنامه هايي که براي ۸۰۵۱ و PIC نوشته مي شود کوتاهتر است. امکانات جانبي اين ميکروکنترلر بسيار مناسب است و شما را از خريد بعضي لوازم جانبي مانند چيپ هاي آنالوگ به ديجيتال (ADC) , مقايسه گر آنالوگ و… راحت ميکند.

در ضمن AVR از بسياري از استاندارد هاي ارتباطي مانند SPI,UART,12C,JTAG پشتيباني ميکند که به راحتي ميتوان اين ميکروکنترلر را با ميکروکنترلر ديگر يا به وسايل ديگر به راحتي وصل کرد. قيمت اين ميکروکنترلر هم به نسبت امکانات فراواني که داره بسيار پايين است به طوري که يک ميکروکنترلر AVR تقريبا پيشرفته رو با قيمت حول و حوش ۳ تا ۴ هزار تومان خريد .

شرکت ۵ Atmel ميکروکنترلر ۸ بيتي AVR جديد با توان مصرفي بسيار پايين براي استفاده در مدارات با تعداد کدهاي بالا و اينترفيسينگ زياد عرضه نموده است.
اين ميکروکنترلر ها با نام هاي ATmega640، ATmega1280، ATmega2560، ATmega1281، ATmega2561 عرضه شده است و داراي ۶۴ تا ۲۵۶ کيلو بايت flash و ۸ کيلو بايت RAM به صورت داخلي مي باشد.

اين ميکروهاي جديد مدارات جانبي ميکروها را با توجه به مدارات داخلي خود کاهش داده است که از آن جمله مي توان به وجود يک اسيلاتور RC 8مگا هرتزي در داخل خود که باعث حذف اسيلاتور خارجي گشته است را نام برد؛ از ديگر قابليت هاي جالب اين ميکرو مصرف بسيار پايين آن مي باشد اين ميکرو که با ۱٫۵ ولت کار مي کند در حالت power down تنها ۱۰۰ نانو آمپر مصرف مي کند که باعث افزايش عمر باتري خواهد شد..مدل ۱۰۰ پين اين ميکرو ها داراري ۴ کانال UART و ۱۶ عدد A/D مي باشد.

 

فيوز بيت ها، منابع كلاك وReset

فيوز بيت ها
فيوز بيت ها قسمتي از حافظه ي ميكروكنترلرAVRهستند كه امكاناتي را در اختيار كاربر قرار مي دهند و باErase شدن ميكرو مقدار آن ها تغيير نمي كند. يك به معني غير فعال بودن و صفر فعال بودن هر بيت مي باشد. قطعه ي mega 16 داراي ۲ بايت فيوز بيت طبق جدول زير مي باشد:

:BOOTRSTانتخاب برداري است BOOT كه در حالت پيش فرض برنامه ريزي نشده است و آدرس
برداري است۰۰۰۰ است و در صورت برنامه ريزي آدرس بردار Resetطبق جدول زير تعيين مي
شود) براساس(BOOTSZ [1,0]

:BODEN اين بيت فعال ساز Brown-out Detector بوده و در صورت پروگرام شدن مطابق وضعيت جدول زير سطح ولتاژ Brown-out تعيين مي شود.

منابع كلاك
همانطور كه در دياگرام زير ديده مي شود، اين منابع شامل: اسيلاتور RC كاليبره شده، اسيلاتور كريستالي فركانس پايين، اسيلاتور كريستالي، كلاك خارجي، اسيلاتور RC خارجي و اسيلاتور تايمر/كانتر مي باشند.

انتخاب منبع كلاك بوسيله ي فيوزبيت هاي CKSEL بوده و مطابق جدول زير مي باشد. مقدار پيش فرض بيت هاي , CKSEL يك بوده و در نتيجه منبع پيش فرض، اسيلاتور RC داخلي مي باشد.

كلاك خارجي : براي راه اندازي وسيله بوسيله ي منبع كلاك خارجي بايد مطابق شكل زير يك پالس به پين XTAL1 اعمال مي شود.براي قرار گرفتن در اين وضعيت بايد تمام بيت هاي CKSEL پروگرام شده (صفر شوند (و كاربر مي تواند با پروگرام كردن فيوزبيت CKOPTيك خازن داخلي به ظرفيت ۳۶ پيكوفاراد را بين ورودي وزمين قرار دهد.

اسيلاتور RCكاليبره شده ي داخلي: اين منبع در فركانس هاي ۱و۲و۴و۸ مگاهرتز موجود مي باشد و مقدار آن در دماي ۲۵ درجه و ولتاژ ۵ ولت كاليبره شده است كه در اين وضعيت ممكن است تا ۳ درصد در كلاك ايجاد شده وجود داشته باشد . فركانس نوسان بوسيله ي فيوزبيت هاي CKSEL تعيين شده و مطابق جدول زير مي باشد. در اين وضعيت CKOPT نبايد پروگرام شود.

اسيلاتور RC خارجي :
در كاربردهايي كه دقت كلاك اهميت زيادي ندارد مي توان از اين منبع استفاده كرد .پيكربندي مطابق شكل زير بوده و فركانس نوسان از رابطه ي بدست مي آيد . حداقل مقدار Cبرابر۲۲ پيكوفاراد بوده و در صورتي كه CKOPT پروگرام شود مي توان مقدار ۳۶ پيكوفاراد را نيز لحاظ نمود.

اين منبع نوسان مي تواند در چهار MODEكاري عمل كند كه هر كدام براي يك بازه ي فركانسي بهينه شده است و بوسيله ي فيوزبيت هاي CKSEL مطابق جدول زير انتخاب مي شود.

اسيلاتور كريستالي فركانس پايين: اين منبع كلاك مي تواند كريستال هاي فركانس پايين مثل كريستال ساعت با فركانس ۳۲۷۶۸ هرتز باشد با دادن مقدار ۱۰۰۱ به فيوزبيت هاي CKSEL. منبع كلاك كريستال خارجي فركانس پايين انتخاب شده و در اين وضعيت پيكربندي مطابق شكل زير مي باشد. در صورت پروگرام نمودن CKOPT مي توان از خازن خارجي صرفنظر نمود.

كريستال كوارتز يا رزوناتور سراميكي : پبن هاي XTAL1 و XTAL2 به ترتيب ورودي و خروجي يك تقويت كننده ي وارونگر هستند كه مي توانند به عنوان يك اسيلاتورOn-chip مطابق شكل زير پيكربندي شوند.

• به جاي كريستال كوارتز مي توان از رزوناتور سراميكي استفاده نمود كه از دوام بيشتري در مقابل ضربه بر خوردار است و زمان STARTUP كمتري نيز دارد و البته نسبت به كريستال كوارتز دقت كمتري داشته و پايداري دمايي آن نيز كمتر است.

• در اين وضعيت خازن هاي ۳۶ پيكو فاراد حذف شده و عملكرد فيوزبيت CKOPT نيز تغيير مي كند . بدين ترتيب كه با پروگرام شدن اين بيت دامنه ي خروجي تقويت كننده ي وارونگر افزايش يافته و مي توان از پين XTAL2 به عنوان كلاك براي يك وسيله ي ديگر استفاده نمود. همچنين با فعال كردن CKOPT در محيط هاي نويزي عملكرد اسيلاتور بهبود مي يابد.

• چنانچه از رزوناتور استفاده مي شود براي فركانس هاي بالاتر از ۸ مگاهرتز بايد CKOPT پروگرام شود.اسيلاتور مي تواند در سه وضعيت متفاوت نوسان كند كه هركدام براي يك محدوده ي فركانسي بهينه شده است و آن را مي توان با فيوز بيت هاي CKSEL مطابق جدول زير انتخاب نمود.

با هر يك از منابع كلاك انتخاب شده بوسيله ي فيوزبيت هاي ,CKSELدو بيت به نام هاي [۱,۰] SUT نيز وجود دارد كه از طريق آن مي توان حداكثر زمان Start-up منبع كلاك را به ميكرو اعلام نمود . مقدار اين بيت ها به طور پيش فرض ماكزيمم زمان Start-up را در نظر مي گيرد و در صورتي كه نياز است مقدار آن را تغيير دهيد مطابق جداول مربوطه در فصل System Clock and Clock Options در Datatsheet عمل كنيد.

منابع RESET
با Reset شدن ميكروكنترلر، تمام رجيسترهاي I/O به مقدار اوليه شان تغيير مي كنند و CPU شروع به اجراي دستورالعمل ها از بردار Reset خواهد كرد. در قطعه ي ۵ Mega 16 منبع Reset وجود دارد كه عبارتند از:

۱٫ Power-on Reset
2. External Reset
3. Brown-out Reset
4. Watchdog Reset
5. JTAG AVR Reset

منطق Reset مطابق دياگرام زير مي باشد:

مشخصات هر يك از منابع Reset را در جدول زير مشاهده مي كنيد:

Power-on Reset .1 : زماني فعال خواهد كه ولتاژ Vcc كمتر از حد تعيين شده باشد. اين منبع تضمين مي كند كه وسيله در زمان راه اندازي Reset مي شود . با رسيدن ولتاژ به حد آستانه ، شمارنده ي تاخير راه اندازي شده كه تعيين مي كند چه مدت وسيله در وضعيت Reset بماند . دياگرام زماني زير شرايطي را نشان مي دهد كه پين RESET به Vcc وصل شده است. (و يا آزاد باشد چون اين پين از داخل Pull-up شده است).

و نمودار زير شرايطي است كه سطح منطقي پين Reset تابع Vcc نمي باشد:

External Reset .2: اين Reset بوسيله ي يك پالس با سطح صفر منطقي روي پين Reset ايجاد شده و حداقل عرض آن ۱,۵ ميكرو ثانيه مي باشد . با رسيدن ولتاژ اين پين به مقدار آستانه در لبه بالا رونده، شمارنده ي تاخير شروع به كار كرده و پس از اتمام زمان Time-out ميكروكنترلر كار خود را شروع خواهد كرد.

Brown-out Detection .3: قطعه ي ATMega 16 داراي يك مدار Brown-out Detection داخلي بوده كه پيوسته مقدار ولتاژ Vcc را با يك مقدار ثابت مقايسه مي كند . اين مقدار ثابت برابر ۲,۷ ولت بوده و در صورتي كه فيوزبيت BODLEVEL پروگرام شود به ۴,۰ ولت افزايش مي يابد . با كمتر شدن ولتاژ تغذيه از اين مقدار ثا بت ميكروكنترلر وارد حالت Reset شده و با عادي شدن ولتاژ ، پس از اتمام تاخير به وضعيت عادي باز مي گردد .
براي حفاظت در برابر Spike مقدار آستانه داراي پسماند بوده و در نتيجه داراي دو مقدار مثبت و منفي مي باشد كه با توجه به مقادير موجود در جدول از رابطه ي و بدست مي آيد.
مدار Brown-out Detection در حالت عادي غير فعال بوده و براي راه اندازي آن بايد فيوزبيت BODEN پروگرام (صفر) شود.

Watchdog Reset .4 : با اتمام زمان تايمر Watchdog ،تايمر يك پالس به عرض يك سيكل ايجاد خواهد كرد . در لبه ي پايين رونده ي اين پالس، تايمر تاخير شروع به شمارش زمان تاخير كرده و پس ازاتمام آن ميكروكنترلر كار عادي خود را ادامه خواهد داد.

MCU Control and Status Register

اين رجيستر محتوي اطلاعاتي است كه نشان مي دهد كداميك از منابع Reset باعث راه اندازي مجدد CPU شده است. نرم افزار پس از خواندن هر بيت بايد با نوشتن صفر بر روي آن، پرچم را پاك كند تا در صورت Reset مجدد، وقوع آن قابل تشخيص باشد.

Bit 0 – PORF: Power-on Reset Flag
Bit 1 – EXTRF: External Reset Flag
Bit 2 – BORF: Brown-out Reset Flag
Bit 3 – WDRF: Watchdog Reset Flag
Bit 4 – JTRF: JTAG Reset Flag

SPI Bus

SPI كه يك استاندارد سريال سنكرون مي باشد سرنام Serial Peripheral Interface بوده و بوسيله شركت موتورولا طراحي شده است . اين استاندارد به لحاظ پشتيباني از سرعت هاي بالا نه تنها در كاربردهاي اندازه گيري بلكه در مواردي نظير انتقال حجم بالاي اطلاعات ، پردازش سيگنال ديجيتال، كانال هاي ارتباطي و … نيز مورد استفاده واقع مي شود . سرعت چند مگابيت بر ثانيه به راحتي توسط SPI قابل دسترسي است و در نتيجه امكان انتقال صوت فشرده نشده و تصوير فشرده شده وجود خواهد داشت.
در زير ليست برخي از وسايل SPI آورده شده است:

نحوه عملكرد SPI
اين استاندارد براي ايجاد يك ارتباط به چهار خط ارتباطي نياز دارد:

همانطور كه ملاحظه مي شود اين چهار خط ,SCK ,MOSI ,MISO SS بوده كه به ترتيب خط كلاك، ,Master out slave in ,Master in slave out ,Slave Select مي باشند . نحوه ي تعامل Master و Slave در شكل زير نشان داده شده است:

سيستم شامل دو Shift Register و يك مولد كلاك مي باشد. Master با صفر كردن خط SS از slave مورد نظر ، چرخه ي ارتباطي را آماده مي كند.Master و Slave داده ي مورد نظر براي ارسال را در Shift Register قرار داده و Master با ايجاد كلاك در خط SCK مبادله ي داده را آغاز مي كند .

اطلاعات از پين MOSI در Master خارج شده و وارد پين MOSI درSlave مي شود . در طرف Slave نيز داده از پين MISO خارج شده و وارد MISO از Master مي شود . بعد از اتمام ارسال يك ,Packet مجددا خط SS توسط Master يك شده و بدين ترتيب Slave با Master سنكرون مي شود.

رجيسترهاي SPI
ماژول SPI داراي سه رجيستر ,SPDR,SPSR وSPCR بوده كه به ترتيب رجيسترهاي داده، وضعيت و كنترل مي باشند.

SPI Data Register

نوشتن بر روي اين رجيستر شروع انتقال داده را موجب خواهد شد و خواندن آن موجب خواندن داده ي موجود در بافر دريافت خواهد شد.

SPI Status Register

:Double SPI Speed Bit با نوشتن يك بر روي اين بيت در صورتيكه ماژول SPI در وضعيت Master باشد فركانس كلاك موجود روي پين SCK دو برابر خواهد شد.

:Write COLlision Flagاين پرچم زماني يك خواهد شد كه در حين انتقال يك بايت بر روي رجيستر SPDR مقداري نوشته شود. با اولين خواندن رجيستر SPSR اين بيت پاك مي شود.
:SPI Interrupt Flag اين بيت در دو حالت يك مي شود: ۱٫ با اتمام ارسال يك بايت اين پرچم يك شده و در صورتي كه بيت SPIE و فعال ساز عمومي وقفه ها يك باشند اتمام عمليات مي تواند

باعث ايجاد يك وقفه شود. ۲٫ پين SS از خارج توسط يك وسيله ي ديگر زمين شود، اين به معناي از دست د ادن حاكمت باس بوده و اين وضعيت با يك شدن بيت SPIF اعلام مي شود . با اجراي ISR يا خواندن رجيستر وضعيت اين بيت پاك مي شود.