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

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

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

به نام خدا

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

موضوع این جلسه : تبادل اطلاعات به صورت سریال و موازی

این جلسه و احتمالا دو سه جلسه بعد مربوط به  یه موضوع جالب و شیرین! با عنوان انتقال اطلاعات هستش ، حالا تبادل اطلاعات بین دو (یا چند) میکروکنترلر با هم یا ارتباط میکروکنترلر با PC

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

آموزش جامع avr

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

انواع تبادل اطلاعات

ارسال و دریافت اطلاعات به دو روش کلی انجام می شود:
۱) موازی  ( parallel)
۲) سری (serial)
در روش موازی اطلاعات n بیتی در n خط (پایه) انتقال داده می شود اما در روش سریال اطلاعات می تواند در یک خط یا دو خط ارسال گردد.
پس می توان نتیجه گرفت تبادل اطلاعات به صورت موازی با سرعت بیشتری نسبت به حالت سریال صورت می گیرد اما در فواصل طولانی تر تبادل اطلاعات به صورت موازی هزینه بر است و از طرفی نویز پذیری را بالا می برد و در ضمن یک رشته سیم موازی کنار هم در فواصل طولانی باعث ایجاد یک خازن مجازی شده و مقاومت خود سیم ها نیز بر کیفیت دیتا اثر خواهد داشت و البته پارامترهای دیگری نیز وجود دارد که از ضعف های تبادل اطلاعات به صورت موازی است اما روش سریال انتخاب مناسبی در صرفه جویی در تکنولوژی ساخت تراشه ها و کم کردن خطوط انتقال است.

تبادل (اطلاعات به صورت) موازی :

من خودم تا الان از این روش استفاده نکردم و علتش هم معلومه. pardon
ولی همون طور که در بالا بیان شد (  n بیتی در خط (پایه)   )   میشه نتیجه گرفت که تو این روش مثلا برا تبادل اطلاعات دو میکروکنترلر avr با هم همانند عکس زیر این دو رو به هم وصل میکنیم
و میکروکنترلر ۱ (فرستنده) که مثلا قرار است اطلاعات بفرستد ، PORTC (الزامی ندارد که حتما PORTC باشد ) آن را به صورت خروجی تعریف میکنیم.( چون قرار است اطلاعات ارسال کند.)
و میکروکنترلر ۲ (گیرنده) که مثلا قرار است اطلاعات بگیرد ، PORTC (الزامی ندارد که حتما PORTC باشد ) آن را به صورت ورودی تعریف میکنیم.( چون قرار است اطلاعات دریافت کند.)
حالا اگه مثلا  در میکروکنترلر ۱  ، PORTC.0=1 شود آنگاه در میکروکنترلر ۲ هم  PORTC.0=1 میشود.
میکروکنترلر avr

انواع تبادل سریال

از آنجایی که ارتباط سریال مزایای خوبی دارد انواع مختلفی از پروتکل های سریال ارائه شده است ، لذا می توان به صورت کلی خود تبادل سریال را نیز به دو قسمت تقسیم کرد:
۱) ارسال و دریافت اطلاعات سریال به صورت سنکرون( USRT )
در این روش دیتای مورد نظر بر روی یک خط همراه با یک خط کلاک همزمان کننده ارسال می شود و گیرنده نیز می تواند دیتا را بر روی یک خط توسط کلاک همزمان کننده که از طرف فرستنده ارسال می شود ، دریافت نماید. به طور مثال اطلاعاتی که Keyboard یا Mouse کامپیوتر به خروجی ارسال می کنند به همین روش می باشد.
میکرو کنترلرهای AVR در روش سنکرون می توانند به صورت چند پردازنده ای به شکل Master و Slave  (منظور همون فرستنده گیرنده هستش) کار نمایند.
این ویژگی فقط در بعضی از میکرو کنترلر های AVR حمایت شده است که البته ATmega16 قابلیت تبادل سریال در مد سنکرون را دارد.
۲)  ارسال و دریافت اطلاعات سریال به صورت آسنکرون(  UART )
در این روش دیتای مورد نظر بر روی یک خط ارسال ( TXD ) یا یک خط دریافت( RXD ) منتقل می شود و به همراه دیتا کلاکی ارسال نمی گردد بنابراین به اصطلاح می گوییم فرستنده و گیرنده غیر همزمان عمل می کنند.
پس در چنین روشی باید دیتای مورد نظر با قالب بندی خاصی به صورت بیت به بیت با فواصل زمانی تعریف شده برای فرستنده و گیرنده منتقل شود ، که به این فواصل زمانی در این نوع ارتباط نرخ انتقال داده یا Baud rate گفته می شود.
از کاربردهای مهم این روش می توان به تبادل اطلاعات با کامپیوتر و میکروکنترلر های دیگر و یا تراشه های دیگر اشاره نمود.
به طور مثال می توان ارتباط با ماژول GSM ، ماژول GPS ، ماژول فرستده و گیرنده RF و… را از کاربردهای مهم این روش برشمرد.
۳) ارتباط جانبی سریال ( SPI )
۴) ارتباط سریال دو سیمه ( TWI )

دو روش بالا رو من تا حالا باهاشون کار نکردم و .... mosking
"دو روش بالا+ روش سنکرون" رو هم ما زیاد باهاش کاری نداریم و مطالب آینده مربوط به "ارسال و دریافت اطلاعات سریال به صورت آسنکرون" هستش.
البته یادشون بگیرید بد نیست ولی چون من فعلا قصد ندارم در پروژه هام از "این دو روش + روش سنکرون" استفاده کنم.
لذا توضیحشون هم نمیدم.(البته اگه خواستید میتونید به کتاب " میکروکنترلر های AVR ، نوشته جابر الوندی" مراجعه کنید.)

امیدوارد این آموزش avr مفید واقع شده باشه براتون.

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

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

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

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

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

  1. مهمان

    امبییر

    سلام ، نوشته بعدی رو چطور پیدا کنم؟

  2. مهمان

    karim

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

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

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

      سلام / بایدی وجود نداره ولی خب هر چی بیشتر زبون برنامه نویسیتو قوی تر کنی، تو کدنویسی کارت راحت تر، در زمان انجام پروژه هات هم صرفه جویی میکنی!
      میتونی با 1 ساعت مطالعه cpp بگی من کدنویس آردوینو به زبان cpp هستم! – میتونی با یکسال مطالعه…

  3. مهمان

    مهدی

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

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

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

      تا جایی که یادمه این بود – بعضی میکرو ها واحد usart دارند – یعنی واحد سنکرون و آسنکرون سریال دارن – که تشکیل شده از UART و USRT هستش – بخش UART آموزشش تو همه جا هستش و فراگیر هستش – بخش USRT مربوطه به ارتباط چندتا دستگاه با هم از طریق سریال – که تو ارات فک کنم یه آموزش براش گزاشته باشم – ندیدم تو نت زیاد ازش استفاده بشه و یا بهش پرداخته بشه.

  4. مهمان

    ابراهیم

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

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

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

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

      • مهمان

        ابراهیم

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

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

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

          سلام / بیسیک کار نمیکنم / بیسیک رو الله رحمت السی!

  5. مهمان

    تازه کار

    ترجیحا میکرو atmega16 ;D

  6. مهمان

    تازه کار

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

  7. مهمان

    مهدی

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

  8. مهمان

    Hassan

    سلام داداش فقط یه چیز میتونم بگم
    دمممممممممتتت گرم
    یه سوال:چطوری میشه از یه میکرو مثلا مگا ۸یا۱۶ دوتا txd و rxd داشته باشیم؟؟ مثلا یکی برای RFID یکی هم برای بلوتوث یا..،؟!

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

      مهدی دمرچیلو

      سلام
      1- RX رو برا RIFD استفاده کنی و TX رو برا بلوتوث.
      2- حالا شاید بخوای از بلوتوث دیتا هم بگیری – در این حالت بایت ارتباط سریال مجازی ایجاد کنی – بگرد ببین کتابخونش رو پیدا میکنی یا نه – یاد گرفتی بیا به ما هم یاد بده.
      3- از میکرویی استفاده میکنی که 2 تا ارتباط سریال داشته باشه

  9. مهمان

    محمد

    taaaaaaaaaaaaaaaaaaaaaaaanx

  10. مهمان

    مهدی

    میشه در مورد راه اندازی قطعه hc05 برای ارتباط بین دو میکرو بدون سیم توضیح بدید؟؟؟

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

      مهدی دمرچیلو

      2 تا hc05 ندارم فقط 1 دونه دارم – پولمو رو هم دارم جمع میکنم تا بدم گوشی بخرم pardon

  11. مهمان

    محمد

    بیسار ممنون.آموزش هاتون عالیه.

  12. مهمان

    مهدی

    سلام و تشکر از سایت خیلی خوبت و ممنون از شیوه بیان عالیت.
    میتونی در مورد “نرخ انتقال داده یا Baud rate ” بیشتر توضیح بدی؟
    کاربردشو کاملا فهمیدم اما مثلا برا یه ic یا از اون مهمتر (برا من)یه ماژول gsm/gps)sim908) باید چه طور تنظیمش کنم
    ممنون

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

      مهدی دمرچیلو

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

  13. مهمان

    ا

    جسارتا میشه بپرسم کدوم دانشگاه درس خوندین?

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

      مهدی دمرچیلو

      یا حضرت عباس laugh
      دانشگوم هنوز تموم نشده
      تو دانشگاه خاتم الانبیا ص خوزستان دارم درس نمیخونم crazy …چرا دروغ بگم….دانشجو هستم ولی درس نمیخونم و همش پای لبتابم laugh

  14. مهمان

    ا

    سلام
    میشه یه آموزش یرای کار با sim900 بذارید

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

      مهدی دمرچیلو

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

  15. مهمان

    مهدی کریمی

    سلام منم در زمینه فیبر نوری در حال بررسی پروژه هستم ممنون میشم اگ ایشون ک در این زمینه کار میکنند با من هم رد و بدل اطلاعات کنند ممنون میشم
    ایمیل من motahari_19@yahoo.com
    اقای مهدی دمرچیلو لطفا ایمیل منو برای کسی ک در این مورد تحقیق میکنه بفرستید و اطلاع بدید ممنون میشم…

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

      مهدی دمرچیلو

      سلام، بهش ایمیل دادم
      در صورتی که مایل باشه بهتون ایمیل میده

  16. مهمان

    کیومرث

    واقعا ممنونم به خاطر مظالب بسیار مفید.

  17. مهمان

    maryam

    سلام
    بابت مطالب خوبتون سپاسگزارم..
    واقعا عالی بودن
    ازتون یه راهنمایی میخواستم:
    پروژه ی من راجع به ارسال و دریافت اطلاعات با فیبر نوری هستش
    البته من هنوز درس میکرو برنداشتم..
    از استاد پرسیدم گفتن که اول نحوه ی ارسال اطلاعات به سورت سری رو یاد بگیرم و بعدش ماژول فیبر نوری رو هم میاریم رو برد
    و من در حال حاضر از هرجا هر مطلبی در این مورد پیدا می کنم میخونم ولی واقعا کلافه ام ..
    کلی سوال دارم
    نمیدونم برای فیبر نوری باید ارسال اطلاعات سنکرون باشه یا آسنکرون
    یا اینکه atmega 16 خوبه یا atmega32
    اصلا تفاوت اینها غیر از حافظه در چیه؟!
    ممنون میشم اگر راهنماییم کنید

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

      مهدی دمرچیلو

      سلام
      والا من در این زمینه اطلاعاتی ندارم
      اصلا نمیدونم فیبر نوری چی هست laugh
      به نظرم بهتره تو انحمن ECA سوالتون رو مطرح کنید

      • مهمان

        یاسر

        سلام برا کار با فیبر نوری از media convertor استفاده کنید راحته ورودی اترنت خروجی نوری و بلعکس

  18. مهمان

    محمد

    سلام داداش اگه امکانش هست یه توضیح درباره رشته میدی
    این پنجشنبه امتحان دارم جلسه هاشو کامل نرفتم.

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

      مهدی دمرچیلو

      سلام
      والا توشیح رشته تو کتاب های آموزش برنامه نویسی c++ خوب توضیح داده شده

  19. مهمان

    مهدی

    گفتید نظر بدم منم دارم میدم …….اون بالای مطالب این جلسه نوشتید (جلسه ی 3 ) در صورتی که این جلسه 4 هست

  20. مهمان

    خسرو

    سلام.ماژول فرستنده و گیرنده433ghzدارم پایه dataدرفرستنده و گیرنده رانمیتونم روی رادیو و برد هلیکوپتر نصب کنم هلیگوپتر2کانال مادون قرمزاست اگرراهنمایی کنی ممنونت میشم روی بردهای هلیکوپترهیچ چیز نوشته نشده که جای rxd وtxdراپیداکنم

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

      مهدی دمرچیلو

      سلام….اسم وسیلتون رو تو گوگل سرچ کنید ترتیب پایه هاش یا یه اطلاعتی دربارش براتون میاد………….

  21. مهمان

    morteza

    سلام
    smile smile smile smile smile smile smile smile smile خیلی عالی بود.
    خوندن adc رو میتونی یه توضیح بدی.
    smile

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

      مهدی دمرچیلو

      سلام
      مگه مطلبش نیست تو سایت؟

  22. مهمان

    محمد

    راستی یه چیزی شما روتین سرویس وقفه سریال رو اینطوری نوشتید:
    interrupt[USART_RXC] void USART_RX_Complete(void)
    {
    //dastorat
    }
    ولی من اینطور نوشتم:
    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    //dastorat
    }
    میشه توضیح بدید، تفاوت کلی این ها از چیه؟

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

      مهدی دمرچیلو

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

  23. مهمان

    محمد

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

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

      مهدی دمرچیلو

      معمولا فک کنم ماژول ها دیتایی که میفرستن یه قانون ثابتی داره…مثلا ۸ بیت هستش….همین طوری فک نکنم خردمبیلی باشه

  24. مهمان

    محمد

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

  25. مهمان

    محمد

    خوب اینطوری که نمیشه، توی همه ماژول ها و سیستم ها همه چی، بعد از ارسال یه رشته، اینتر یا همون n\ میاد.
    شما n\ را گذاشتی وسط رشته، بزار آخر رشته، اینطوری:
    puts(“-DMF313-\n”);

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

      مهدی دمرچیلو

      داش من اگه تعداد بیت دریافتی و ارسالی برابر نباشه مشکل پیش میاد…..لذا شما باید یه کاراکتر از کاراکتر های ارسالی رو کم کنی تا بشه ۸ تا کاراکتر….الان ۹ تا کاراکتر هستش

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

        مهدی دمرچیلو

        من کد زیر رو تست کردم مشکلی نبود
        puts("DMF_313n");
        میگم حالا چه پروژه ای داری میبندی؟؟؟؟؟؟
        ارتباط سریال رو برا چه پروژه ای میخوای؟؟؟؟
        پروژت چیه؟؟؟

  26. مهمان

    محمد

    خوب اینم مشکل داره.
    شما آخر دستوری که میفرستید یه n\ بزارید ببینید چطور میشه.
    یعنی اینطوری بفرستید:
    puts(“-DMF313-\n”);
    الان اینطوری تست کنید مشکل منو میفهمید.

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

      مهدی دمرچیلو

      تست میکنم خبر میدم

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

      مهدی دمرچیلو

      خو مشکلی نداره که…کدت رو باس این طور بنویسی داداش
      putchar(10);puts("0000000");
      اول میره خط بعد و بعد ۷ تا ۰ ارسال میکنه
      الان تست کردم مشکلی نداشت

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

        مهدی دمرچیلو

        این رو هم تست کردم مشکلی نداشت که…
        puts("DMFn_313");
        unknw unknw unknw unknw unknw unknw

  27. نویسنده سایت

    amir021

    سلام دوباره دادا این کتاب جابر الوندی ص 81 تا 85 در باره کتاب خانه ها صحبت کرده می تونی یکم خلاصه و قابل فهم تر و دلیل استفاده از اینا رو به وب سایتت اضافه کنی sorry

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

      مهدی دمرچیلو

      سلام
      کتاب خونه ctype رو که فعلا ولش کن
      کتابخونه stdlib : تبدیل انواع متغییر به هم//////مثلا اگه بخوای متغییر از نوع int رو تو lcd نشون بدی ابتدا باید متغییر رو به char تبدیل کنی که این کار توسط توابع این کتاب خونه انجام میشه و بعد شما میتونید متغییر فوق رو تو lcd نشون بدی(یه دلیل استفاده از کتابخونه)
      کتابخونه Math و delay: هم که معلومه چیه…
      string : این هم فعلا بیخیالش بشو…زیاد بکارت نمیاد. bcd هم همینطور
      ====================================================
      شما که میگید یه مطلب دربارش بنویسید….مثلا من جی بنویسم؟؟؟؟
      راسش نمیدونم چی درباره کتابخونه بنویسم……فک نکنم چیزی برا نوشتن باشه….
      شما دقیقا بگید من چی بنویسم تا بنویسم

  28. نویسنده سایت

    amir021

    ممنون راستی برای تولید موج (مربعی سینوسی ووو ….) باید چکار کنم برنامش چه جوری نوشته میشه
    , اگه میشه برای PWM و ADC (اندازه گیری ولتاژ ) برای مبتدیان آموزش بزارید مطالب سایت میخونم هیچی نمیفهمم
    من برنامه نویسی رو دو ماه شروع کردم به خوندم
    اگه میشه یک ترتیب به ما بگو ما بخونیم تا از این سردرگومی در بیایم dash

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

      مهدی دمرچیلو

      برا مربعی که در زیر میگم ولی برا سینوسی بحث یکم فرق داره که کاری نداریم فعلا
      ==========
      آموزش AVR گزاشتم که…اینا رو هم توضیح دادم…..
      https://dmf313.ir/category/electronics/learning-avr/training-avr/
      اینا رو خوندید؟؟؟؟
      کجاش رو متوجه نشدی.؟؟؟
      بگو تا توضیح بدم…

  29. نویسنده این مطلب

    مهدی دمرچیلو
  30. مهمان

    محمد

    سلانی دوباره استاد
    برنامه ما چی شد؟

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

      مهدی دمرچیلو

      دیشب رفتم جایی …امروز هم کلاس دارم…الان زمان استراحت بین دو کلاس هستش که استاد داده…..بعد اتمام کلاسم میام سراغش……ساعت ۳ احتمالا تموم میشه
      نوشتم میزارم همین جا

  31. نویسنده سایت

    amir021

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

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

      مهدی دمرچیلو

      سلام
      الان من چطور راهنمایی کنم آخه
      حد اقل کد های پروژه رو بفرست…zip

  32. مهمان

    محمد

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

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

      مهدی دمرچیلو

      ok
      مینویسم میزارم تو سایت..همینجا

  33. مهمان

    محمد

    ممنون از این که جواب دادید.
    اونجا هم الان نوشتم:
    http://www.eca.ir/forum2/index.php?topic=107643.0
    شما نمونه برنامه ای برای ارتباط سریال با وقفه دارید، که رشته رو دریافت کنه؟

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

      مهدی دمرچیلو

      نه…. sorry
      چقدر تنبل شدم من… shout
      حتی حوصلم نمیشه یه پروژه تست کنم و جواب دوستم رو بدم….. dash
      نمازم رو بخونم بیام ی پروژه بنویسم….فقط کامل توضیح بده که میخوام پروژش رو خودم یه بار انجام بدم(و بعد میدم بهت خودت مقایسه کن با پروژه خودت)…..

  34. مهمان

    محمد

    سلام و خسته نباشید
    من میخوام از وقفه در ارتباط سریال استفاده کنم.
    اما اینجا یه مشکلی دارم، توی تابع وقفه کد زیر رو گذاشتم که بافر رو بخونم، اما دیتاها مشکل دارن.
    for (int s=0;s<rx_wr_index;s++)str[s]=rx_buffer[s];
    میکرویی که دیتا ارسال می کنه بعد از هر ارسال یه \n میفرسته، حالا من بافر رو میخونم این \n هم اعمال میشه و توی ال سی دی یه خط میره پایین، اومدم دوباره نوشتم اگه به /0 که انتهای رشته است رسیدی دیگه چیزی تو متغییر نزار.
    این بار در دریافت اول درسته، اما در ارسال دوم T اون دیتاهایی رو که از بافر نخوندم میاره اول دریافت دوم میزاره، یعنی دریافت دومم شامل اول \n و بعدش کدی که دریافت کردم.
    ممنون میشم کمک کنید.

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

      مهدی دمرچیلو

      سلام
      چی بگم والا….تو eca مطرح کن

  35. مهمان

    fereshte

    سلام.خسته نباشید
    من میخواستم بدونم بهترین منبع واسه یادگیری avr چه کتابیه که پروژه های حل شده زیاد داشته باشه؟
    الوندی رو دارم ولی کامل نیس

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

      مهدی دمرچیلو

      سلام
      والا نمیدونم…
      تو سایت زیر کلمه “avr” رو سرچ کنید….ببینید کتابی فقط مخصوص پروژه avr چیزی پیدا میشه یا نه….احتمالا یه چند تا کتابی باشه….
      http://ketab.ir/

  36. نویسنده سایت

    amir021

    خیلی منون خیلی بدردم خورد اخه یک وبلاگ درست کردم
    هر برنامه ای که خودم توانایی درست کردنشو داشته باشم رو توش می نویسم
    همین امروز درست کردم laugh
    من در حد ابتدایی از برنامه نویسی می دونم
    می خواستم بدونم اگه جایی به مشکل بر خوردم می تونم از شما کمک بگیرم dash

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

      مهدی دمرچیلو

      آره

  37. نویسنده سایت

    amir021

    سلام خسته نباشید یک سوال داشتم
    اگه خواسته باشیم یک پایه میکرو نات کنیم باید چکار کنیم
    مثلا این جوری درسته if(PINB.0==1)PORTB.1=!;
    چه جوری باید نات کنم

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

      مهدی دمرچیلو

      سلام
      کد زیر نات پایه بی۰ رو میده به بی۰
      PORTB.0=!PORTB.0;
      ok?

  38. مهمان

    سید محمد

    کتاب جابر این مباحثو اصلا مفهومی توضیح نداده dash
    کتاب مرجع سپاسیار رو بخونید rtfm

  39. مهمان

    هادی مظفری

    داداش کلا دمت گرم امروز توکلاس avr از USART گفتن هیچی نفهمیدم .دست درد نکنه شیر فهم شدم