به بزرگترین مرجع پردازنده های دیجیتال ایران خوش آمدید
به بزرگترین مرجع پردازنده های دیجیتال ایران خوش آمدید

در این بخش پروژه های رایگان وغیر رایگان وهمچنین خدمات سایت معرفی شده است در قسمت خدمات ، خدماتی مانند طراحی برد مدار چاپی با نرم افزار پروتل،ترجمه متون تخصصی،شبیه سازی مدارات میکروکنترلی و... ارائه می شود.با تشکر
مرجع پردازنده های دیجیتال.

در این بخش ما به آموزش مباحث مربوط به پردازنده های سیگنال دیجیتال ،برنامه نویسی و نرم افزار های مرتبط با ان می پردازیم.شما می توانید سوالات ومشکلات خود را در ارتباط با این مباحث در قسمت نظرات مطرح کرده و ما در صورت امکان پاسخ مناسب خواهیم داد . با تشکر
مرجع پردازنده های دیجیتال.
![]()
شما در این بخش می توانید کتابهای و جزوات فارسی و انگلیسی با موضوعات اموزشی و درسی مرتبط با مباحث برق و الکترونیک دریافت کنید همچنین می توانید کتابهای مورد نظر خود را در قسمت نظرات درخواست کنید تا در صورت امکان در سایت قرار گیرد.با تشکر
مرجع پردازنده های دیجیتال.

در این بخش مجموعه ای از اموزشها ونکات مربوط به میکروکنترلرهای mega,xmega) AVR) و nxp ,atmel ) ARM) ،نحوه برنامه نویسی ،کامپایلرها و نمونه برنامه ها قرار دارد و همچنین شما می توانید سوالات خود رادر قسمت نظرات مطرح کنید تا در صورت امکان به انها پاسخ داده شود.با تشکر.
مرجع پردازنده های دیجیتال.
![]()
شما در این بخش می توانید مقالات فارسی و انگلیسی مرتبط با موضوعات الکترونیک،کنترل،مخابرات و قدرت را دانلود ومطالعه کنید.در صورت نیاز به مقاله ای با موضوع خاص در قسمت نظرات اعلام کنید تا در صورت امکان به لیست مقالات اضافه شود.با تشکر.
مرجع پردازنده های دیجیتال.
یک سیستم I2C معمولی که در بالا نشان داده شده که در LPC2000 به دو پورت خارجی گسترش دهنده متصل شده است.مانن سایر واحد های جانبی خطوط کلاک(SCL) و داده (SDA) باید از حالت GPIO به پین های I2C توسط بلوک اتصال دهنده تبدیل شوند.
واسط جانبی I2C از هفت رجیستر تشکیل شده است.رجیستر کنترل دارای دو رجیستر مجزا می باشد که برای ست و پاک کردن بیتهای رجیستر کنترل استفاده می شود(I2CONSET,I2CONCLR).نرخ سرعت همچنین توسط دو رجیستر(I2SCLH,I2SCLL) تعیین می شود.رجیستر وضعیت کدهای کنترل که در رابطه با حالات مختلف باس می باشد را برمی گرداند.رجیستر داده نیز برای ارسال داده استفاده می شود.همچنین در حالت در یافت نیز داده ها در این رجیستر قرار خواهند گرفت.در نهایت هنگامیکه LPC2000 به عنوان اسلیو پیکربندی می شود ادرس شبکه آن به وسیله مقدار دهی رجیستر I2ADR تعیین می شود.برای مقدار دهی اولیه I2C ما نیاز به اجرای کدهای زیر داریم.
VICVectCntl1 = 0x00000029; //select a priority slot for a given interrupt
VICVectAddr1 = (unsigned)I2CISR; //pass the address of the IRQ into the VIC slot
VICIntEnable = 0x00000200; //enable interrupt
PINSEL0 = 0x50; //Switch GPIO to I2C pins
I2SCLH = 0x08; //Set bit rate 14.7456Mhz/VPBDIV+SCLH+SCLL = 14.7456/4+8+8 = 57.6Khz
I2SCLL = 0x08;
I2C باید طوری برنامه ریزی شود که به هر اتفاقی روی باس واکنش نشان دهد.به همین خاطر این واحد جانبی وابستگی زیادی به وقفه دارد نتیجتا اولین چیزی که باید انجام شود تنظیم VIC برای پاسخ دهی به وقفه I2C می باشد.سپس بلوک انتخاب پین خروجی باید برای انتقال خطوط داده و ساعت I2C به پینهای خروجی تنظیم شود.سرانجام ما باید نرخ سرعت انتقال داده را با تنظیم رجیستر های I2SCLH و I2S CLL تنظیم کنیم.
Bit Rate = Pclk/(I2SCLH+I2SCLL).
در مثال بالا PLL فعال نیست و کریستال خارجی 14.745 MHz است بنابراین نرخ ارسال I2C برابر است با:
Bit Rate = 14.745/(8 + 8)=937500
بعد از این تنظیمات LPC2000 می تواند با قطعات دیگرروی باس ارتباط برقرار کند.برای نوشتن و خواندن داده به عنوان مستر روی باس یا دریافت و پاسخ به در خواست از یک باس مستر،محتوای رجیستر کنترل I2C در شکل زیر نشان داده شده است.به یاد داشته باشید که این رجیستر به وسیله رجیستر CONCLR و CONSET کنترل می شود.
در ابتدا نگاهی به حالت مستر می اندازیم برای ورود به این حالت ابتدا I2C باید فعال و بیت تصدیق باید صفر شود.این کار از انجام تصدیق اشتباه واحد I2C و وارد شدن آن به مد اسلیو جلوگیری می کند.
در حالت مستر قطعه LPC2000 مسئول آغاز ارتباط می باشد در طی انتقاال روی باس I2C تعدادی اتفاق ممکن است روی باس اتفاق بیافتد.
مستر باید ابتدا یک سیگنال شروع را ارسال کند.برای این منظور خط کلاک I2C بالا می رود و خط داده پایین می آید.آدرس اسلیو که مستر قصد ارتباط با آن را دارد روی باس قرار می گیرد و بعد از آن یک بیت که نشان دهنده در خواست خواندن یا نوشتن است ارسال می گردد و اگر اسلیو این رویه را به درستی دریافت کند با یک بیت تصدیق پاسخ می دهد.سپس می تواند به صورت توالی از بایتها و تصدیق ارسال گردد تا زمانیکه مستر انتقال را به وسیله یک بیت STOP قطع نمایید.
واحد I2C در سری LPC2000 واقعا یک موتور I2C کامل است.این موتور تمام رویدادهای اتفاق افتاده روی باس را کنترل می کند ولی نسبت به آن آگاهی ندارد.این بدان معناست که CPU ارم 7 باس I2C را برای هر انتقال به صورت Micro-Manage مدیریت می کند .خوشبختانه انجام این کار بسیار ساده می باشد و به مرکزیت وقفه I2C می باشد.هنگامیکه I2C در حالت مستر مقدار دهی اولیه شد ما می توانیم انتقال داده را به صورت زیر انجام دهیم.
ادرس اسلیو و داده که باید ارسال شود به صورت متغیر های سراسری تعریف می شوند تا بتوان به وسیله روتین وقفه I2C فراخوانی شوند.آدرس 7 بیتی می باشد و بیت LSB در حالت نوشتن 1 و در حالت خواندن 0 می باشد.روتین سپس پرچم های کنترل I2C را پاک می کند و I2C را فعال و شرایط شروع را ایجاد می کند هنگامیکه شرایط شروع روی باس قرار داده شده یک وقفه تولید می شود و یک کد که از رجیستر وضعیت I2C خوانده می شود.
اگر شرایط شروع بدرستی ایجاد شده باشد مقدار این کد 0X08 خواهد بود.سپس باید ادرس اسلیو و بیت R/W را در داخل رجیستر داده I2C نوشته شود.وقتی علامت تصدیق دریافت شد وقفه دیگری تولید می شود و رجیستر وضعیت دارای مقدار 0X18 خواهد بود اگر انتقال به درستی انجام شده باشد.اکنون که اسلیو بدرستی ادرس دهی شده است و آماده دریافت داده می باشد می توان یک رشته از بایتها را به داخل رجیستر داده I2C نوشت .هنگامیکه این کار انجام شد داده ارسال و علامت تصدیق دریافت می شود یک وقفه تولید و مقدار رجیستر وضعیت 0X28 خواهد بود و اگر انتقال ناموفق باشد NACK دریافت و مقدار رجیستر داده 0X20 خواهد بود و داده مورد نظر باید مجدد ارسال گردد. بنابراین به ازای هربایت ارسال یک وقفه روی خواهد داد و کد وضعیت باید چک شود و بایت بعدی می تواند ارسال شود.هنگامیکه کلیه بایتها ارسال شد با ایجاد شرایط توقف به وسیله نوشتن در رجیستر کنترل I2C انتقال متوقف می شود.وقفه های I2C یک ماشین حالت واقعی می باشد که با امتحان کردن کد رجیستر وضعیت در هر وقفه عملیات لازم را انجام می دهد بنابراین به راحتی و با استفاده از یک دستور SWITCH مانند زیر می توان براحتی این الگوریتم را پیاده سازی کرد.
این مثال یک تک بایت را ارسال می کند اما براحتی با تنظیم مجدد آن می توان چندین بایت را ارسال کرد.
در این مورد شرایط همانند قبل ایجاد می شود اما این بار ادرس نوشته شده با بیت R/W صفر روی باس قرار خواهد گرفت.هنگامبکه بعد از ارسال آدرس اسلیو تصدیق دریافت شد بعد از آن اولین بایت داده از اسیلو دریافت می شود و مستر احتیاج به انجام کاری ندارد.بنابراین دردستورات CASE ما می توانیم بیت ACK را ست کنیم تا بمحض انتقال بایت یک حالت ACK ایجاد شود.هربایت که انتقال می بابد داده را می توان از رجیستر I2CDAT خواند هنگامیکه همه بایتها خوانده شد شرایط توقف ایجاد و انتقال پایان می یابد.
همان تابع I2CTransferByte می تواند برای شروع خواندن داده استفاده شود و دستورات اضافی CASE که باید در روتین وقفه قرار گیرد به صورت زیر است.