نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
محرم

آموزش جامع میکروکنترلر avr جلسه6

انجمن های تخصصی برق و الکترونیک ECA

به نام خدا : آموزش جامع میکروکنترلر avr جلسه6 ؛ موضوع این جلسه : ۳ تا پروژه در مورد ” ارتباط سریال USART ” از سری مطالب آموزش avr

آموزش جامع میکروکنترلر avr جلسه6

آموزش جامع میکروکنترلر avr جلسه6


توجه ۱ : تا اونجایی که بتونم کد ها و ریجستر های مربوط به "ارتباط سریال USART" رو توضیح میدم و اگه جاییش رو نفهمیدید به مطلب قبلی مراجعه کنید و ببینید هر بیت مربوط به هر ریجستر کارش چیه.

آموزش جامع میکروکنترلر AVR جلسه۵

توجه ۲ : فایل های مربوط به هر سه تا پروژه رو به صورت یک جا در آخر برا دانلود میزارم.
توجه ۳ : این پروژه ها در ظاهر سادس ولی ممکنه تازه کارا به مشکل بخورن همون طور که بعضی از دوستان... ، به هر حال نظر من اینه که  موقع آموزش  باید پروژه های آسون بزارم و قشنگ توضیح بدم تا... قرار نیست که موقع آموزش پروژه ای در سطح پارس جنوبی بزارم که....) pardon
توجه ۴ : نحوه کار با LCD رو هم تو پروژه های مربوط به LCD باید خوب یاد گرفته باشید. فقط اینو بگم  که همیشه تا اونجایی ک میشه سعی کنید که LCD رو به PORTC وصل نکنید.و از پورت های دیگه استفاده کنید.
توجه ۵ : مطلب زیر رو حتما حتما بخونید>>>ادامه ی همین بحث هستش ولی تو قسمت مربوط به آموزش پروتئوس قرارش دادم.
آموزش جامع کار با پروتئوس جلسه۱

 

———–پروژه avr یک———–

آموزش جامع میکروکنترلر AVR جلسه6
همون طور که رد عکس بالا میبینید یه فرستنده داریم و یه گیرنده که با روشن خاموش کردن کلید ها  ، led ها روشن و خاموش میشوند.
و همون طور که مشاهده میکنید توسط پایه های RXD و TXD  که در PORTD هست این دو میکرو کنترلر به هم وصل شده اند.
این از کد های مربوط به میکرو کنترلر فرستنده

و اینم از کدهای مربوط به میکروکنترلر  گیرنده :

اگه توجه کنید کد های مربوط به “ارتباط سریال USART” در هر دو برنامه (هم فرستنده و هم گیرنده) تقریبا یکی هست غیر از ریجستر UCSRB که توسط بیت ۴ و ۵ همین ریجستر فرستنده گیرنده بودن میکروکنترلر رو تعیین میکنیم.(حالا دو هزاریت اوفتاد که چرا این دو کد با هم متفاوت اند.)

 

 ——-پروژه avr دو——-

اینم از پروژه ساده دوم>>> کار این پروژه اینه که با صفر یا یک کردن کلید مقدار اون در LCD نمایش داده میشود.
اینم از کد های برنامه فرستنده (تقریبا مثل پروژه قبلی هست فقط یه LCD اضافه شده)

اینم از کد های گیرنده :

 

 ————پروژه avr سه————

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

اگه توجه کرده باشید کد های مربوط به  “ارتباط سریال USART”  تو این پروژه مثل دو پروژه قبل هستش فقط با این تفاوت که تو دو پروژه قبل ریجستر UCSRB ، مثلا فقط به صورت فرستنده یا گیرنده تعریف شده بود اما تو این پروژه هم به صورت فرستنده و هم به صورت گیرنده تعریف شده و اگه بازم دقت! کنید میبینید که بیت ۴ و ۵ این ریجستر یک هست که دلیلش رو گفتم.

این پروژه دو که در بالا گزاشتم رو من به صورت عملی بستمش ولی چون میکروکنترلر مگا ۱۶ فقط یکی داشتم مجبور شدم از مگا ۸ استفاده کنم؛ فیلمی هم که در زیر میبینید مربوط به همین پروژه هستش که فیلمش رو گرفتم :

2MB پروژه ساده ارتباط سریال USART به زبان سی
0%
00:00  /  00:33

دانلود ۳ پروژه این جلسه | حجم : ۳۶۰ کیلوبایت!

سوال بود در خدمتیم. smile

 


 

بروزرسانی در یکشنبه – 21 خرداد 1396
یه کتابخونه نوشتم برا مگا 16/32 ( فک کنم ) که برا ساده شدن کارتون میتونید ازش استفاده کنید؛ که شامل توابع زیر هستش :

که شما فقط کافیه :

  1. اول پروژه کتابخونه رو فراخونی کنید.
  2. اولای تابع main تابع uartInit رو فراخونی کنید و BaudRate مد نظرتون رو به این تابع بدید.
  3. از توابع ارسال و دریافت اطلاعات استفاده کنید؛ وسلام.

با استفاده از این کتابخونه دیگه نیاز نیست هر دقیقه کد نویسی مربوط به ارتباط سریال رو انجام بدید. good فایل این کتابخونه رو از زیر میتویند دانلود کنید :

تعداد مطالب : 341 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
ارسال دیدگاه

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) پسورد فایل های سایت : www.dmf313.ir

4) نظرات حاوی کد برنامه نویسی تایید نمیشوند ( قالب سایت بهم میریزه )

  1. مهمان

    علی

    سلام مهندس ارسال دیتا(حروف و اعداد کاراکتری) بدون استفاده از کریستال خارجی امکان پذیر هست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    یکی دو هفتس رویه یه پروژه به ظاهر ساده موندم .یه لطفی میشه بکنید من سورس کد و فایلهامو براتون بفرستم یه چکی بکنید.واقعا کم آوردم دیگه به هرکی میگم میگه نمیدونم.

    • نویسنده این مطلب

      مهدی دمیرچیلو

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

      • مهمان

        علی

        ممنون cry تابه حال به موردی که پروگرامر usbasp درست پروگرام نکنه برنخوردید؟

        • نویسنده این مطلب

          مهدی دمیرچیلو

          من 2 بار پروگرامر مزخرف خریدم حالم گرفته شد – آخر سر رفتم هاتل گرفتم – الان هم پول داشته باشم میرم ICE میخرم.

          • مهمان

            علی

            خیلی ممنون victory

      • مهمان

        علی

        دوباره سلام آقا مهدی ارتباط باسیمم درست شد خدارو شکر.فقط مسئله ام اینه که وقتی به ماژول rf315Mhz ask tx و rx وصل میکنم میکروها نویز زیادی میگیره.(ولی بین همه اون نویز ها دیتا ها هم برای یک لحظه قابل مشاهدست.)باودریت 600 و کریستال خارجی متناسب با درصد خطای 0.00%.چیکار باید بکنم؟از وقفه rx هم استفاده کردم.
        ماژولrf بهتری که با uart کار کنه سراغ دارید؟
        روش درست فیلترینگ دیتا چجوریه؟
        ببخشید که زیاد کامنت میدم آخه خیلی اضطراریه.

        • نویسنده این مطلب

          مهدی دمیرچیلو

          سلام-این خوبه – فقط هرجا موجود داشت به من هم بگو تا بخرم. good heart
          https://shop.aftabrayaneh.com/Communications/Radio_wireless/2_4_GHz/Nrf24l01_2_4ghz_Transceiver_Module_E34_TTL_100__AFTAB.html

          • مهمان

            علی

            victory ok سپاسگزارم

          • مهمان

            علی

            خیلی شرمندم که زرت و زرت پیام میدم (امیدوارم در این مورد این آخریش باشه) ولی به یه مشکل عجیب خوردم help:در ارتباط باسیم وقتی مدار گیرنده و فرستنده رو هردو به یه منبع 5v وصل میکنم اطلاعات به درستی منتقل میشه ولی وقتی با منابع 5v جداگانه راه میندازمشون اطلاعات درست منتقل نمیشه و از کد فیلتر گیرنده عبور نمیکنه.اینم بگم که هردو مدار با یک نوع باتری 9v و رگولاتور 7805 راه اندازی شد ولی کارنکرد.لطفا کمکم کنید dash rtfm cry cry cry cry

          • نویسنده این مطلب

            مهدی دمیرچیلو

            من مشکلی به سوال کردن ندارم – تا جایی که بلد باشم و حوصلم بکشه جواب میدم.
            این مشکل وقتی رخ میده که زمین/gnd مدار ها مشترک نباشه.

  2. مهمان

    جوادی

    Mahdi Javadi:
    با سلام مشکلی درخصوص کار با سریال AVR دارم کدی که نوشتم قبلا جواب ميداد ولی الان نه، احتمال داره کدویژن ایرادی داشته باشه؟ نسخه کاملشو دارین؟ تشکر

    • مهمان

      علی

      شاید شماهم مشکلت مثل من از منبع برقته هردو مدار(گیرنده و فرستنده)رو با یه منبع راه اندازی کن مشخص میشه

  3. مهمان

    سالار

    باسلام و عرض ادب
    بابت مطالب سایت خیلی ممنونم. بسیار آموزنده هستند.
    یه سوال داشتم:
    اگر بخواییم از طریق فرستنده عدد هگزا دسیمالی مثل عدد زیر بفرستیم و در گیرنده آنرا دریافت کنیم، به چه صورتی باید انجام بدهیم؟
    2B 52 2C 31 36 38 37 31 2C 32 2C 32 0A 0D
    باتشکر

  4. مهمان

    مهاجرانی

    سلام
    ممنون از مطالب خوبتون
    در ارتباط میکرو با متلب آیا نوشتن دستور خوندن در متلب کافیه؟
    یا باید اول دستور sprint رو در میکرو بنویسیم بعد با دستوری در متلب اون رو بخونیم

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام – دقیقا متوجه منظورتون نشدم ( میکرو باید از دستور نوشتن استفاده کنه و متلب هم از دستور خوندن – این که از طبیعیات هستش )

  5. مهمان

    سینا

    سلام خسته نباشید
    من از طریق پایه دریافت usart یک رشته گرفتم از طریق getchar حالا میخوام اگه این رشته دریافتی برابر با ok بود یک if اجرا بشه و اگر نبود یک else if دیگه منتها نمیتونم مقدار رشته دریافتی رو بخونم(روی ال سی دی به راحتی میشه نمایش داد مشکلی نیست منتها نمیتونم روی اطلاعات این رشته کار کنم و بگم اگه مقدارش فلان شد فلان کارو بکن میشه یه راهنمایی بکیند ممنون میشم

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-خب شما تک کاراکتر تک کاراکتر دریافت میکنی و در آرایه ذخیره میکنی – بعد حالا میخوای مقایسه کنی – میخوای هر بلایی سرش بیاری بیار
      مگه میشه شما بتونی نمایش بدی اما نشه مقایسه کرد.!
      کدتونو بفرستید.(زیپ کنید)

      • مهمان

        sina

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

  6. مهمان

    بابک

    انگار باید این متنی که وقتی میزنی رو لینک باز میشه رو کپی کنم توی یه فایل از مدل سی وبعد بریزمش توی پوشه پروژه ؟ mail

    • نویسنده این مطلب

      مهدی دمیرچیلو

      کاری نداره که – لینک ته مطلب حاوی یه فایل با نام uart.h هستش – که شما داخل پوشه پروژتون ذخیره میکنید و به صورت زیر فرامیخونیدش :
      #include "uart.h"
      بعد از این کار میتونید از توابعش داخل پروژتون استفاده کنید – همین. – دیگه نیاز نی کلی رجیستر و … تعریف کنی و درگیرشون بشی.

  7. مهمان

    بابک

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

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام – میزاری داخل پوشه پروژه و ازش استفاده میکنی – در اول پروژت هم کتابخونه رو include میکنی.

      • مهمان

        جوادی

        با سلام خدمت شما
        یک سری کدسریال نوشتم در کدویژن که قبلا کاملا جواب ميداد ولی الان جواب نميده موندم چکار کنم

        • نویسنده این مطلب

          مهدی دمیرچیلو

          سلام – تیکه تیکه بشین پروژه رو تست کن دیگه – من از کجا بدونم مشکل از کجاس – اول یه کد ساده چشمک زن بریز توش ببین فرکانسش درست تنظیمه یا نه – یا کد میکرو رو بخون و فیوز بیت هاشو بخون البته اگه قبل نزاشته باشی رو میکرو – ببین تنظیماتش با تنظبیمات پروژت یکی هستش یا نه – بعد ببین سیمی قطعی نداره – تغذیه مدار – درایور مبدل – baud rate صحیح و…….

  8. مهمان

    beheshti

    سلام
    سوال امشب که تا پنج شنبه وقت دارین با ترکیب مثالهای انجام شده امروز و دو برنامه ای که در اختیار دارین برنامه ای بنویسید که یک عدد 5 رقمی ابتدا از پورت سریال به عنوان پسورد دریافت شود سپس اگر از طریق کی پد این عدد دریافت شد روی lcd کلمهwellcome نمایش داده شود و رله وصل شود فایل برنامه را از طریق سایت ارسال نمایید
    من برنامه این رو تقریبا نوشتم آخرش رو موندم اگه میشه یک کم کمک کنید ممنون
    چجوری میشه کدی رو که از سریال دریافت میشه رو به عنوان کد رمز قرارداد

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام –

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

      اینو حداقل نمینوشتی – جای دیگه خواستی سوالو مطرح کنی – اینو حذف کن. pardon

      من برنامه این رو تقریبا نوشتم آخرش رو موندم

      ناگفته نماند که ما خودمون قبلا دانشجو بودیم! blush laugh

      در شروع کار اینجور پروژه ها یکم اضیت میکنه، راه حلش اینه که پروژه رو تیکه تیکه کرد :
      پروژه اول : شما ارتباط سریال رو راه بندازید – که یه عدد 5 رقمی بگیره – و در آرایه A ذخیره کنه.
      پروژه دوم : به کد پیشفرض مثلا 12345 که دخل آرایه B تعریف شده، تعریف کنید و اگه کاربر اینو وارد کرد رو LCD بنویسه wellcome.
      پروژه سوم : این رو رو ترکیب کنید ( آرایه A و B رو یکی کنید ) – کد 5 رقمی رو از سریال که گرفتید و داخل آرایه AB میریزید ( حالا اومدیم کاربر از سمت سریال کدی وارد نکرد – اشکالی نداره – میکرو قبلا یه کد پیشفرض 1234 تعریف کرده که داخل آرایه AB قرار داره ) ، حالا کاربر به کمک کیپد یه کد 5 رقمی وارد میکنه، شما دریافتش که کردی ( داخل آرایه مثلا BUFFER میریزیش)، میای مقدار آرایه AB رو با آرایه BUFFER مقایسه میکنی ( مقایسه 2 تا آرایه رو اگه بلد نیستی- تو نت سرچ کن – خونه به خونه باید با هم برابر باشند ) اگه این دو برابر بودند که کلمه مد نظر رو روی LCD نمایش میدی وگرنه مینویسی پسورد اشتباه هستش.

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

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

      • مهمان

        beheshti

        سلام خیلی ممنون ولی من دانشجو نیستم من کلا15 سالمه اینم به عنوان مشق بهمون دادن.
        پروژه هارو به صورت جداگانه قبلا انجام دادم اما این ترکیبیه یکم پیچیده شده من خودمبه ذهنم رسید که 5 تا عددی که از سریال دریافت میکنه به صورت جداگانه درون یک متغیر بریزه اینکار رو کردم ولی درست جواب نگرفتم
        interrupt [USART_RXC] void usart_rx_isr(void)
        {
        char status,data;
        status=UCSRA;
        data=UDR;
        if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
        {
        rx_buffer[rx_wr_index++]=data;
        #if RX_BUFFER_SIZE == 256
        // special case for receiver buffer size=256
        if (++rx_counter == 0) rx_buffer_overflow=1;
        #else
        if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
        if (++rx_counter == RX_BUFFER_SIZE)
        {
        rx_counter=0;
        rx_buffer_overflow=1;
        }
        #endif
        }

        lcd_putchar(data);
        data = password;
        char password[5];
        {
        password[0]=a;
        password[1]=b;
        password[2]=c;
        password[3]=d;
        password[4]=e;

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

        heart

        • نویسنده این مطلب

          مهدی دمیرچیلو

          سوالتون رو در انجمن eca و مطرح کنید و کد کاملتون رو هم پیوست کنید دوستان راهنمایی کنند.

  9. مهمان

    مهاجرانی

    سلام
    موقع ارتباط سریال بین میکرو و کامپیوتر به جای متن نوشته شده داخل میکرو یه سری حروف اشتباه روی محیط ترمینال نشون میده. به نظر شما ایرادش چی میتوه باشه؟

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام — باودریت ( نرخ انتقال داده / BaudRate / BR ) فرستنده و گیرنده برابر نیست یا فرکانس فرستنده و گیرنده برابر نیست

      • مهمان

        مهاجرانی

        تشکر از پاسختون. ولی جواب نداد متاسفانه. به نظر شما ایراد از خود پورت usb به ttl نیست؟ ماژولش از نوع ch340 هستش مخصوص ویندوز 10.

        • نویسنده این مطلب

          مهدی دمیرچیلو

          خب همون – اکثرا با این برد با این آیسی 340 مشکل دارن سر نصب نشدن درایورش – اولین برد آردوینو خودم از همین مدل بود و کار نکرد – از اون موقع دیگه از این مدل نخریدم – تو نت بگردید باید در این باره بحث شده باشه – من نمیدونم.

  10. مهمان

    راحیل

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

    اگه بد سوال می پرسم شرمنده blush

    • نویسنده این مطلب

      مهدی دمیرچیلو

      الان دنبال یه پروتکول مناسب هستی یا میخوای پروتکول طراحی کنی؟
      مورد اول : uart – spi – i2c – usb – و… اینا حالت با سیم هستند – بیسیم ها : Bluetooth – wifi و…
      مورد دوم : کار من و شما نی hi

  11. مهمان

    راحیل

    خییییییلی خوب بود
    وقتی منه صفر کیلومتر انقد فهمیدم ینی خییییییلی کارتون درسته heart
    فقط یکی بهم گفته برای ارتباط دو میکرو خودت یه پروتکل نظر بده که دیتا رو هم بتونیم در اون میکرو ببینیم من که نمی فهمم چی می گه laugh ولی تاکید داره هیچ اطلاعات خاصی نمی خواد و مثل یه ایده هست باید بدی
    من اینارو الان نیم بند تازه فهمیدم چی به چیه
    البته به جز کتابخونه که نفهمیدم اون چیکار می کنه blush بیسواد تر از منم داریییییییییم

    • نویسنده این مطلب

      مهدی دمیرچیلو

      دیتا رو در اون میکرو هم بتونیم ببینیم؟ یعنی چی؟
      نفهمیدم چی میگی

  12. مهمان

    رضا

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

    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-درسته – کدشو کپی کن و داخل فایل txt با نام uart.h کپی کن.

  13. مهمان

    احمد رضا

    سلام
    برنامه کد یه خطا میده که هر کاری میکنم رفع نمیشه?
    declaration syntax error
    مشکل نوشتاری نداره

  14. مهمان

    شروین

    با سلام ممنون از مطلب بسیار عالیتون
    من میخواهم با استفاده از avr یک فرستنده ir درست کنم که led رو بر روی پورت tx خاموش و روشن کنم و اطلاعات از این طریق منتقل بشن ولی گیرنده من در فرکانس ۳۸khz کار میکنه میخواستم بدونم همین اطلاعاتی که بصورت ۰ و ۱ از پایه tx بیرون میاد رو چجوری باید مدیریت کنم تا با فرکانس گیرنده هماهنگ بشه و بتونم از طریق گیرنده نور فرا بنفش رو دریافت کنم؟
    گیرنده ir من TSOP1738 هستش
    اگر تنها یک راهنمایی فرمایید که از چه طریق میتونم این عمل رو کنترل کنم ممنون میشم لازم به توضیح نیست خودم سرچ میکنم.
    با تشکر

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      والا قبلا یکم با این ir ها کار کردم – اونم خروجی 0 و 1 ازش میگرفتم تا جایی که یادمه – الان اینی که میگید رو روال کار و دیتا دادن و گرفتن ازش نمیدونم دقیقا به چه صورته.
      الان میخواین با سریال بهش دیتا بدین؟ فرکانس سریال رو مگه میشه رو 38khZ تنظیم کرد؟
      والا فک کنم این سنسور شما – براش کتابخونه توی نت باشه – میتونی ازز اونا استفاده کنی –
      اینو سرچ کن – تو سایتای خارجی مطالب خوبی پیدا میکنی ( البته اگه قبلش تو نت فارسی چیزی پیدا نکردی ) :
      TSOP1738 AVR PROJECT

  15. مهمان

    علی

    سلام
    اگه نرخ تبادل رو بخوایم عوض کنیم،مثلا 13600،این عدد رو چجوری باید تبدیل کنیم؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام-به دیتاشیت مراجعه میکنی و تو فصل یوزارت – یه سری جدول برا این قسمت هستش که به ازای فرکانس های مختلف میکرو – و باود ریت های مختلف- مقادیر رجیستر ها رو نوشته-در ضمن تا جایی که میدونم و یادمه هر مقداری نمیتونی تعیین کنی برا نرخ داده – مثلا 1234 – تا جایی که یادمه

  16. مهمان

    amir

    سلام ممنون از مطالب خوبتون قربون دستت میشه این 3 خط کد را واسم توضیح بدی کاری که انجام میده را میدونم چیه فقط تحلیل اون & و | را نمیدونم و مقدادیر UCSRA
    1-if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
    2-if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0))
    3-این که تو دستور if عبارتی بدون شرط قرار میگیره مثلا مینویسه if(rx_counter) منظور از این چیه”

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      درباره & و | تو سایت قسمت آموزش c فک کنم گفته باشم – نگفته باشم هم تو نت بزنی هستش.

  17. مهمان

    MOrteZA

    سلام مهندس اگه می خوای میتونم کد هاتون رو با atmel studio بنویسم و براتون بفرستم یا تو نطرات قرار بدم اگه می خوان پایین همین پست جواب بدین
    یا علی

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام.ظرری نداره – آموزششو هم میتونی بدی؟

      • مهمان

        MOrteZA

        اره مشکلی نیست فقط بگو فرمت فایل(power point – word pdf) چی باشه و کجا ارسال کنم
        هر پروژت یک روز طول میکشه تا درست کنم از همین پروژه های این صفحه شروع می کنم

        • نویسنده این مطلب

          مهدی دمرچیلو

          فرمت که ورد باشه ولی آموزششو اول بدی به نظرم بهتره – فیلم باشه مثلا – حالا باز خودت هر طور صلاح میدونی.

  18. مهمان

    معین

    سلام خدمت آقای مهندس ببخشید من کل مطالبتون رو خوندم مفید بود ولی من نتونستم بفهمم چجوری تو پروژم استفاده کنم ازش . پروژه بنده اینه که یه کیبورد کامپیوتر و با استفاده از مادگی usb و با استفاده از ارتباط سریال به میکرو مگا32 وصل کنم و کد اسکی های اون کلیدی که فشار می دیم رو نمایش بده ولی نمی فهممش چجوری این کار و انجام بدم. لطفا اگه می شه یه راهنمایی بکنید

  19. مهمان

    qs

    سلام تابع itoa چیه

    • مهمان

      MOrteZA

      تبدیل int به string
      بیشتر برای نمایش روی lcd استفده میشه
      توابع sprintf و dtostrf هم هستن
      یا علی

  20. مهمان

    i

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

  21. مهمان

    i

    کد های هگز ریجیستر های یوزارت خیلی معلوم نیست چی به چی هست

    • نویسنده این مطلب

      مهدی دمرچیلو

      آها – با فرمت مقدار دهی کدهای هگز آشنایی داری؟ اگه نداری که برو مطالعه کن – اگه داری خب پس میدونی هر بیت مقدارش چقدر میشه – خب اون ریجستر رو برو بخون ببین کار هر بیتش چیه و چرا 0 و 1 اش کردم من.

  22. مهمان

    i

    سلام میشه کد های هگزش رو برام توضیح بدید چون درست متوجه نمیشم

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام-کدوم خط پروژه رو مشکل دارید؟
      اگه کد .hex منظورتونه که اون زبون ماشین هستش و من بلد نیستم.

  23. مهمان

    رضا

    سلام
    وقت بخیر
    برای یک پروژه ای نیاز به ارتباط دو میکرو attiny13,atmega8 داریم. برای اینکه پایه های تاینی ۱۳ لازم داریم نیاز به پروتکلس داریم که حداقل تعداد پایه را اشغال کند که به پروتکل های i2c ,1wire رسیدیم که تاینی ۱۳ از پروتکل معروف twi پشتیبانی نمی کنه(دیتا شیت) پیشنهاد شما برای ارتباط این دو میکرو چی هست و اگر فایلی برای این دو پروتوکول دارید ممنون میشم راهنمایی ام کنید. تشکر

  24. مهمان

    محمد بهرامی

    سلام خدمت دوستان عزیز و خصوصا اقا مهدی که بدون هیچ چشم داشتی این اموزش ها رو میزارن
    ببهشید یسوال من میخام ماژول NEO6m رو راه اندازی کنم با سریال اماخب نمیدونم چطوری داده ها رو تجزیه کنم و همچنین نیاز به ی عملیات ریاضی داره داده ها به صورت زیره
    http://s8.picofile.com/file/8308534018/photo_2017_10_08_16_33_07.jpg
    که من به اون بخش $GPGLL نیاز دارم لطفا راهنمایی کنید به زبان سی
    ممنون pardon

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      بگرد براش یه کتابخونه گیر بیار به نظرم اگه کدنویسیت ضعیفه و وقتت کمه.
      والا میخونی میریزی تو یه آرایه – هر بار دریافت داده
      بعد یه تابع تعریف میکنی که بگردی مثلا اول G رو پیدا کنه – بعد اگه پیدا کرد میای میبینی که حرف بعدیش هم P هستش اگه بود ….

  25. مهمان

    Ali

    سلام جناب میبخشید من اتمل استودیو کار میکنم میخواتسم بدونم این کد هایی که نوشتید خیلی تو اتمل استودیو فرق داره خیلی برام مهمه لطفا کمک کنید help

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام-نه زیاد

  26. مهمان

    محمد حسین

    سلام.
    تشکر از مطالب خوبتون.
    لظفا مطالب مربوط به پروژه سنسور اثر انگشت سری R30X رو قرار بدهید.
    تشکر فراوان…

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      دارم مینویسم

      • مهمان

        عزیز

        سلام
        آقا مهدی این ماژول اثر انگشت R30x راه نیوفتاد؟

        • نویسنده این مطلب

          مهدی دمرچیلو

          سلام
          یه ماژول اثر انگشت راه انداختم گزاشتم تو سایت – نمیدونم همون مدلی هستش که شما میگید یا نه – اسمش خاطرم نیست

  27. مهمان

    fatemeh

    وقت بخیر … من برای ارتباط میکرو و ماژول تشخیص اثر انگشت باید از uart استفاده کنم . در تست میکرو متوجه شدم که میکرو اطلاعات رو اشتباه می فرسته مثلا به جای EF ،
    F8 رو ارسال می کنه . من رو برد برد بستم . ممکنه مشکل از نویز باشه ؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      کدوم ماژول اثر انگشت؟ من دارم با R30X کار میکنم – چند روز دیگه مطلبش رو میزارم – والا نمیدونم کجا سوتی دادین – بله نویز مخصوصا امواج اینترنت ۴g تاثیر دارن.

  28. مهمان

    محمدقاسم

    سلام سایتتون از هر نظر عالیه
    یه راهنمایی بدید دیتاشیت tsl3301 یک سنسور نوری که ۱۰۲تا پیکسل داره و سر خودش مبدل انالوگ دیجیتالداره یعنی شدت نور روی هر پیکسل از ۰ تا ۲۵۵ هشت بیتی درمیاره و سریالی میفرسته توسط پین sdout خوب چه طوری هر بایت ها رو بریزم تو یک متغیر intens [102]رو چطوری دستور . کلا گیج شدم

  29. مهمان

    saeid

    سلام داداش واقعا دمت گرم با این هدر فایلت منو از سردرگمی نجات دادی (تو خوندن دیتا از ماژول rfid مشکل داشتم) فقط خواستم ازت تشکر کنم مرسی give_rose

  30. مهمان

    رضا

    سلام. عذر می خوام چطور می تونیم تعداد بیت بیشتری از میکرو به pc ارسال کنیم؟
    من با یه مبدل ۲۴ بیتی ADCکار می کنم که خروجی ماژول رو به میکرو می دم و بعدش باید از میکرو داده رو به pc بفرستم. برای ارسال این ۲۴ بیت چطور باید عمل کرد؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام – خب در ۴ بسته ۸ بیتی دیتا رو ارسال میکنی دیگه – حالا برا اطمینان بیشتر ۶ تا بسته ارسال میکنی یه بسته شروع بعد ۴ تا دیتا و بعد ۱ دونه پایان تا تو برنامه سمت کامپیتور برا بحث تشخیص دیتا به مشکل بر نخوری

  31. مهمان

    amin6

    سلام . از اتمگا۳۲ استفاده میکنم . میکروی من چندتا کارو همزمان انجام میده تو این حین یه رشته از طریق یوزارت دریافت میشه منتها تابع get برنامه رو تو خودش تا زمانی که رشترو کامل دریافت کنه نگه میداره واسه همین تو بقیه کارای میکروم تاثیر میزاره و میخواستم بدونم راهی هست که بتونم بدون وقفه دریافت بزنم ؟
    دوم اینکه اگه مجبور شدم با وقفه بزنم کدویزارد دوتا تابع خودش اضافه میکنه به نام isr و getchar نمیدونم از اینا چطور باید استفاده کرد جوری که فقط وقتی کامل رشته دریافت شد به من وقفه بده و ممنون میشم اگه راهنمایی کنید یا مطلب مفیدی رو تو این موضوع معرفی کنید تا بخونم .

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام-از وقفه استفاده کن.

      • مهمان

        amin6

        اون دوتا تابعی که کدویزارد برای وقفه اضافه میکنرو چجوری باید استفاده کرد ؟ یعنی هروقت که کاراکتری دریافت بشه . نمیشه یه جوری استفاده کرد که وقتی یه رشته معلوم دریافت کرد وقفه بده . من اول میخوام یه دستور show دریافت کنم بعدش یه مقدار float دریافت کنم و اون مقدار رو نمایش بدم تو lcd . چجوری باید تو حلقه واسه این کار با استفاده از تابع وقفه کد بزنم ؟ ممنون میشم جواب کاملتر بدید .

        • نویسنده این مطلب

          مهدی دمرچیلو

          تو نت بسرچ “وقفه ارتباط سریال میکرو” یا “AVR UART receive interrupt” رو بسرچ که بهتره به جای Avr اسم میکروتو بزاری –

  32. مهمان

    رضا

    سلام من یه سوال داشتم من بجای استفاده از (putchar(A از UDR=0x41 استفاده کردم ولی سرعت ارسال خیلی پایین اومد به نظر شما چرا این طوری شد؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      کتابخونه ته مطلب رو دانلود کن و تابع مربوطه رو بررسی کن – این تابع رو دیتاشیت میکرو پیشنهاد داده تا جاییی که در خاطرمه.

  33. مهمان

    علیرضا آهنی

    سلام.
    لینک دانلود خراب است.

    • نویسنده این مطلب

      مهدی دمرچیلو

      سالمه

      • مهمان

        علیرضا آهنی

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

        • نویسنده این مطلب

          مهدی دمرچیلو

          کده – یه فایل به با نام uart.h ایجاد کن و کدو توش کپی کن.

        • مهمان

          علیرضا آهنی

          تو کجا؟

  34. مهمان

    علیرضا آهنی

    سلام!
    اسم این گتابخونه چیه؟
    چون تو کدیزن خاستم کار کنم چه چیزی را معرفی کنم اول پروزه؟

  35. مهمان

    مصطفی

    سلام خسته نباشید!!
    اخر مطلب این جمله رو گفتی که برای عملی بستن ی نکته کوچولو داره . خواستم بدونم اون چیه؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام – متاسفانه خاطرم نیس – شما مدارو ببندید – مشکلی رخ داد من در خدمتم.

  36. مهمان

    meysam

    با سلام
    ببخشید توی میکروهای که دوتا usart دارن مثل مگا ۶۴ به بالا چطور میشه توی بیسکام این را پیاده کرد همه فعال سازی ها با تابع است ؟؟؟؟؟؟؟؟؟!!! no no

    • نویسنده این مطلب

      مهدی دمرچیلو

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

  37. مهمان

    فرزانه

    سلام در پروژه دوم اگه بخوام به جای صفر و یک on ,off نشون بده باید چیکار کرد؟؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      از تابع PUTS و یه IF باید استفاده کنی – مطلب آموزش LCD کاراکتری و توضیح توابعش تو سایت هستش – تو نت هم بزنی آموزشش میاد

  38. مهمان

    محمد

    اقا سلام
    میگم توی پروژه اول نباید getchar و putchar هردو برای پورت d باشند؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      پروژه درسته – کجاشو مشکل داری؟ تو این پروژه مقدار پین بی رو اومدم ارسال کردم.. و تو اون یکی میکرو تو اون led ها نشونش دادم.

  39. مهمان

    IMAN

    بسیار متشکرم از سایت خوبتون

  40. مهمان

    IMAN

    سلام و وقت بخیر مهندس …یک سوالی برام پیش اومده جناب مهندس من پروژه شماره ۳ را با مگا۸ در پروتوس راه انداختم ولی جالب اینجاست من در پروتوس جواب میگیرم و در عمل انگاری مدار برای خودش کار میکند…راه حل شما چیه ؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      احتمالا یا اتصالاتت اشتباهه – یا فرکانس – یکی از این دو – در ضمن این پروژه برا مگا۱۶و۳۲ هستش – رجیستر های مگا ۸ مممکنه فرق داشته باشن – دیتاشیتشون رو بررسی کن ببین رجیستر ها فرق دارن یا نه

  41. مهمان

    علیرضا

    معرکه بود…..

  42. مهمان

    بهرام دیبا

    ای بابا این پروژه ها که قابل دانلود نیست.

    • نویسنده این مطلب

      مهدی دمرچیلو

      بررسی کردم مشکلی نبود – بازم اگه دانلود نشد بگو تا یه جای دیگه اپلود کنم برات

  43. مهمان

    علیرضا

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

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تصحیح شد

  44. مهمان

    علی

    با سلام من اگه بخوام دیتا هایی که از ADC میگیرم رو برای کامپیوتر ارسال کنم چه جوری برنامه اش رو بنویسم که بفرسته اموزش ها رو گامل خوندم ارتباط با گامپیوتر ها رو هم دیدم ولی نفهمیدم پی شد؟؟ مرسی اگه برنامه اش رو بنویسید

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      داچی من بخوام برا همه دوستان پروژه انجام بدم که دیگه شبا هم باید بیدار بمونم و پروژه انجام بدم که laugh
      شما شروع کن – به مشکل برخوردی ما در حد توانمون در خدمتیم.

  45. مهمان

    amingoodarzi

    سلااااام و خسته نباشید خیلی زیاد.اول از همه خییییییلی تشکرر کنم بابت سایتت و مطالبش که بی نظیره.واقعا خسته نباشید داره.شرمنده یه مشکلی برام پیش اومده اگرلطفا جواب بدی ممنون میشم.
    من میخوام همین روش رو برای به کار انداختن موتور دی سی به کار ببرم ولی مشکلی که توی شبیه سازی با پروتدوس دارم اینه که روی ال ای دی مثل مثال بدون نقص انجام میشه و با روشن و خاموش کردن کلید ها ال ای دی روشن و خاموش میشه.ولی روی موتور دی سی با زدن کلید موتور روشن میشه بدون مشکل ولی خاموش نمیشه با خاموش کردن کلید و روشن میمونه!!لطفا اگه کمکم کنی ممنون میشم
    با تششششششکر

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      پروژت رو زیپ کن بفرست ببینم.

  46. مهمان

    جاوید

    سلام.من که گیج شدم.داداش مگه نمیگیم putchar و getchar برای ارسال و دریافت تک کاراکتر هس؟خب پس چطور اطلاعات کل پورت رو میشه فرستاد؟چرا از دستور gets استفاده نمیکنیم؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      بله putchar و getchar برا تک کاراکتر هستش و gets و puts برای رشته(چند کاراکتر)
      خب یه پورت 8 تا پایه داره – حداقل مقدار همچین پورتی میشه 0 و حداکثر میشه 255
      حالا یه کاراکتر از نوع unsigned char شامل کاراکتر های 0 تا 255 هستش – و من دیتای کل پورت رو به صورت یه تک کاراکتر میفرستم و بعد تو قسمت دریافت کننده میام دیتا رو تجزیه میکنم.

  47. مهمان

    وحید

    سلام خسته نباشی
    به نظر شما واسه فرستنده و گیرنده بی سیم چه مدل ماژول بخرم جواب بدن؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      nrf24l01+

  48. مهمان

    وحید

    سلام خسته نباشی
    یک سوال داشتم در مورد پروژه یک
    برای فرستنده و گیرنده rxd و txdبا سیم وصل کنم بدون تداخل کار میکنه و لی با ماژول rx706وصل میکنم قاطی میکنه یعنی خودش لامپ خاموش و روشن میشه!!!
    مشکل از کجاست

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      با این ماژول کار نکردم – یا خرابه – یا درست ازش استفاده نمیکنی(چون بعضی ماژول ها نیاز هستش که ریجسترش هاش رو کنترل کنی برا کارای مختلف که نیاز به کتابخونه برا راه اندازیش هستش و…) – یا تو اون فرکانسی که کار میکنی یه نفر داره کار میکنه و…

  49. مهمان

    وحید

    سلام ببخشید یک سوال داشتم
    من پروژه یک بستم هنوز کیلد فشار ندادم led خودش خاموش و روشن میکنه یعنی قاطی میکنه مشکل از کجاست؟

    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      مطلب جلسه 10 یا 11 آموزش جامع avr رو بخون – دقیقا نمیدونم کدوم مطلب بود – موضوعش مقاومت پول آپ بود فک کنم.
      مشکل از مدار کلید شما هستش.

    • مهمان

      پارسی

      سلام
      بعداز اتصال دیپ سویچ به پورت بی طرف دیگر سویچها را به گراند وصل کنید.
      برای فعال کردن مقاومت های پول آپ بصورت نرم افزاری نیز سطر زیر را به برنامه اضاف کنید.
      PORTB=0XFF;
      بدیهی است در این حالت دیگر نیازی به مقاومتهای پول داون نمی باشد.
      موفق باشید

  50. مهمان

    ریحانه

    پروژه های داخل سایت تاجایی که من دیدم ارتباط میکرو با میکرو هست .
    اگه pc با میکرو دارین میشه لینک بذارین لطفا .
    متشکرم

1 2 3