![]() |
اتصال حافظه MMC به AVR |
![]() |
|
در این پست قصد دارم طرز اتصال یک حافظه MMC رو به یک میکروکنترلر AVR آموزش دهم. همیشه یکی از مشکلاتی که در بیشتر پروژه های الکترونیکی وجود دارد کم بودن حافظه می باشد مثلا برای ساخت یک رکوردر صدا با یک میکروکنترلر نیاز به حافظه با حجم بالا می باشد و نیاز به نوعی از حافظه می باشد که با قطع تغذیه اطلاعات آن پاک نشود. آی سی های حافظه زیادی در بازار وجود دارند که دارای ظرفیت زیادی هستند ولی MMC به دلیل حجم زیاد و سرعت بالا و در دسترس بودن و نیز ارزان بودن از همه آی سی های موجود مقرون به صرفه تر می باشد. و چون به صورت کارت می باشد دارای مزیت هایی نسبت به آیسی های حافظه می باشند. کارت های فلش دارای انواع مختلف می باشند مثل SD و MMC و .... دو نمونه از این کارت ها در شکل زیر می بینید:
نمای زیرین این کارت ها هم به این صورت می باشد:
کارت MMC موجود در عکس دارای پایه هستش که وقتی پایه اونو جدا کنیم اندازش نصف می شه. من کارتی رو که به میکرو وصل کردم و جواب گرفتم کارت MMC هست که در تصویر بالا می بینید .SD هم تست کردم ولی درست جواب نمیده شاید اشکال از کامندهای اون باشه . به شما پیشنهاد میکنم MMC بگیرین تا به مشکل بر نخورین. شماره پایه MMC به صورت زیر می باشد:
ارتباط با این کارت ها به صورت سریال هست و در دو مود SPI و MMC کار می کنه و چون آیسی های میکروکنترلر AVR دارای سخت افزار SPI میباشند می توانند با مد SPI با MMC ارتباط برقرار کنند.نحوه اتصال MMC به میکروکنترلر ATMEGA16 در شکل زیر می بیند:
تغذیه MMC 3.2 ولت هستش که توسط یک رگولاتور ترانزیستوری که در شکل می بینید ساخته می شود. چون تغذیه میکروکنترلر 5 ولت و تغذیه MMC 3.2 ولته برای تبدیل سطح از تقسیم مقاومتی استفاده شده است که در شکل بالا می بینید. سورس های زیادی در اینترنت برای ارتباط با MMC وجود دارند که من تعداد زیادی از آنها را گرفتم و تست کردم و جواب گرفتم و بیشتر سورس ها به زبان C هستش ولی با WinAVR یا برنامه های دیگه نوشته شده و با CodeVision سازگاری ندارند که با کمی تغییرات می شه سورس ها رو داخل CodeVision آورد و کامپایل کرد. من یک نمونه از این سورس ها رو با اندکی تغییرات داخل CodeVision آوردم و توابع مربوط به نوشتن و خواندن را داخل یک فایل جدا به نام mmc.h قرار دادم تا بشه از اون در پروژه های دیگه هم استفاده کرد. داخل این فایل دو تابع وجود دارد با نام های Write_MMC و Read_MMC که هر دوی این توابع یک عدد به عنوان آدرس بلاکی که دیتا باید در ان آدرس نوشته یا خوانده شود , می گیرند. اگر تابع Write_MMC فراخوانی شود مقادیر موجود در آرایه MMC_Buffer در آدرسی که در ورودی تابع تعیین شده نوشته می شود و اگر تابع Read_MMC فراخوانی شود از آدرسی که در ورودی تابع تعیین شده ۵۱۲ بایت از MMC خوانده می شود و در آرایه MMC_Buffer قرار داده می شود .
یک مثال با CodeVision نوشتم که طرز استفاده از این هدر فایل را نشان می دهد. همراه فایل پروژه یک فایل PDF است که کامندهای MMC را نشان می دهد.
|
||
|
2
نوشته شده در سه شنبه 1387/02/17ساعت 16:9  توسط علی |
|
||
![]() |
سال نو مبارک(نوروز1387) |
![]() |
|
سال نو مبارک!
|
||
|
2
نوشته شده در جمعه 1387/01/02ساعت 9:56  توسط علی |
|
||
![]() |
اتصال avr به usb |
![]() |
|
در بعضی از پروژه های الکترونیکی نیاز به ارتباط میکروکنترلر با کامپیوتر و ردوبدل کردن اطلاعات بین این دو می باشد.روش های زیادی برای ارتباط میکرو با کامپیوتر وجود دارد که هر کدام از این روشها محاسن و معایب خاص خود را دارند. ساده ترین روش, استفاده از پورت سریال یا موازی برای انتقال اطلاعات بین کامپیوتر و میکروکنترلر می باشد.مهمترین مزیت این دو پورت نام برده سادگی استفاده از آنها است ولی مشکلاتی هم دارند مثلا سرعت انتقال اطلاعات در پورت سریال پایین(ماکزیمم 115200bps) می باشد. و یا پورت موازی به دلیل انتقال اطلاعات به صورت موازی دارای پین های زیاد می باشد که باعث زیاد شدن تعداد کابل و مشکلات دیگری می شود و نیز به دلیل قدیمی بودن سرعت زیادی هم ندارد.یکی دیگر از مشکلاتی که وجود دارد این است که این پورت ها به دلیل قدیمی بودن در بعضی از کامپیوتر ها و اغلب لپ تاپ ها حذف شده اند که این معزل بزرگی است. پس نیاز به استفاده از پورت های جدید مثل USB دو چندان می شود. استفاده از پورت USB دارای مزایای زیادی از قبیل سرعت بالا و تعداد سیم کم می باشد و در اغلب کامپیوتر ها هم موجود می باشد .ولی پورت USB دارای معایبی هم هست که مهمترین آنها این است که استفاده از آن سخت و نیاز به تخصص دارد که البته با استفاده از سورس ها موجود این مشکل تا حدودی حل شده است. من تو اینترنت زیاد گشتم و پروژه های زیادی به این منظور پیدا کردم . یکی از این پروژه ها که تست کردم و جواب می ده وساده هم هست اینه که با یک میکرو کنترلر Atmega8 پورت USB رو به پورت سریال تبدیل می کنه و می تونید داخل پروژه هاتون ازش استفاده کنید. این پروژه رو می تونید از اینجا دانلود کنید. داخل این فایل زیپ, یک فایل هگز هستش که اونو روی میکروکنترلر mega8 بریزید بعد طبق نقشه شماتیکی که همراه پروژه هستش میکرو را به USB وصل کنید. بعد از وصل کردن میکرو به USB ویندوز پیغام پیدا شدن سخت افزار جدید می ده برای نصب درایور باید در پنجره نصب درایور مسیر فایل avrcdc.inf رو که همراه فایل زیپ هست رو بدیم تا درایور نصب بشه. بعد از نصب کردن داریور, ویندوز یک Com مجازی می سازه که ما می تونیم مثل Com با آن رفتار کنیم یعنی وقتی اطلاعات رو به این Com می فرستیم در واقع به USB ارسال می شه بعد میکرو اطلاعات را از USB خوانده و آن را به صورت سریال به ما می دهد و برعکس. آیسی هایی هستند که تبدیل USB به Com (FT232) هستند و یا کابل های تبدیل هستند که این کارو می کنن ولی این پروژه به مراتب ارزونتر در میاد و باحالتره چون دارای میکرو هستش و می تونید استفاده های دیگری هم از اون بکنید. امیدوارم به کارتون بیاد! |
||
|
2
نوشته شده در دوشنبه 1386/12/27ساعت 22:25  توسط علی |
|
||
![]() |
مطلب ندارم |
![]() |
|
ویرایش نهایی Visual Studio 2008 عرضه شد. |
||
|
2
نوشته شده در سه شنبه 1386/11/16ساعت 22:21  توسط علی |
|
||
![]() |
Atmel 89 Series Device Programmer |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
من یک نمونه از این پروگرامر رو منتاژ کردم و ۱۰۰٪ جواب میده.
این پروگرامر قابلیت پروگرام کردن آیسی های زیر را دارد:
برای اطلاعات بیشتر به منبع اصلی مراجعه کنید. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2
نوشته شده در چهارشنبه 1386/08/09ساعت 19:16  توسط علی |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
استفاده از پورت موازی کامپیوتر در دات نت |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
در ویژوال استودیو 2005 هیچ کنترلی جهت کار با پورت موازی طراحی نشده است در نتیجه برای کار با پورت موازی ما از یک dll به نام inpout32.dll استفاده می کنیم.برای استفاده از این dll ابتدا ما باید آن را به برنامه خود وارد کنیم.من دو مثال یکی به زبان C#.net و یکی به زبان VB.net نوشتم که طرز استفاده از این dll را نشان می دهد.
دانلود ۱۰۰کیلو (Updated 1387/2/30)
شکل زیر شماره پین های پورت موازی را نشان میدهد.
مشخصات هر پین در جدول زیر نوشته شده است.
برای فرستادن یک عدد به پورت موازی از آدرس 888 و برای خواندن از پورت موازی از آدرس 889 استفاده می شود که این آدرس ها را می توان داخل ستاپ کامپیوتر عوض کرد.
اگر سوالی در مورد این پست داشتید در قسمت نظرات بگویید تا در اسرع فقط پاسخ دهم.
این پست استفاده از پورت های کامپیوتر توسط سی تحت داس را نشان می دهد. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2
نوشته شده در سه شنبه 1386/07/24ساعت 21:31  توسط علی |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
پروگرامر FPGA & CPLD - JTAG |
![]() |
|
این پروگرامر به پورت موازی وصل می شود و قابلیت پروگرام کردن آیسی های خانواده Virtex/E/II/I-PRO Families (FPGA) CoolRunner Families (CPLD) Spartan/II/II-E/3 Families (FPGA) XC9500/XL/XV Families (CPLD) XC1800 Families (PROM) را دارد.شماتیک پروگرامر رو در شکل زیر می بینید.جهت نمایش صحیح رو عکس کلیک کنید. |
||
|
2
نوشته شده در شنبه 1386/07/07ساعت 19:13  توسط علی |
|
||
![]() |
سایت خودم |
![]() |
| این سایت خودمه | ||
|
2
نوشته شده در جمعه 1386/04/08ساعت 1:22  توسط علی |
|
||
![]() |
الافی |
![]() |
|
امروز یه پرستو اومده بود تو خونمون.
با وب کم عکسشو گرفتم به همین دلیل کیفیت نداره.
خیلی خوشگل بود چند تا اسکن هم ازش گرفتم.
اینم طرف دیگش:
بعدا آزادش کردم.دیگه فکر نکنم این طرفا پیداش بشه. |
||
|
2
نوشته شده در جمعه 1386/01/31ساعت 21:39  توسط علی |
|
||
![]() |
سال نو مبارک(نوروز1386) |
![]() |
|
|
||
|
2
نوشته شده در دوشنبه 1385/12/28ساعت 21:46  توسط علی |
|
||














