بخشی از مقاله
طراحي و ساخت سيستم ضبط و پخش سيگنال با ميکروکنترلر AVRو کارت حافظه ی MMC
مقدمه:
در اين پروژه سعي بر اين است که علاوه بر آشنايي با ميکروکنترلر AVRو محيط نرم افزاري (labview) سخت افزار،به گونه اي طراحي شود که با دريافت سيگنال آنالوگ ورودي (صوت) از ميکروفن ، از طريق واحدADC ميکرو اين سيگنال به ديجيتال تبديل شود و با توجه به برنامهاي که در داخل ميکرو تعبيه شده است،اين
اطلاعات به داخل MMC ريخته شده وميکرو با دريافت فرمان از کامپيوتر به صورت ارتباط سريال دستور پخش را دريافت ميکند و از طريق واحد تايمر/ کانترکه در مد PWM کار ميکند,اطلاعات ذخيره شده در MMC را با آشکار سازي موج PWM توسط يک انتگرال گير،باز سازي و به آنالوگ تبديل ميکند و اين سيگنال آنالوگ بوسيله يک سري مدارات مورد نياز براي پخش از طريق يک هدفن پخش ميگردد.
فصل اول :
نگاهي اجمالي به ميکروکنترلرها
بخش اول : ميکروکنترلرها
سير تكاملي ميكروكنترلرها :
اولين ميكروكنترلرها در اواسط دهه 1970 ساخته شدند. اين ميكروكنترلرها در ابتدا پردازندههاي ماشين حساب بودند که داراي حافظه برنامه كوچكي از نوع ROM ، حافظ داده از نوعRAM وتعدادي درگاه ورودي وخروجي بودند.
با توسعه فناوري سيليكون ، ميكرو كنترلرهاي 8 بيتي قويتري ساخته شدند . در اين ميكروكنترلرها علاوه بر بهينه شدن دستورالعمل ها، تايمر /شمارنده روي تراشه، امكانات وقفه و كنترل بهينه شده خطوط ورودي وخروجي نيز به آن اضافه شده است. حافظه موجود بر روي تراشه هنوز هم محدود ميباشد و دربسياري موارد كافي نيست .يكي از پيشرفتهاي قابل توجه در آن زمان، قابليت استفاده از حافظه EPROM قابل پاك شدن با اشعه ماورا بنفش، روي تراشه بود اين قابليت، زمان طراحي و پياده سازي محصول را بطور محسوسي كاهش داد و نيز براي اولين بار امكان استفاده از ميكروكنترلرها را در كاربردهايي كه حجم توليد پاييني دارند، فراهم ساخت.
خانواده 8051 در اوايل دهه 1980 توسط شركت اينتل معرفي گرديد . از آن زمان تاكنون 8051 يكي از محبوبترين ميكروكنترلرها بوده و بسياري از شركتها ديگر نيز به توليد آن اقدام كردهاند . در حال حاضر مدلهاي مختلفي از 8051 وجود دارد كه در بسياري از آنها امكاناتي نظير مبدل آنالوگ به ديجيتال حجم نسبتاً بزرگ از حافظه برنامه و حافظه داده،مدولاتور عرض پالس(PWM) در خروجيها كه امكان پاك كردن و برنامه ريزي مجدد آن توسط سيگنالهاي الکتريکي وجود دارد،تعبيه شده است.
ميكروكنترلرها اكنون به سمت 16 بيتي شدن در حركت هستند . ميكروكنترلر هاي 16 بيتي، پردازندههايي با كارايي بالا (نظير پردازش سيگنالهاي ديجيتال ) ميباشند كه در كنترل فرايندهاي بلادرنگ و در مواردي كه حجم زيادي از عمليات محاسباتي مورد نياز است، به كار برده ميشوند.
بسياري از ميكروكنترلرهاي 16 بيتي، امكاناتي نظير حجم زياد حافظه برنامه و حافظه داده، مبدل هاي آنالوگ به ديجيتال چند كانالي، تعداد زيادي درگاهI/O ، چندين درگاه سريال، عملكردهاي بسيار سريع رياضي و منطقي و مجموعه دستورالعملهاي بسيار قدرتمند با قابليت پردازش سيگنال را دارا ميباشند .
معماري داخلي ميكرو كنترلرها:
ساده ترين معماري ميكروكنترلر، متشكل از يك ريز پردازنده، حافظه و درگاه ورودي/خروجي است. ريز پردازنده نيز متشكل از واحد پردازش مركزي (CPU)و واحد کنترل(CU) است.
CPUدر واقع مغز يك ريز پردازنده است و محلي است كه در آنجا تمام عمليات رياضي و منطقي ،انجام ميشود. واحد كنترل ، عمليات داخلي ريزپردازنده را كنترل ميكند و سيگنالهاي كنترلي را به ساير بخشهاي ريز پردازنده ارسال ميكند تا دستورالعملهاي مورد نظر انجام شوند.
حافظه بخش بسيار مهمي از يک سيستم ميکروکامپيوتري است.ما ميتوانيم بر اساس بکارگيري حافظه ،آن را به دو گروه دستهبندي ميکنيم: حافظه برنامه و حافظه داده . حافظه برنامه ، تمام كد برنامه را ذخيره ميكند .اين حافظه معمولا از نوع فقط خواندني (ROM) مي باشد. انواع ديگري از حافظهها نظيرEPROM وحافظههاي فلش EEPROM براي کاربردهايي که حجم توليد پاييني دارند وهمچنين هنگام پيادهسازي برنامه به كار ميروند . حافظه داده از نوع حافظه خواندن/نوشتن(RAM) ميباشد. در كاربردهاي پيچيده كه به حجم بالايي از حافظه RAM نياز داريم ، امكان اضافه كردن تراشه هاي حافظه بيروني به اغلب ميكروكنترلر ها وجود دارد.
در گاههاي ورودي / خروجي (I/O) به سيگنالهاي ديجيتال بيروني امكان ميدهند كه با ميكروكنترلر ارتباط پيدا كند .درگاههاي (I/O) معمولاً به صورت گروههاي 8 بيتي دسته بندي ميشوند و به هر گروه نيز نام خاصي اطلاق مي¬¬شود به عنوان مثال ، ميكروكنترلر 8051 داراي 4 درگاه ورودي / خروجي 8 بيت ميباشد که P3,P2,P1,P0 ناميده ميشوند. در تعدادي از ميكروكنترلرها ، جهت خطوط درگاه I/O قابل برنامه ريزي ميباشد . لذا بيتهاي مختلف يك درگاه را مي توان به صورت ورودي يا خروجي برنامهريزي نمود. در برخي ديگر از ميكروكنترلرها (از جمله ميكروكنترلرهاي 8051) درگاههاي I/O به صورت دو طرفه ميباشند . هر خط از درگاه I/O اين گونه ميكرو كنترلرها را مي توان به صورت ورودي و يا خروجي مورد استفاده قرار داد . معمولاً ، اين گونه خطوط خروجي ، به همراه مقاومتهاي بالا كش بيروني به كار برده ميشوند.
خانواده AVR :
ميکروکنترولر AVR به منظور اجراي دستورالعملهاي قدرتمند در يک سيکل کلاک (ساعت) به اندازه کافي سريع است و ميتواند براي شما آزادي عملي را که احتياج داريد به منظور بهينه سازي توان مصرفي فراهم کند . ميکروکنترلر AVR بر مبناي معماري(RISC کاهش مجموعهي دستورالعملهاي کامپيوتر ) پايه گذاري شده و مجموعه اي از دستورالعملها را که با 32 ثبات کار ميکنند ترکيب ميکند . به کارگرفتن حافظه از نوع Flash که AVR ها به طور يکسان از آن بهره ميبرند از جمله مزاياي آنها است.يک ميکرو AVR ميتواند با استفاده از يک منبع تغذيه 2.7 تا 5.5 ولتي از طريق شش پين ساده در عرض چند ثانيه برنامه ريزي شود يا Program شود.
ميکروهاي AVR در هرجا که باشند با 1.8 ولت تا 5.5 ولت تغذيه ميشوند البته انواع توان پايين نيز وجود دارند که بهLow Power معروفند. ويژگيهايي که سبب شد، AVRها جاي 8051 را بگيرند،عبارتست از:
1. توان مصرفي پايين: توان مصرفي پايين آنها براي استفاده بهينه از باتري و همچنين کاربرد ميکرو در وسايل سيار و سفري طراحي شده که ميکروهاي جديد AVR با توان مصرفي کم از شش روش اضافي در مقدار توان مصرفي ، براي انجام عمليات بهره ميبرند. اين ميکروها تا مقدار 1.8 ولت قابل تغذيه هستند که اين امر باعث طولاني تر شدن عمر باتري ميشود. در ميکروهاي با توان پايين ، عمليات شبيه حالت Standby است يعني ميکرو ميتواند تمام اعمال داخلي و جنبي را متوقف کند و کريستال خارجي را به همان وضعيت شش کلاک در هر چرخه رها کند !
2. حافظه ي فلش خود برنامه ريز با امکانات خاص
3. قابليت دوباره برنامه ريزي کردن بدون احتياج به اجزاي خارجي
4. بايت کوچک که به صورت فلش سکتور بندي شده اند
5. داشتن مقدار متغير در سايز بلوک بوت
6. خواندن به هنگام نوشتن
7. بسيار آسان براي استفاده
8. کاهش يافتن زمان برنامه ريزي
9. کنترل کردن برنامه ريزي به صورت سخت افزاري
10. استفاده از فيوزها و بيتهاي قفل
11. ايزوله بودن نسبت به نويز که باعث کابرد آن در محيط صنعتي مي شود.
راههاي مختلف عمل برنامه ريزي :
موازي ياparallel يکي از سريعترين روشهاي برنامه ريزي.
خود برنامه ريزي توسط هر اتصال فيزيکي.
برنامه ريزي توسط هر نوع واسطي از قبيل TWIو SPI و غيره، دارا بودن امنيت صد درصد در بروزرساني و کد کردن.
: SPI واسطه سه سيمي محلي براي بروزرساني سريع ، آسان و موثر در استفاده.
واسط JTAG : واسطه اي که تسليم قانون IEEE 1149.1 است و ميتواند به صورت NVM برنامهريزي کند يعني هنگام قطع جريان برق دادهها از بين نروند .
AVR همچنين مجهز به امکانات ديگر مانند تايمر واچ داگ و مبدلهاي ADC و PWM است.
يکي از مهمترين بخشهاي AVR که کمتر در هر ميکروکنترلرهاي ديگر ديده ميشود مقايسه کننده آنالوگ با گين 1 و 200 و ... مي باشد. لازم به ذکر است که در 8051 بايد از فلش(EEPROM) وADC و کريستال مولد ساعت به صورت بيروني استفاده ميکرديم اما در AVR اين امکانات به صورت دروني وجود دارد .
انواع ميکروهايAVR :
شرکتATMEL که شرکت اصلي توليد کننده ميکروهايAVR ميباشد, سه نوع ميکروکنترلر AVR توليد ميکند :
(1سري Tiny (2 سري AT90s (3 سريATmega
که هر سري از اين ميکروها ويژگيهاي خاصي داشته و در مصارف خاصي کاربرد بيشتري دارند که در ذيل به توضيح مختصري پيرامون هر يک از اين سريها پرداخته ميشود :
سريTiny:
ميکروهاي اين سري براي : 1- کاهش قيمت 2- صرفه جويي در وقت بهينه شدهاند ، ميزان مصرف ، حجم حافظه و تعداد پايه ها در ميکروهاي اين سري کم است.
از جمله ميکروهاي اين سري ميتوان موارد زير را نام برد :
• AT tiny 10
• AT tiny 11
• AT tiny 12
• AT tiny 15 L
• AT tiny 26
• AT tiny 26 L
• AT tiny 28 L
سري 90s:
از نظر حجم حافظه و تعداد پين ورودي / خروجي و توان مصرفي متوسط ميباشد و به آن 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 :
ميکروکنترلرهاي 8 بيتي AVR داراي 32 ثبات 8 بيتي همه منظوره هستند .(يعني R0 تا R31 ) سه ثبات آدرس شانزده بيتي با نام مستعارX,Y,Z که هر کدام از اين سه ثبات دو ثبات از همان 32 ثبات 8 بيتي هستند يعني:
(R28:R29) =رجيسترY (R26:R27)=رجيستر X
(R30:R31)=رجيسترZ
يک ثبات 16 بيتي به منظور اشاره گر پشته که در آدرسهاي ورودي /خروجي :
SPH(0x3e)و SPL (0x3d) قرارگرفته اند .همچنين اين آدرسها در حافظه داده با آدرسهاي 0x5e و0x5d هستند .
يک ثبات 8 بيتي به منظور سنجش وضعيت يا همان ثبات پرچم با نام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 آدرس اول حافظه يعني 0x0000)تا (0x001f متعلق به ثباتهاي R0 تا R31 هستند البته در برخيMCU ها براي ثبات ها از فضاي حافظه ي داده استفاده ميشود.
آدرس هاي 0x0020تا 0x005f از حافظه داده در دسترس آدرسهاي ورودي / خروجي0x00 تا 0x3f است.از آدرس0x006 حافظه ي داده به بعد فقط شامل حافظه استاتيک است يعني 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
توجه داشته باشيد که يک کلمه ي 16 بيتي از هشت بيت کم ارزش آن در حافظه ذخيره مي شود.
فصل دوم:
مختصري درباره MMC و واسط SPI در ميکروکنترلرهاي AVR
پروتکل هاي ارتباطي درMMC
پروتکلهاي ارتباطي آن دردومد MMC وSPI ميباشند. بيشترين فرکانس پالس ساعت هر هر دو مد 20MHZ است. اگرچه نحوه کار واسطها در دو مد متفاوت است، ولي داده هاي نوشته شده در هرمد، در مد ديگر قابل خواندن است.تفاوت عملکرد پايه ها در مد در جدول زير آمده است.
Multimedia card(MMC)
امروزه اکثر دستگاه های دیجیتال که به بازار ارائه می شوند معمولاً شامل هستند و دلایل استفاده از این است که آنها از طریق سریال داده ها را انتقال می دهند و سرعت بالایی در حدود Mbit/s 20 یا به عبارت دیگر چیزی حدود Mbyte/s 2.5 دارند.
همچنین یکی دیگر از دلایل استفاده از mmc این است که به راحتی می توان اطلاعات را بر روی آنها ذخیره و بازیابی کرد.
مقدمه:
شکل زیر ساختار درونی را نشان می دهد که از بلوک های جداگانه تشکیل شده است . همه این بلوک ها به وسیله یک اسیلاتور داخلی کلاک می خورند.
چون دارای اسیلاتور داخلی با فرکانس مشخص است بنابراین برای انتقال داده توسط خطوط (دستور) و (داده) باید فرکانس اسیلاتور داخلی با فرکانس خط (کلاک) که توسط (کنترلر) بوجود می آید سکنرون (همزمان) شود. این کارت توسط واحد انجام می شود.
ها به وسیله 3 پین (خط داده) کنترل می شوند که هریک از این خطوط داده کار خاصی را در طول انتقال داده انجام می دهند.
همچنین ها دارای 4 رجیستر داخلی هستند که از این رجیستر ها برای شناسایی و یک سری از خصوصیات استفاده می شود. این رجیستر ها عبارتند از:
• OCR : این رجیستر رنج ولتاژهایی را که توسط کارت پشتیبانی می شود نشان می دهد.
• رجیستر شناسایی کارت
• رجیستر تعیین داده ( دانستن محتویات این رجیستر مهم است)
• رجیستر تخصیص آدرس برای انتقال داده بین و دانستن محتویات این رجیستر ها حائز اهمیت است.
برای انتقال داده از دو پروتکل پشتیبانی می کند یا به عبارت دیگر به دو روش می توان داده را بین و تبادل کرد که عبارتند از :
در هریک از دو پروتکل بالا طریقه اتصال بین و تفاوت دارد(به شکل زیر توجه کنید)
(mmc mode) Multimedia mode :
در این روش برای انتقال داده از کمترین خط داده استفاده شده است که عبارتند از:
CLK : با هر دوره تناوب از سیگنال ورودی به این پین یک بیت داده بر روی خط یا جابجا می شود . فرکانس این خط می تواند بین صفر و ماکزیمم فرکانس ممکنه باشد() و این فرکانس می تواند در حین انتقال داده تغییر کند(این یک مزیت است).
CMD : این خط یک خط داده دو طرفه است(ورودی و خروجی) که برای فعال کردن و دستور انتقال داده و پاسخ مورد استفاده قرار می گیرد . این خط داده به دو روش عمل می کند :
1- برای فعال سازی
2- برای انتقال سریع داده
دستور همیشه توسط اما پاسخ توسط فرستاده می شود.
DAT : این خط یک خط داده دو طرفه است وبرای انتقال داده ای که باید بر روی حافظه ذخیره یا از حافظه خوانده شود مورد استفاده قرار می گیرد.
RSV : این خط در این روش بدون استفاده است اما در به عنوان خط انتخاب تراشه به کار می رود.
SPI mode :
پروتکل توسط شرکت ارائه شد و توسط اکثر میکروکنترلرهای پشتیبانی می شود . این مزیت باعث شده که بیشتر پروژه های امروزی از این کارت استفاده کنند.
در پروژه انجام شده مذکور نیز از این پروتکل استفاده شده است.
خطوط داده در این پروتکل عبارتند از:
CLK :سیگنال کلاک برای سنکرون سازی انتقال داده است.
Data In : این خط داده ورودی است. بر روی میکرو کنترلر خط داده باید به این پین وصل شود. زیرا به عنوان و به عنوان عمل می کند.
Data Out : این خط داده ورودی است . بر روی میکرو خط داده(پین) باید به این پین وصل شود.
CS :() از این خط داده برای انتخاب و فعال سازی استفاده می شود. در پروتکل به وسیله آدرس مخصوصی که توسط (کنترلر) به آن اختصاص داده, شناسایی می شود. اما در پروتکل شناسایی کارت توسط خط انجام می گیرد که برای انتخاب هر کارت می توانیم به وسیله خط (وقتی که 0 می شود کارت فعال می شود) را انتخاب کنیم و باید توجه کنیم که در طول انتقال داده این خط باید فعال باشد . همچنین در پروتکل بر خلاف پروتکل که خطوط دو طرفه بود, خطوط یک طرفه است یعنی یا ورودی است یا خروجی و این باعث کاهش سرعت و کاهش دستورات انتقال داده در پروتکل است.