در اینجا قصد داریم بین میکروکنترلر ATmega8 و Arduino Uno ارتباط برقرار کنیم . ارتباط برقرار شده در اینجا از نوع UART (فرستنده گیرنده ناهمزمان جهانی) است. این ارتباط سریالی است. با این ارتباط سریال داده ها را می توان بین دو کنترلر به اشتراک گذاشت که در برنامه های مختلف سیستم جاسازی شده مورد نیاز است.
در سیستم های تعبیه شده باید دانش اولیه در مورد ارتباطات سیستمی داشته باشیم، بنابراین برای این کار این پروژه را انجام می دهیم. در این پروژه به بحث سیستم ارتباطی اولیه می پردازیم و مقداری داده را از فرستنده به گیرنده به صورت سریال ارسال می کنیم.
در این پروژه ATMEGA8 به عنوان یک فرستنده و ARDUINO UNO به عنوان یک گیرنده عمل می کند. در ارتباط سریال، داده ها را بیت به بیت ارسال می کنیم، تا زمانی که یک بایت داده به طور کامل منتقل شود. داده ها می توانند 10 بیتی باشند اما فعلاً به 8 BITS ادامه می دهیم.
اجزای مورد نیاز
سخت افزار: ATMEGA8، ARDUINO UNO، منبع تغذیه (5v)، برنامه نویس AVR-ISP، خازن 100uF (متصل از طریق منبع تغذیه)، مقاومت 1KΩ (دو قطعه)، LED، دکمه.
نرم افزار: Atmel studio 6.1، progisp یا flash magic، ARDUINO NIGHTLY.
نمودار مدار و توضیح![Arduino-ATmega-UART-Circuit_0](https://duino4projects.com/wp-content/uploads/2017/03/Arduino-ATmega-UART-Circuit_0.gif)
قبل از بحث در مورد نمودار مدار و برنامه نویسی فرستنده و گیرنده، باید در مورد ارتباط سریال بدانیم . ATMEGA در اینجا داده ها را به صورت سریال به UNO ارسال می کند همانطور که قبلاً بحث شد.
حالت های ارتباطی دیگری مانند ارتباط MASTER SLAVE ، ارتباط JTAG دارد اما برای ارتباط آسان ما RS232 را انتخاب می کنیم . در اینجا پین TXD (فرستنده) ATMEGA8 را به پین RXD (گیرنده) ARDUINO UNO متصل می کنیم.
ارتباط داده ایجاد شده به گونه ای برنامه ریزی شده است که:
- هشت بیت داده
- دو بیت استاپ
- بدون بیت بررسی برابری
- نرخ باود 9600 BPS (بیت در ثانیه)
- ارتباط ناهمزمان (بدون اشتراک ساعت بین ATMEGA8 و UNO (هر دو واحدهای ساعت متفاوتی دارند))
-
برای ایجاد UART بین Arduino Uno و ATMEGA8 باید تنظیمات را به طور دقیق برنامه ریزی کنیم. برای این کار باید پارامترهای ذکر شده در بالا را در هر دو طرف یکسان نگه داریم. در این یکی به عنوان فرستنده و دیگری به عنوان گیرنده عمل می کند. در زیر به هر یک از تنظیمات جانبی خواهیم پرداخت.
اکنون برای رابط RS232 ، ویژگی های زیر باید برای سمت TRANSMITER (ATMEGA8) رعایت شود:
1. پین TXD (ویژگی دریافت داده) اولین کنترلر باید برای TRANSMITTER فعال باشد.
2. از آنجایی که ارتباط سریالی است، باید هر زمان که داده بای دریافت شد، بدانیم تا بتوانیم برنامه را تا زمان دریافت بایت کامل متوقف کنیم. این کار با فعال کردن یک وقفه کامل دریافت داده انجام می شود.
3. داده ها در حالت 8 بیت به کنترل کننده ارسال و دریافت می شود. بنابراین دو کاراکتر در یک زمان به کنترلر ارسال می شود.