طراحي و ساخت سيستم ضبط و پخش سيگنال با ميکروکنترلر AVRو کارت حافظه ی MMC

مقدمه:
در اين پروژه سعي بر اين است که علاوه بر آشنايي با ميکروکنترلر AVRو محيط نرم افزاري (labview) سخت افزار،به گونه اي طراحي شود که با دريافت سيگنال آنالوگ ورودي (صوت) از ميکروفن ، از طريق واحدADC ميکرو اين سيگنال به ديجيتال تبديل شود و با توجه به برنامه‎اي که در داخل ميکرو تعبيه شده است،اين

اطلاعات به داخل MMC ريخته شده وميکرو با دريافت فرمان از کامپيوتر به صورت ارتباط سريال دستور پخش را دريافت مي‎کند و از طريق واحد تايمر/ کانترکه در مد PWM کار مي‎کند,اطلاعات ذخيره شده در MMC را با آشکار سازي موج PWM توسط يک انتگرال گير،باز سازي و به آنالوگ تبديل مي‎کند و اين سيگنال آنالوگ بوسيله يک سري مدارات مورد نياز براي پخش از طريق يک هدفن پخش مي‎گردد.

فصل اول :

نگاهي اجمالي به ميکروکنترلرها

بخش اول : ميکروکنترلرها

سير تكاملي ميكروكنترلرها :

اولين ميكروكنترلرها در اواسط دهه ۱۹۷۰ ساخته شدند. اين ميكروكنترلرها در ابتدا پردازنده‎هاي ماشين حساب بودند که داراي حافظه برنامه كوچكي از نوع ROM ، حافظ داده از نوعRAM وتعدادي درگاه ورودي وخروجي بودند.

با توسعه فناوري سيليكون ، ميكرو كنترلرهاي ۸ بيتي قويتري ساخته شدند . در اين ميكروكنترلرها علاوه بر بهينه شدن دستورالعمل ها، تايمر /شمارنده روي تراشه، امكانات وقفه و كنترل بهينه شده خطوط ورودي وخروجي نيز به آن اضافه شده است. حافظه موجود بر روي تراشه هنوز هم محدود مي‎باشد و دربسياري موارد كافي نيست .يكي از پيشرفتهاي قابل توجه در آن زمان، قابليت استفاده از حافظه EPROM قابل پاك شدن با اشعه ماورا بنفش، روي تراشه بود اين قابليت، زمان طراحي و پياده سازي محصول را بطور محسوسي كاهش داد و نيز براي اولين بار امكان استفاده از ميكروكنترلرها را در كاربردهايي كه حجم توليد پاييني دارند، فراهم ساخت.

خانواده ۸۰۵۱ در اوايل دهه ۱۹۸۰ توسط شركت اينتل معرفي گرديد . از آن زمان تاكنون ۸۰۵۱ يكي از محبوبترين ميكروكنترلرها بوده و بسياري از شركتها ديگر نيز به توليد آن اقدام كرده‎اند . در حال حاضر مدل‎هاي مختلفي از ۸۰۵۱ وجود دارد كه در بسياري از آنها امكاناتي نظير مبدل آنالوگ به ديجيتال حجم نسبتاً بزرگ از حافظه برنامه و حافظه داده،مدولاتور عرض پالس(PWM) در خروجي‎ها كه امكان پاك كردن و برنامه ريزي مجدد آن توسط سيگنال‎هاي الکتريکي وجود دارد،تعبيه شده است.

ميكروكنترلرها اكنون به سمت ۱۶ بيتي شدن در حركت هستند . ميكروكنترلر هاي ۱۶ بيتي، پردازنده‎هايي با كارايي بالا (نظير پردازش سيگنالهاي ديجيتال ) مي‎باشند كه در كنترل فرايندهاي بلادرنگ و در مواردي كه حجم زيادي از عمليات محاسباتي مورد نياز است، به كار برده مي‎شوند.

بسياري از ميكروكنترلرهاي ۱۶ بيتي، امكاناتي نظير حجم زياد حافظه برنامه و حافظه داده، مبدل هاي آنالوگ به ديجيتال چند كانالي، تعداد زيادي درگاهI/O ، چندين درگاه سريال، عملكردهاي بسيار سريع رياضي و منطقي و مجموعه دستورالعمل‎هاي بسيار قدرتمند با قابليت پردازش سيگنال را دارا مي‎باشند .

معماري داخلي ميكرو كنترلرها:
ساده ترين معماري ميكروكنترلر، متشكل از يك ريز پردازنده، حافظه و درگاه ورودي/خروجي است. ريز پردازنده نيز متشكل از واحد پردازش مركزي (CPU)و واحد کنترل(CU) است.
CPUدر واقع مغز يك ريز پردازنده است و محلي است كه در آنجا تمام عمليات رياضي و منطقي ،انجام مي‎شود. واحد كنترل ، عمليات داخلي ريزپردازنده را كنترل مي‎كند و سيگنال‎هاي كنترلي را به ساير بخش‎هاي ريز پردازنده ارسال مي‎كند تا دستورالعمل‎هاي مورد نظر انجام شوند.

حافظه بخش بسيار مهمي از يک سيستم ميکروکامپيوتري است.ما مي‎توانيم بر اساس بکارگيري حافظه ،آن را به دو گروه دسته‎بندي مي‎کنيم: حافظه برنامه و حافظه داده . حافظه برنامه ، تمام كد برنامه را ذخيره مي‎كند .اين حافظه معمولا از نوع فقط خواندني (ROM) مي باشد. انواع ديگري از حافظه‎ها نظيرEPROM وحافظه‎هاي فلش EEPROM براي کاربردهايي که حجم توليد پاييني دارند وهمچنين هنگام پياده‎سازي برنامه به كار مي‎روند . حافظه داده از نوع حافظه خواندن/نوشتن(RAM) مي‎باشد. در كاربردهاي پيچيده كه به حجم بالايي از حافظه ‎‎RAM نياز داريم ، امكان اضافه كردن تراشه هاي حافظه بيروني به اغلب ميكروكنترلر ها وجود دارد.

در گاههاي ورودي / خروجي (I/O) به سيگنال‎هاي ديجيتال بيروني امكان مي‎دهند كه با ميكروكنترلر ارتباط پيدا كند .درگاههاي (I/O) معمولاً به صورت گروههاي ۸ بيتي دسته بندي مي‎شوند و به هر گروه نيز نام خاصي اطلاق مي¬¬شود به عنوان مثال ، ميكروكنترلر ۸۰۵۱ داراي ۴ درگاه ورودي / خروجي ۸ بيت مي‎باشد که P3,P2,P1,P0 ناميده مي‎شوند. در تعدادي از ميكروكنترلرها ، جهت خطوط درگاه I/O قابل برنامه ريزي مي‎باشد . لذا بيتهاي مختلف يك درگاه را مي توان به صورت ورودي يا خروجي برنامه‎ريزي نمود. در برخي ديگر از ميكروكنترلرها (از جمله ميكروكنترلرهاي ۸۰۵۱) درگاههاي I/O به صورت دو طرفه مي‎باشند . هر خط از درگاه I/O اين گونه ميكرو كنترلرها را مي توان به صورت ورودي و يا خروجي مورد استفاده قرار داد . معمولاً ، اين گونه خطوط خروجي ، به همراه مقاومتهاي بالا كش بيروني به كار برده مي‎شوند.

 

خانواده AVR :
ميکروکنترولر AVR به منظور اجراي دستورالعملهاي قدرتمند در يک سيکل کلاک (ساعت) به اندازه کافي سريع است و مي‎تواند براي شما آزادي عملي را که احتياج داريد به منظور بهينه سازي توان مصرفي فراهم کند . ميکروکنترلر AVR بر مبناي معماري(RISC کاهش مجموعه‎ي دستورالعملهاي کامپيوتر ) پايه‎ گذاري شده و مجموعه اي از دستورالعملها را که با ۳۲ ثبات کار مي‎کنند ترکيب مي‎کند . به کارگرفتن حافظه از نوع Flash که AVR ها به طور يکسان از آن بهره مي‎برند از جمله مزاياي آنها است.يک ميکرو AVR مي‎تواند با استفاده از يک منبع تغذيه ۲٫۷ تا ۵٫۵ ولتي از طريق شش پين ساده در عرض چند ثانيه برنامه ريزي شود يا Program شود.

ميکروهاي AVR در هرجا که باشند با ۱٫۸ ولت تا ۵٫۵ ولت تغذيه مي‎شوند البته انواع توان پايين نيز وجود دارند که بهLow Power معروفند. ويژگيهايي که سبب شد، AVRها جاي ۸۰۵۱ را بگيرند،عبارتست از:

۱٫ توان مصرفي پايين: توان مصرفي پايين آنها براي استفاده بهينه از باتري و همچنين کاربرد ميکرو در وسايل سيار و سفري طراحي شده که ميکروهاي جديد AVR با توان مصرفي کم از شش روش اضافي در مقدار توان مصرفي ، براي انجام عمليات بهره مي‎برند. اين ميکروها تا مقدار ۱٫۸ ولت قابل تغذيه هستند که اين امر باعث طولاني تر شدن عمر باتري مي‎شود. در ميکروهاي با توان پايين ، عمليات شبيه حالت Standby است يعني ميکرو مي‎تواند تمام اعمال داخلي و جنبي را متوقف کند و کريستال خارجي را به همان وضعيت شش کلاک در هر چرخه رها کند !

۲٫ حافظه ي فلش خود برنامه ريز با امکانات خاص
۳٫ قابليت دوباره برنامه ريزي کردن بدون احتياج به اجزاي خارجي
۴٫ بايت کوچک که به صورت فلش سکتور بندي شده اند
۵٫ داشتن مقدار متغير در سايز بلوک بوت

۶٫ خواندن به هنگام نوشتن
۷٫ بسيار آسان براي استفاده
۸٫ کاهش يافتن زمان برنامه ريزي
۹٫ کنترل کردن برنامه ريزي به صورت سخت افزاري
۱۰٫ استفاده از فيوزها و بيتهاي قفل

۱۱٫ ايزوله بودن نسبت به نويز که باعث کابرد آن در محيط صنعتي مي شود.
راههاي مختلف عمل برنامه ريزي :

 موازي ياparallel يکي از سريعترين روشهاي برنامه ريزي.
 خود برنامه ريزي توسط هر اتصال فيزيکي.
 برنامه ريزي توسط هر نوع واسطي از قبيل TWIو SPI و غيره، دارا بودن امنيت صد درصد در بروزرساني و کد کردن.
 : SPI واسطه سه سيمي محلي براي بروزرساني سريع ، آسان و موثر در استفاده.
 واسط JTAG : واسطه اي که تسليم قانون IEEE 1149.1 است و مي‎تواند به صورت NVM برنامه‎ريزي کند يعني هنگام قطع جريان برق داده‎ها از بين نروند .
AVR همچنين مجهز به امکانات ديگر مانند تايمر واچ داگ و مبدل‎هاي ADC و PWM است.

يکي از مهمترين بخشهاي AVR که کمتر در هر ميکروکنترلرهاي ديگر ديده مي‎شود مقايسه کننده آنالوگ با گين ۱ و ۲۰۰ و … مي باشد. لازم به ذکر است که در ۸۰۵۱ بايد از فلش(EEPROM) وADC و کريستال مولد ساعت به صورت بيروني استفاده مي‎کرديم اما در AVR اين امکانات به صورت دروني وجود دارد .

انواع ميکروهايAVR :
شرکتATMEL که شرکت اصلي توليد کننده ميکروهايAVR مي‎باشد, سه نوع ميکروکنترلر AVR توليد مي‎کند :
(۱سري Tiny (2 سري AT90s (3 سريATmega

که هر سري از اين ميکروها ويژگيهاي خاصي داشته و در مصارف خاصي کاربرد بيشتري دارند که در ذيل به توضيح مختصري پيرامون هر يک از اين سري‎ها پرداخته مي‎شود :

سريTiny:
ميکروهاي اين سري براي : ۱- کاهش قيمت ۲- صرفه جويي در وقت بهينه شده‎اند ، ميزان مصرف ، حجم حافظه و تعداد پايه ها در ميکروهاي اين سري کم است.
از جمله ميکروهاي اين سري مي‎توان موارد زير را نام برد :
• AT tiny 10
• AT tiny 11
• AT tiny 12
• AT tiny 15 L
• AT tiny 26

• AT tiny 26 L
• AT tiny 28 L
سري ۹۰s:
از نظر حجم حافظه و تعداد پين ورودي / خروجي و توان مصرفي متوسط مي‎باشد و به آن AVR معمولي هم می-گويند.چند نمونه معروف از اين ميکروها در زير نام برده شده است :
• AT 90s 1200
• AT 90s 2313
• AT 90s2323/LS2323/S2343/LS2343

• AT 90s 2333/LS2333/S4433/LS4433
• AT 90s 8515
• AT 90s 8535/LS8535
سري MEGA:
اين ميکروها نسبت به دو سري قبل داراي قابليت‎هاي بيشتري مي‎باشد ؛ تعداد ورودي / خروجي(I/O) بيشتر و فضاي حافظه گسترده‎تر و به طبع اينها مصرف بالاتر.چند نمونه از AVR هاي موجود در بازار اين سري ، در زير ليست شده‎اند :
• AT MEGA 323 , AT MEGA 323 L
• AT MEGA 32 , AT MEGA 32 L
• AT MEGA 128 , AT MEGA 128 L
• AT MEGA 163 , AT MEGA 163 L

• AT MEGA 8 , AT MEGA 8 L
• AT MEGA 8515 , AT MEGA 8515 L
• AT MEGA 8535 , AT MEGA 8535 L
• AT MEGA 161 , AT MEGA 161L
• AT MEGA 162 V , AT MEGA 162

• AT MEGA 16 , AT MEGA 16 L
• AT MEGA 100 , AT MEGA 103 L
• AT MEGA 169 V , AT MEGA 169 , AT MEGA 169 L
• AT MEGA 64 L , AT MEGA 64

نگاهي گذرا به معماري دروني ميکروکنترلرهايAVR :
ميکروکنترلرهاي ۸ بيتي AVR داراي ۳۲ ثبات ۸ بيتي همه منظوره هستند .(يعني R0 تا R31 ) سه ثبات آدرس شانزده بيتي با نام مستعارX,Y,Z که هر کدام از اين سه ثبات دو ثبات از همان ۳۲ ثبات ۸ بيتي هستند يعني:
(R28:R29) =رجيسترY (R26:R27)=رجيستر X
(R30:R31)=رجيسترZ
يک ثبات ۱۶ بيتي به منظور اشاره گر پشته که در آدرسهاي ورودي /خروجي :
SPH(0x3e)و SPL (0x3d) قرارگرفته اند .همچنين اين آدرسها در حافظه داده با آدرسهاي ۰x5e و۰x5d هستند .
يک ثبات ۸ بيتي به منظور سنجش وضعيت يا همان ثبات پرچم با نامSREG

I : فعال ساز و غيرفعال ساز عمومي وقفه يا Global Interrupt Enable/Disable Flag
T : بيت انتقالي مورد استفاده دستورالعملهاي BLD وBST
H: Half Carry Flag
S : بيت علامت ياSigned tests Instruction Set
V : سرريزنما براي مکمل دو يا Two’s Complement Overflow Indicator
N : بيت منفي يا Negative Flag
Z : بيت صفر يا Zero Flag
C :Carry Flag
حافظه داده و ثباتهاي AVR :
32 آدرس اول حافظه يعني ۰x0000)تا (۰x001f متعلق به ثباتهاي R0 تا R31 هستند البته در برخيMCU ها براي ثبات ها از فضاي حافظه ي داده استفاده مي‎شود.
آدرس هاي ۰x0020تا ۰x005f از حافظه داده در دسترس آدرسهاي ورودي / خروجي۰x00 تا ۰x3f است.از آدرس۰x006 حافظه ي داده به بعد فقط شامل حافظه استاتيک است يعني SRAM است.
دو ثبات براي واحد رياضي منطقي ALU :
تعداد زيادي از دستورالعملهايALU شامل دو ثبات هستند يکي مقصد يا (Destination(Rd و يکي منبع يا (Source(Rr که نحوه کدگشايي دستورالعمل را در زير مي‎بينيد :

بيتهايي که در آن حرف i قرار گرفته دستورالعمل و حرفd بيت هاي مقصد هستند وحرف r بيتهاي منبع. ثبات منبع از بهم پيوستن بيتهاي r0 :r1 :r2 :r3 :r9 ثبات مقصد از بهم پيوستن بيتهاي d4 :d5 :d6 :d7 : d8 مشخص مي¬¬شوند همچنين بيتهاي باقي مانده i10 :i11 :i12 :i13 :i14 :i15 خود دستورالعمل را مشخص مي‎کنند .
به عنوان مثال حاصل جمع r17 وr2 که همانAdd r17,r2 است به صورت زير کدگشايي ياEncode مي‎شود

که در اين صورت خروجي از اين قرار است:
Hex : 0 :12 0d add r17 , r2
توجه داشته باشيد که يک کلمه ي ۱۶ بيتي از هشت بيت کم ارزش آن در حافظه ذخيره مي شود.

فصل دوم:

مختصري درباره MMC و واسط SPI در ميکروکنترلرهاي AVR

پروتکل هاي ارتباطي درMMC

پروتکل‎هاي ارتباطي آن دردومد MMC وSPI مي‎باشند. بيشترين فرکانس پالس ساعت هر هر دو مد ۲۰MHZ است. اگرچه نحوه کار واسطها در دو مد متفاوت است، ولي داده هاي نوشته شده در هرمد، در مد ديگر قابل خواندن است.تفاوت عملکرد پايه ها در مد در جدول زير آمده است.

Multimedia card(MMC)

امروزه اکثر دستگاه های دیجیتال که به بازار ارائه می شوند معمولاً شامل هستند و دلایل استفاده از این است که آنها از طریق سریال داده ها را انتقال می دهند و سرعت بالایی در حدود Mbit/s 20 یا به عبارت دیگر چیزی حدود Mbyte/s 2.5 دارند.
همچنین یکی دیگر از دلایل استفاده از mmc این است که به راحتی می توان اطلاعات را بر روی آنها ذخیره و بازیابی کرد.
مقدمه:
شکل زیر ساختار درونی را نشان می دهد که از بلوک های جداگانه تشکیل شده است . همه این بلوک ها به وسیله یک اسیلاتور داخلی کلاک می خورند.
چون دارای اسیلاتور داخلی با فرکانس مشخص است بنابراین برای انتقال داده توسط خطوط (دستور) و (داده) باید فرکانس اسیلاتور داخلی با فرکانس خط (کلاک) که توسط (کنترلر) بوجود می آید سکنرون (همزمان) شود. این کارت توسط واحد انجام می شود.
ها به وسیله ۳ پین (خط داده) کنترل می شوند که هریک از این خطوط داده کار خاصی را در طول انتقال داده انجام می دهند.
همچنین ها دارای ۴ رجیستر داخلی هستند که از این رجیستر ها برای شناسایی و یک سری از خصوصیات استفاده می شود. این رجیستر ها عبارتند از:
• OCR : این رجیستر رنج ولتاژهایی را که توسط کارت پشتیبانی می شود نشان می دهد.
• رجیستر شناسایی کارت
• رجیستر تعیین داده ( دانستن محتویات این رجیستر مهم است)
• رجیستر تخصیص آدرس برای انتقال داده بین و دانستن محتویات این رجیستر ها حائز اهمیت است.

برای انتقال داده از دو پروتکل پشتیبانی می کند یا به عبارت دیگر به دو روش می توان داده را بین و تبادل کرد که عبارتند از :
در هریک از دو پروتکل بالا طریقه اتصال بین و تفاوت دارد(به شکل زیر توجه کنید)
(mmc mode) Multimedia mode :
در این روش برای انتقال داده از کمترین خط داده استفاده شده است که عبارتند از:
CLK : با هر دوره تناوب از سیگنال ورودی به این پین یک بیت داده بر روی خط یا جابجا می شود . فرکانس این خط می تواند بین صفر و ماکزیمم فرکانس ممکنه باشد() و این فرکانس می تواند در حین انتقال داده تغییر کند(این یک مزیت است).
CMD : این خط یک خط داده دو طرفه است(ورودی و خروجی) که برای فعال کردن و دستور انتقال داده و پاسخ مورد استفاده قرار می گیرد . این خط داده به دو روش عمل می کند :
۱- برای فعال سازی
۲- برای انتقال سریع داده
دستور همیشه توسط اما پاسخ توسط فرستاده می شود.
DAT : این خط یک خط داده دو طرفه است وبرای انتقال داده ای که باید بر روی حافظه ذخیره یا از حافظه خوانده شود مورد استفاده قرار می گیرد.

RSV : این خط در این روش بدون استفاده است اما در به عنوان خط انتخاب تراشه به کار می رود.

SPI mode :
پروتکل توسط شرکت ارائه شد و توسط اکثر میکروکنترلرهای پشتیبانی می شود . این مزیت باعث شده که بیشتر پروژه های امروزی از این کارت استفاده کنند.
در پروژه انجام شده مذکور نیز از این پروتکل استفاده شده است.
خطوط داده در این پروتکل عبارتند از:
CLK :سیگنال کلاک برای سنکرون سازی انتقال داده است.
Data In : این خط داده ورودی است. بر روی میکرو کنترلر خط داده باید به این پین وصل شود. زیرا به عنوان و به عنوان عمل می کند.
Data Out : این خط داده ورودی است . بر روی میکرو خط داده(پین) باید به این پین وصل شود.
CS :() از این خط داده برای انتخاب و فعال سازی استفاده می شود. در پروتکل به وسیله آدرس مخصوصی که توسط (کنترلر) به آن اختصاص داده, شناسایی می شود. اما در پروتکل شناسایی کارت توسط خط انجام می گیرد که برای انتخاب هر کارت می توانیم به وسیله خط (وقتی که ۰ می شود کارت فعال می شود) را انتخاب کنیم و باید توجه کنیم که در طول انتقال داده این خط باید فعال باشد . همچنین در پروتکل بر خلاف پروتکل که خطوط دو طرفه بود, خطوط یک طرفه است یعنی یا ورودی است یا خروجی و این باعث کاهش سرعت و کاهش دستورات انتقال داده در پروتکل است.