نمونه کد ARM برای انواع مدل های ARM

نمونه کد ARM

نمونه کد ARM فلاشر ساده با میکروکنترلر ARM سری LPC مدل LPC2138

در این نمونه کد ARM اعداد 1، 2، 4 و 8 به ترتیب بر روی پورت 0.0 تا 0.3 نمایش داده می شوند که می توان علاوه بر این تک حالت، حالت های دیگری را هم به آن اضافه نمود

راه اندازی LCD کاراکتری در مد 8 بیتی با میکروکنترلر ARM مدل LPC2138

اتصال ال سی دی کاراکتری به ARM

این برنامه بدون تست پرچم Busy Flag نوشته شده است. در این برنامه شمارنده ای افزایش می یابد و وقدار آن برروی LCD نوشته می شود. پورت 1 میکروکنترلر نیز فقط 16 پایه دارد و به دلیل فعال بودن Pull Up داخلی آن، به رنگ قرمز نشان داده شده است.

راه اندازی وقفه ی خارجی صفر با میکروکنترلر ARM مدل LPC2138

وقفه ی خارجی صفر

در این برنامه با هربار فشردن کلید موجود، وقفه رخ داده و متغیری در برنامه ی وقفه بعلاوه چهار شده و مقدار آن به صورت باینری روی پورت 0 نشان داده می شود. این وقفه از نوع irq بوده و باید پس از خروج از برنامه ی وقفه پرچم وقفه را پاک کنیم.

راه اندازی UART میکروکنترلر ARM سری LPC

 

ارتباط UART میکروکنترلر ARM

  در این برنامه با تایپ کردن حروف در پنجره ی Virtual Terminal نرم افزار Proteus، این حروف توسط Virtual Terminal برای میکروکنترلر ARM ارسال می شود و این میکروکنترلر با دریافت این اطلاعات آنها را بر روی LCD و نیز بر روی پورت P0.16 تا P0.23 نمایش می دهد. لازم به ذکر است که در تمامی مدارات میکروکنترلر ARM موجود در این قسمت الزامی است که پایه های P1.31، P1.26، P1.20، P0.31 و P0.14 با یک مقاومت Pull Up یا Pull Down شوند تا میکروکنترلر وارد برنامه ی Bootloader نشود و بتواند کار کند. ولی برای شبیه سازی لازم است که مقاومت پایه ی P0.14 را پاک کنید.

اتصال LCD کاراکتری در مد 8 بیتی به هر پایه ی دلخواهی از ARM با توابعی شبیه به AVR

در این برنامه امکان اتصال پایه های LCD به هر پایه ی دلخواهی از ARM وجود دارد. برای تغییر این پایه ها کافی است فایل lcd.h را باز کرده و define های اول این فایل را تغییر دهید و برنامه را مجددا کامپایل نمایید

راه اندازی ADC و اتصال سنسور دمای LM35

در این برنامه ماژول ADC میکروکنترلر ARM راه اندازی شده است و دما را خوانده و بر روی LCD نمایش می دهد.

پخش صدا با استفاده از ماژول PWM و DAC

ماژول PWM برای پخش صداهای 8 بیتی بسیار مناسب می باشد زیرا با PWM هشت بیتی می توان فرکانس PWM برابر دو برابر فرکانس Sample Rate را ایجاد نمود. ولی در PWM با دقت 16 بیتی باید فرکانس ورودی را تا 3 گیگا هرتز افزایش داد که این غیر ممکن است به همین دلیل روش صحیح پخش صدا استفاده از DAC می باشد. در این برنامه یک فایل Wav که در حافظه ی ARM قرار دارد خوانده شده و پخش می شود. مشخصات این فایل به صورت زیر است: sample Rate:22050 Sample size:8 bit شکل زیر هدر فایل Wav را نشان می دهد:


پخش صدا از روی حافظه ی MMC یا SD Card

این برنامه با نرم افزار پروتئوس شبیه سازی نمی شود. در این برنامه فایل Wav با مشخصات زیر از روی حافظه ی MMC خوانده شده و با کیفیت بسیار خوبی پخش می شود sample Rate:22050 Sample size:16 bit در این برنامه با استفاده از ارتباط SPI با MMC ارتباط برقرار می شود و از آن اطلاعات خوانده خواهد شد با توجه به سرعت فرکانس کلاک (16 مگاهرتز) با حداکثر سرعت از MMC اطلاعات خوانده می شود. حال اگر عکس sample rate را محاسبه نماییم حدود 45 میکروثانیه می شود و باید هر 45 میکروثانیه دو بایت داده وارد DAC ده بیتی میکروکنترلر ARM شود که این کار با استفاده از وقفه ی تایمر صفر انجام شده است و در این وقفه شمارنده ای زیاد می شود و وقتی به 22222 رسید (یعنی حدود یک ثانیه) زمان نمایش داده شده بر روی LCD هم یک ثانیه زیاد می شود در شکل های زیر پایه های انواع MMC را مشاهده می کنید:

حافظه ی SD

حافظه ی Mini SD

حافظه ی uSD


فعال کردن آی سی DS1307 و دریافت زمان از آن با I2C سخت افزاری

DS1307

در این برنامه زمان و تاریخ از DS1307 خوانده می شود و بر روی LCD نمایش داده می شود. با فشردن دو کلید key1 و key2 می توان زمان و ساعت را تغییر داد. توسط تابع ;(i2c_init(100,4.608 فرکانس I2C برابر 100 کیلو هرتز می شود فرکانس PCLK نیز یک چهارم فرکانس CPU که برابر 18.432 مگاهرتز است یعنی 4.608 مگاهرتز می باشد. تابع i2c_init رجیستر های I2C0SCLL , I2C0SCLH را با توجه به فرکانس PCLK و فرکانس مورد نظر در پایه ی SCL مقدار دهی می کند با مقدار دهی رجیستر PINSEL0 عملکرد SDA و SCL فعال می شود. توسط تابع rtc_get_time زمان گرفته می شود و اگر زمان بیش از 59 باشد (یعنی اولین بار است که برق به DS1307 وصل می شود) زمان به صورت پیش فرض 12:00:00 تنظیم میشود. در نهایت مقدار زمان بر روی LCD نشان داده خواهد شد

ارتباط با حافظه ی EEPROM خارجی

در این برنامه یک حافظه ی EEPROM به ARM وصل شده است. ARM کد های این حافظه را خوانده و بر روی LCD نمایش می دهد. همچنین در ابتدای برنامه با استفاده از تابع eeprom_write دو عدد 0x37 و 0x38 به ترتیب در آدرس 0 و دو این حافظه ذخیره می شوند. این تابع سه ورودی میگیرد. یکی آدرس EEPROM که برابر 0xA0 دیگری آدرس خانه ی حافظه و دیگری داده ای که قرار است نوشته شود. در این برنامه تابع delay با استفاده از تایمر 0 ایجاد شده است و برای عملکرد صحیح آن باید در ابتدای برنامه تابع delay_init فراخوانی شده و مقدار دقیق فرکانس PCLK را به آن بدهیم. تابع eeprom_read هم آدرس دستگاه و آدرس خانه ی حافظه را میگیرد و کد را خوانده و بر میگرداند

تایمر سگ نگهبان WDT

در این برنامه ابتدا شمارنده ی WDT با عدد 250000 پر می شود. سپس با مقدار دهی رجیستر WDMOD و سپس WDFEED این تایمر فعال می شود و به صورت نزولی شروع به شمارش می کند. در بین برنامه باید دائما رجیستر WDFEED را مقدار دهی نماییم تا این تایمر دائما با 250000 پر شود. در صورت عدم مقدار دهی به موقع WDFEED این تایمر به صفر می رسد و ARM را RESET می کند. در این برنامه فرکانس PCLK برابر 1 مگاهرتز تظیم شده است و دلیل مقدار دهی رجیستر WDTC با عدد 250000 این است که این تایمر حداکثر تا 250 میلی ثانیه صفر می شود و باید قبل این زمان دستور WDFEED اجرا شود

ارتباط با اترنت از طریق ماژول ENC28J60

ENC28J60

ماژول ENC28J60 با ارتباط SPI کار می کند و می تواند سرعت 10Mbps داشته باشد. در این برنامه از توابع کتابخانه ی کتاب 11 پروژه با AVR استفاده شده است و این توابع برای میکروکنترلر ARM تغییر کرده اند و در برنامه ی اصلی نیز با استفاده از دو کلید key1 و key2 می توان مقدار شمارنده ای را تنظیم کرد و آن را در کامپیوتر مشاهده نمود. در این ارتباط باید IP کارت شبکه را برابر مقدار 192.168.1.1 تنظیم کنیم و سپس در صفحه ی Firefox یا Internet Explorer باید عدد 192.168.1.10 را وارد نماییم و در این صورت مقدار شمارنده ی روی LCD کاراکتری را در صفحه ی مرورگر می بینیم. حال اگر تایپ کنیم http://192.168.1.10/ARM.html کلمه ی ARM.html را بر روی LCD کاراکتری مشاهده می کنیم. برای راهنمایی بیشتر شکل های زیر را مشاهده نمایید

در ویندوز 7 و 8 داریم:

در حلقه ی بی نهایت برنامه دائما تابع ethernet_process فراخوانی می شود و در صورت وجود پکت در شبکه، آن را دریافت و پردازش می کند. در این برنامه UART1 هم فعال است و می تواند توسط تابع send_char اطلاعات دریافتی را برای پورت سریال ارسال نماید تا بتوان دقیق تمامی اطلاعات را مشاهده نمود. نرخ ارسال UART برابر 115200 می باشد و کریستال متصل شده به ARM مقداری برابر 18.432 مگاهرتز دارد.

راه اندازی ماژول پخش صدای VS1003

VS1003

این آی سی فرمت های Wav، MP3، WMA، MIDI و AAC را با کیفیت بسیار خوبی می تواند پخش نماید. در واقع نوعی Codec سخت افزاری برای پخش صدا می باشد. پردازش هر فایل (یعنی دیکد کردن فایل) بسیار مشکل است و طبق الگوریتم هافمن فشرده می شود. فایل mp3 از کنار هم قرار گرفتن Frame ها ساخته می شود. هر Frame شبیه به شکل زیر است

Header هر Frame شبیه به شکل زیر است که از 32 بیت تشکیل می شود:

در شکل بالا Header و Side Information با دو رنگ مختلف نشان داده شده اند. دیکد کردن و تبدیل MP3 به فرمت Wav برای پخش الگوریتم پیچیده ای دارد. در ضمن هر فایل MP3 پارامتر های مختلفی مانند Bit rate دارد که بدون داشتن آن غیر ممکن است که بتوان فایل MP3 را دیکد نمود. این آی سی شبیه یک میکروکنترلر می ماند که برنامه های نوشته شده ای برای دیکد کردن و پخش فایل های مذکور با کیفیت بسیار خوب دارد. این آی سی صدا را به صورت استریو پخش می کند و بلندی صدا به صورت نرم افزاری قابل تنظیم است. حتی قابلیت اتصال میکروفن به این آی سی و خواندن صدا از میکروفن و ضبط آن از قابلیت های دیگر این آی سی است. سخت افزار این آی سی به صورت شکل زیر می باشد:

VS1003 Schematic

فرکانس ورودی این آی سی باید بین 12 تا 13 مگا هرتز باشد و بهتر است که برابر 12.288 مگاهرتز باشد تا پس از عبور از PLL به 52 مگاهرتز جهت پردازش فایل های صوتی برسد. در شکل فوق ترمینال P1 مخصوص اتصال میکروفن است. تغذیه ی این آی سی باید 3.3 ولت باشد. در این برنامه از یک MMC کد ها خوانده می شود و برای آی سی VS1003 ارسال می شود. قبل از ارسال پایه ی Xdcs از طرف میکرو صفر می شود و سپس اطلاعات ارسال می شوند و پایه یXdcs مجددا یک می شود. پس از آن منتظر می مانیم تا VS1003 پایه ی Dreq را یک کند به این معنی که اطلاعات را پردازش کرده است. ما بایت بعدی را از MMC خوانده و برای VS1003 ارسال می کنیم. در تابع vs1003_init نیز بلندی صدا، میزان باس صدا و تربیل صدا تنظیم می شوند.

VS1003 Circuit

در تصویر بالا برد ساخته شده برای VS1003 را مشاهده می کنید.

اتصال ال سی دی گرافیکی با درایور ks0108 به ARM

GLCD Schematic

این ال سی دی با درایور KS0108 در ابعاد 128 پیکسل در 64 پیکسل می باشد و به دو نیمه تقسیم می شود که با استفاده از پایه های CS1 و CS2 می توان یکی از دو نیمه را انتخاب نمود. در ابتدا برای روشن کردن GLCD باید نیمه ی اول را انتخاب کرد و دستور 0x3F را برای آن ارسال کنیم و سپس نیمه ی دوم را انتخاب کرده و دستور 0x3F را برای آن ارسال کنیم تا LCD روشن شود. سپس با استفاده از تابع glcd_show_pic عکسی بر روی این ال سی دی نشان داده می شود که کد های این عکس در آرایه ی code1 قرار دارد و با استفاده از برنامه ی GLCD_Editor در فایل پیوست از روی عکس BMP ایجاد شده است. پس از نمایش تصویر بر روی ال سی دی با تابع glcd_show_character اعداد صفر تا 9 در مختصات 2 و 62 از LCD یعنی سطر دوم و ستون 62 نمایش داده می شوند. برای کاهش مصرف پایه های ARM از دو آی سی Latch استفاده شده است. در اصل در برد اصلی 4 آی سی Latch وجود دارد که دو تای آن جهت کنترل سون سگمنت و GLCD و دو تای آن جهت کنترل LCD نوکیا بکار رفته است تا پایه های ARM کمتر استفاده شوند تا بتوان از امکانات دیگری مانند UART و SPI و ADC در دیگر پایه ها استفاده نمود. پایه های این ال سی دی به صورت شکل زیر است:

GLCD Pinout

ARM GLCD

در تصویر بالا برد ال سی دی گرافیکی، ال سی دی نوکیا N96 و سون سگمنت را مشاهده می کنید که برنامه های نوشته شده برای هر قسمت در این برد قابل اجرا شدن هستند. این برد به برد Main که عکس آن در قسمت طرح درس قرار دارد، وصل می شود.

اتصال ال سی دی رنگی نوکیا مدل N96 به ARM

N96 Circuit

TFT LCD Picture

این برنامه برنامه ی تغییر یافته ی آقای علی ایمانی فر است که برای AVR نوشته است. این برنامه به گونه ای ویرایش شده است که بر روی ARM هم اجرا شود. مقاله ی کامل آن را در سایت گوگل جستجو کنید. فقط تنها فرق این برنامه با برنامه ی آقای ایمانی فر این است که ارسال اطلاعات به LCD فقط به صورت یک طرفه است و نمی توان از LCD اطلاعات را خواند به همین دلیل نمی توان متن شفاف بر روی LCD نشان داد دلیل آن هم این است که در برد طراحی شده به علت محدودیت پایه ها نتوانستم تا تعداد زیادی از پایه های ARM را برای این کار استفاده نمایم. در ابتدای فایل tftlcd_functions.h تمامی پایه ها define شده اند و در این برنامه پایه ها به صورت بیتی مقدار دهی می شوند و با مقدار دهی بایتی پایه ها می توان سرعت LCD را تا 10 برابر افزایش داد. اما برای سادگی برنامه این کار انجام داده نشده است.

اتصال سنسور مادون قرمز HS0038 به ARM و دریافت کد های کنترل سونی

HS0038 Circuit

HS0038 Picture

به دلیل وجود یک AGC یا همان تقویت کننده ی اتوماتیک در داخل این آی سی برد آن بسیار زیاد است و از فاصله ی دور هم می تواند کد های کنترل تلویزیون سونی را آشکار نماید. کنترل تلویزیون سونی یک را به صورت 011 و صفر را به صورت 01 ارسال می کند و زمان بین هر عدد 600 میکرو ثانیه می باشد. در برنامه در تابع irq void Eint3__ به دلیل اینکه تایمر نمی تواند زمان هایی در حد میکرو ثانیه را به خوبی ایجاد نماید، در صورت عدم جواب گرفتن صحیح از این مدار مقدار اعداد موجود در توابع delay را تغییر دهید تا به بهرین نتیجه دست یابید. (این برنامه با فرکانس 18.432 مگا هرتز به خوبی کار کرد) برای فهم بیشتر شکل های زیر را مشاهده نمایید:

مانند شکل بالا در قسمت پایین سمت چپ نرم افزار پروتئوس کلید step را بزنید.

مانند شکل بالا در صفحه ی باز شده فایل HS0038.c را انتخاب نمایید.

سپس با دابل کلیک بر روی خط 860 و 868 و 878 سه breakpoint (یا سه نقطه ی ایست) قرار دهید تا برنامه با رسیدن به این سه نقطه متوفف شود. سپس کلید F12 (یا در پایین سمت چپ کلید Play) را بزنید تا برنامه اجرا شود.

بعد از اجرای برنامه مطابق شکل بالا بر روی LogicState کلیک کنید تا یک شود و دوباره کلیک کنید تا صفر شود و لبه ی پایین رونده ایجاد شود (بجای Logic State سنسور HS0038 وصل می شود اما چون پروتئوس آن را ندارد، ما Logic State قرار دادیم). بعد از ایجاد لبه ی پایین رونده برنامه در خط 860 متوقف می شود. زیرا شما در این خط یک breakponit قرار داده اید. حال به مجددا کلید F12 (یا همان کلید Play در پایین صفحه) را بزنید. مجددا برنامه در خط 868 متوقف می شود. حال شما باید در پایین صفحه مطابق شکل زیر زمان سپری شده از خط 860 تا خط 868 را ببینید:

این زمان باید برابر 300 میکرو ثانیه باشد. مجددا کلید play را بزنید تا برنامه به خط 878 برسد و مجددا هم این کلید را بزنید تا برنامه مجددا به خط 878 برسد (این خط در حلقه قرار دارد و 40 بار اجرا می شود) در این صورت باید در پایین صفحه زمان 600 میکرو ثانیه را مشاهده نمایید (مانند شکل بالا) اگر فرکانس را تغییر دهید، این زمان بهم می خورد که شما باید در تصویر زیر

عدد 260 را در حلقه ی for آنقدر تغییر دهید تا تاخیر 600 میکرو ثانیه شود. همچنین می توانید این حلقه را در خط 860 بنویسید. یعنی خط 860 را پاک کرده و این حلقه را در این خط قرار دهید در شکل زیر کد های کلید های کنترل سونی را مشاهده می کنید که به صورت هگز (مبنای 16) هستند:

کد کلید های کنترل تلویزیون

در شکل زیر نوع کد شدن کد های بالا نشان داده شده است:

کد گذاری کنترل تلویزیون

فرض کنید کلید 0 از کنترل را فشار دهیم. کد هگز این کلید 089 می باشد و باینری آن 1001-1000-0000 می باشد. موقع ارسال بیت صفر به صورت 01 و بیت 1 به صورت 011 ارسال می شود و زمان بین هر کدام حدود 600 میکرو ثانیه است. مثلا برای ارسال عدد باینری 0110 این عدد به صورت 0101101101 ارسال می شود که زمان ارسال برابر 6000 میکروثانیه است. پس عدد 089 به صورت زیر ارسال می شود

089  = 0000-1000-1001 >send > 11110   01010101-011010101-0110101011

hex        binary  code                   header   0  0  0  0-   1  0  0  0-  1   0  0   1

پس هدر به مدت 3000 میکروثانیه، یک (011) به مدت 1800 میکروثانیه و صفر (01) به مدت 1200 میکروثانیه طول می کشد ارسال شود. با ارسال یک (عدد یک نه بیت یک داده) یک فرکانس حامل 40KHz هم ارسال می شود که سنسور HS0038 فقط پوش این فرکانس را به ما می دهد. طبق شکل زیر:

کد گذاری تلویزیون سونی


راه اندازی آی سی شتاب سنج و زاویه سنج ADXL330

ADXL330 Schematic

ADXL330 Picture

این سنسور توانایی اندازه گیری شتاب و زاویه را دارد. کافی است تا پایه های X، Y و Z در شکل بالا را به هم نام این پایه ها در فایل Sim.DSN موجود در پیوست وصل نمایید. این فایل در محیط پروتئوس باز می شود ولی شبیه سازی نمی شود. این برنامه فقط اعداد سه محور را نشان می دهد و محاسبات شتاب در این برنامه صورت نگرفته است.

ADXL330 Circuit

تصویر بالا برد ساخته شده برای ADXL330 و HMC1052 را نشان می دهد. این برد به برد Main که عکس آن در طرح درس است، وصل می شود.

راه اندازی آی سی مغناطیس HMC1052

HMC1052 Schematic

HMC1052 Amplifier

این سنسور می تواند میدان مغناطیسی (حول یک سیم برق یا کره ی زمین (قطب نما) یا یک آهنربا) را اندازه بگیرد. به دلیل خروجی های آنالوگ بسیار ضعیف این سنسور باید برای اتصال آن به یک میکروکنترلر از یک تقویت کننده استفاده شود. در شکل بالا این تقویت کننده دیده می شود. بهتر است قطعات آن همگی SMD باشند و خازن های 100nF که به زمین و VCC_HMC وصل هستند در نزدیک ترین فاصله به آی سی های تقوت کننده و سنسور قرار بگیرند تا نویز را برطرف نمایند. برای افزایش نور LED های خروجی می توان مقاومت های R13 و R12 را حذف نمود و جای آنها مقاومت های R21 و R22 را قرار داد. دیود های نوری با تغییر قطب مغناطیسی کم نور و پر نور می شوند که برای کالیبره کردن آنها باید مولتی ترن های (مولتی ترن یک پتانسیومتر چند دوری است) P2 و P3 را به دقت تنظیم کنید. نکته ی آخر اینکه حتی الامکان تغذیه ی VCC_HMC را از تغذیه ی سایر مدار جدا کنید تا نویز کمتر بگیرد. در طراحی مدار چاپی تا حد ممکن کل این قسمت ها را از تغذیه و قسمت های فرکانس بالا دور کنید زیرا این سنسور بسیار حساس است. حتی می توانید یک برد مدار چاپی جداگانه برای سنسور طراحی نمایید.

ارتباط با تراشه ی LPC1768

رجیستر های میکروکنترلر LPC1768 بسیار شبیه به LPC2138 هستند فقط آنها را به صورت دسته بندی شده (Struct) قرار داده اند. مثلا برای دسترسی به رجیستر های کنترل پورت صفر باید بنویسیم LPC_GPIO0->FIOSET LPC_GPIO0->FIOCLR LPC_GPIO0->FIODIR میکروکنترلر LPC2138 رجیستر های IOCLR، IOSET و IODIR دارد و هم رجیستر FIOSET، FIOCLR و FIODIR دارد. که رجیستر های FIO سرعت بالاتری دارند و مستقیم با CPU در ارتباط هستند به همین دلیل در مدل LPC1768 رجیستر های IOCLR و… حذف شده اند. در این برنامه یک LED با این میکروکنترلر روشن و خاموش می شود. بدی این تراشه این است که در Proteus شبیه سازی نمی شود به همین دلیل بیشتر برنامه های این قسمت با LPC2138 هستند. (البته Proteus بعضی از قسمت های LPC2138 را هم به درستی شبیه سازی نمی کند مانند مبدل DAC یا بعضی از پایه های ADC) فایل Startup در این تراشه به دنبال تابع systeminit در زبان C می گردد که در این تابع باید تنظیمات PLL و کلاک Peripheral ها انجام شود.
برنامه ی میکروکنترلر ARM سری STM32 مدل STM32F107 این مدل از میکروکنترلر ها امکانات خوب و قیمت خوبی دارند. در برنامه ی نوشته شده برای این مدل یک LED روشن و خاموش می شود. این خط کلاک جانبی را فعال می کند;(RCC->APB2ENR=1|(1<<4 این خط پایه ی اول پورت C را یک می کند GPIOC->BSRR=1 این خط پایه ی اول پورت C را صفر می کند GPIOC->BSRR=16

برنامه ی نمونه برای کار با کامپایلر IAR

کامپایلر IAR شباهت بسیار زیادی با کامپایلر Keil دارد. در نسخه های جدید این کامپایلر نیازی به فایل Startup نیست و ما باید رجیستر های Startup را خودمان مقدرا دهی نماییم. بار ها شده است که برنامه را بدون تغییر از keil به iar کپی کرده ام و مشکلی هم ایجاد نشده است.

نمایش زمان بر روی سون سگمنت با ARM

این نمونه کد ARM در نرم افزار Proteus به خوبی اجرا نمی شود ولی در عمل کار می کند و زمان را از DS1307 خوانده و روی سون سگمنت نمایش می دهد.

7Seg Schematic

38 thoughts on “نمونه کد ARM برای انواع مدل های ARM

  1. علی says:

    بسیار عالی و ممنون از تون
    اگر امکان داره کدها و آموزش هایی هم برای میکروکنترلر lpc1788
    بذارید باز هم ممنون و تشکر از وقت و زحمتی که کشید

  2. علی says:

    سلام خسته نباشیت خیلی خوب هست کد های خوبی داخل سایت گذاشتید مرسی که هستید

  3. مهدی says:

    با سلام
    هنگام نوشتن در یک EEPROM به صورت صفحه‌ای، می‌بایست یک آدرس (به جای ارسال همه آدرس‌ها) ارسال شود.
    این آدرس، آدرس کم ارزش‌ترین داده است یا باارزش‌ترین داده؟
    پس از ارسال دومین داده، آدرس در EEPROM به صورت خودکار افزایش می‌یابد یا کاهش؟

    لطف کنید کمی در مورد نوشتن به صورت صفحه‌ای توضیح دهید.

    • محمد رضا بیگی says:

      آدرس شروع هر صفحه، کم ارزش ترین آدرس است و وقتی داده اول نوشته شود، EEPROM اتوماتیک یک آدرس جلوتر می رود.

  4. elec says:

    با سلام و خسته نباشید.
    اگه امکانش هست قسمت تاچ اسکرین رو هم راه بندازین و آموزش بدین… البته با lpc788 کار میکنم …
    با تشکر

  5. دانیال says:

    ممنون به خاطر اموزش های کاربردی که گذاشتین. یک سوال داشتم برای اینکه من بتونم به مبحث ارتباط با میکرو از طریق ساخت یک وب سرور تسلط پیدا کنم . چه موضوعاتی رو باید پیگیری کنم.

    • محمد رضا بیگی says:

      آشنایی با پروتکل های مختلف
      توانایی کار با میکروکنترلر
      و توانایی تجزیه و تحلیل کد های آماده که قبلا نوشته شده است

  6. جواد جعفری says:

    دمتون گرم
    من خیلی خیلی از سایتتون استفاده کردم
    انشا الله در تمامی مراحل زندگی تون موفق باشید

    • محمد رضا بیگی says:

      فقط رجیستر های پریفرال را تغییر دهید توابع ثابت هستند

  7. هادی دمرچلی says:

    سلام پروژه هاتونو با چه نرم افزاری مینویسید 

    من نرم افزار keil  ورژن 5   دارم lpc2138  ساپورت نمیکنه 

    چ کار کنم ؟؟

     

    • محمد رضا بیگی says:

      keil v5

      خیلی از مدل ها را ساپورت نمی کند. ورژن 4 آن را دانلود کنید که همزمان با ورژن 5 هم آپدیت می شود

  8. رضا says:

    سلام.من میخواستم از طریق یه دوربین وب کم و lpc یه عکس بگیرم.اگه ممکنه راهنمایی کنید چیکار کنم.ممنون

  9. حسن says:

    با عرض سلام خسته نباشید 

    بسیار کامل و جامع بود

    از لطف شما نسبت به دوستان علاقمند به arm بینهایت ممنونیم 

    موفق باشید

     

  10. ProDark says:

    سلام
    اگر امکانش هست در رابطه با ساخت یا اتصال میکروفون با ARM مطالب بیشتری ارائه دهید.
    درصورت امکان ایمیل فرمایید.
    باتشکر.

    • محمد رضا بیگی says:

      پس از تقویت میکروفن با یک مدار تقویت کننده آن را به ورودی adc می دهیم و میکروکنترلر با سرعت زیادی (حداقا 11 هزار نمونه در ثانیه) از آن صوت نمونه بر می دارد و ذخیره می کند

  11. بابک says:

    با سلام اگه ممکنه راجع به ارسال و دریافت اطلاعات از طریق ماژول NRF24L05 با میکرو LPC1768 اطلاعتی قرار دهید که به شدت مورد نیاز است.

  12. saeid says:

    برنامه ای برای pwm  نوشتم که pwm5  را به صورت sngle edge  راه انداری می کند . برنامه درست کار می کند و وقتی آن را debug  می کنم در قسمت pwm  به صورت متناوب تیک pwm5  زده و برداشته می شود و به نظرم این همان خروجی pwm  است که 0 و یک می شود و برنامه درست کار می کند. درست؟

    خب حالا وقتی من در پروتیوس شبیه سازی می کنم پایه p0.21 که با تابع pinsel آن را در  pwm5 mode تنظیم کرده ام تغییری نمی کند و به صورت low  باقی می ماند( بقیه پایه ها خاموش هستند). با اسیلوسکوپ هم دیدم فرقی نمی کند . لطفا راهنمایی کنید.

    • محمد رضا بیگی says:

      بدون دیدن برنامه نمی توان مشکل را گفت

      از مثال های موجود استفاده نمایید

  13. saeid says:

    من یک هفته است با اینتراپت lpc2138 کار میکنم . تمام توابع درست می نویسم اما قسمت تابع وقفه اجرا نمی شه . حتی این برنامه وقفه که در همین صفحه سایت قرار دادیدراه اندازی وقفه ی خارجی صفر با میکروکنترلر ARM مدل LPC2138 را کپی کردم و پروژه جدید ساختم اما مثل قبل برنامه تابع وقفه را اجرا نمی کند . وقتی خود فایلی که از اینجا گرفتم را کامپایل می کنم , کار می کند !!

    شما را هم کلا کپی کردم اما باز هم نشد . حتما در مراحل ساخت پروژه یکی از تنظیمات را انجام نمی دهم . لطفا راهنمایی کنید. خواهش می کنم کمک کنید .اعصابم خورد شده ):

    • محمد رضا بیگی says:

      برنامه ی موجود درسایت کاملا ساده نوشته شده است و کار می کند. برنامه ی شما مشکل دارد

      باید کد آن را بررسی نمایید

    • saeid says:

      مشکل پیدا کردم در قسمت configure  در تب  linker  تیک قسمت use memory layout  را نزده بودم

  14. محمدی says:

    بسیار از اینکه این تعداد پروژه که همگی برای من دنیایی ارزش دارد کذاشته اید متشکرم

  15. الکترونیک says:

    با تشکر و خسته نباشید

    پروژه هاتون سطح بسیار بالایی دارن با تشکر از فرصت یادگیری که فراهم کردید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *