سلام
برای راه اندازی واحد USART در میکروکنترلر های ARM توسط کامپایلر Keil ، ابتدا باید هدر USART رو درون هدر های Keil اضافه نمایید
هدر USART ارائه شده برای میکروکنترلر AT91SAM7S64 رو می توانید از لینک زیر دریافت نمایید و باید به آدرس زیر در رایانه خود انتقال دهید
C:\Keil\ARM\INC\Atmel\SAM7S
لینک دانلود سرور1: http://up6.iranblog.com/upload/90/sh...3144634761.zip
لینک دانلود سرور2: http://www.upload4files.tk/download....30da631e7cc0af
هدر USART ارائه شده برای میکروکنترلر AT91SAMX256 رو می توانید از لینک زیر دریافت نمایید و باید به آدرس زیر در رایانه خود انتقال دهید
C:\Keil\ARM\INC\Atmel\SAM7X
لینک دانلود سرور1: http://up6.iranblog.com/upload/90/sh...3144634762.zip
لینک دانلود سرور2: http://www.upload4files.tk/download....fc07bf9da9a2c8
پس از اضافه کردن هدر ها ، کامپایلر Keil رو باز کرده و یک پروژه ایجاد کنید و آموزش زیر رو ادامه دهید
1 . ابتدا با دستور <include <usart.h# هدر USART رو به پروژه اضافه نمایید
2 . با دستور (usart0_init(a,b میتوانید واحد USART رو کانفیگ نمایید
a = بیت توقف ارتباط می باشد که به طور مثال عدد 2 یعنی با 2 بیت توقف داده مورد نطر ارسال شود
b = نرخ ارسال اطلاعات می باشد
3 . با دستور ()sendchar میتوانید متغیری رو به پورت سریال ارسال نمایید
4 . برای دریافت داده از پورت سریال از دستور ()a = getkey استفاده می شود که داده های دریافتی در متغیر a ذخیره می شود
×××آ خوب حالا نوبت به تابع ها می رسد که می توانید هر عددی رو (حتی بیش از 8 بیت) با این تابع ارسال نمایید ×××
با تابع زیر ابتدا بایت بالا رو به دست آورده و ارسال می کنیم و سپس بایت پایین رو بدست آورده و ارسال می نماییم
برای بدست آوردن بایت پایین (i & 0xFF) و برای بدست آوردن بایت بالا (8<<(i & 0xFF00))
که می توان متغیر X رو که می تواند بیش از 8 بیت هم باشد ارسال کرد
x می تواند متغیر از نوع short باشد
با تابع زیر ابتدا بایت پایین و سپس بایت بالا رو دریافت می کنیم و پس از آن برای داده های دریافتی رو یکی می کنیم و متغیر ارسال شده به صورت کامل دریافت می شود
برای یکی کردن متغیر ها هم از دستور ((c = a | (b<<8) استفاده می شود که a بایت پایین و b بایت بالا می باشد و c متغیر خروجی که از یکی شدن متغیر های a و b حاصل می شود
می توانید از برنامه زیر استفاده نمایید
a و b مغیری از نوع char و c متغیری از نوع short می باشد
××××× نکته : برای ارسال و دریافت با کمترین خطا همان طور که در برنامه های زیر قابل مشاهده هست در ارسال از 100 میلی ثانبه تاخیر و در گیرنده هم به همین صورت .
با سپاس
برای راه اندازی واحد USART در میکروکنترلر های ARM توسط کامپایلر Keil ، ابتدا باید هدر USART رو درون هدر های Keil اضافه نمایید
هدر USART ارائه شده برای میکروکنترلر AT91SAM7S64 رو می توانید از لینک زیر دریافت نمایید و باید به آدرس زیر در رایانه خود انتقال دهید
C:\Keil\ARM\INC\Atmel\SAM7S
لینک دانلود سرور1: http://up6.iranblog.com/upload/90/sh...3144634761.zip
لینک دانلود سرور2: http://www.upload4files.tk/download....30da631e7cc0af
هدر USART ارائه شده برای میکروکنترلر AT91SAMX256 رو می توانید از لینک زیر دریافت نمایید و باید به آدرس زیر در رایانه خود انتقال دهید
C:\Keil\ARM\INC\Atmel\SAM7X
لینک دانلود سرور1: http://up6.iranblog.com/upload/90/sh...3144634762.zip
لینک دانلود سرور2: http://www.upload4files.tk/download....fc07bf9da9a2c8
پس از اضافه کردن هدر ها ، کامپایلر Keil رو باز کرده و یک پروژه ایجاد کنید و آموزش زیر رو ادامه دهید
1 . ابتدا با دستور <include <usart.h# هدر USART رو به پروژه اضافه نمایید
2 . با دستور (usart0_init(a,b میتوانید واحد USART رو کانفیگ نمایید
a = بیت توقف ارتباط می باشد که به طور مثال عدد 2 یعنی با 2 بیت توقف داده مورد نطر ارسال شود
b = نرخ ارسال اطلاعات می باشد
3 . با دستور ()sendchar میتوانید متغیری رو به پورت سریال ارسال نمایید
4 . برای دریافت داده از پورت سریال از دستور ()a = getkey استفاده می شود که داده های دریافتی در متغیر a ذخیره می شود
×××آ خوب حالا نوبت به تابع ها می رسد که می توانید هر عددی رو (حتی بیش از 8 بیت) با این تابع ارسال نمایید ×××
با تابع زیر ابتدا بایت بالا رو به دست آورده و ارسال می کنیم و سپس بایت پایین رو بدست آورده و ارسال می نماییم
برای بدست آوردن بایت پایین (i & 0xFF) و برای بدست آوردن بایت بالا (8<<(i & 0xFF00))
که می توان متغیر X رو که می تواند بیش از 8 بیت هم باشد ارسال کرد
x می تواند متغیر از نوع short باشد
کد:
for (s=0;s<5;s++) { sendchar(x & 0xFF); delay_ms(100); sendchar((x & 0xFF00)>>8); delay_ms(100); }
با تابع زیر ابتدا بایت پایین و سپس بایت بالا رو دریافت می کنیم و پس از آن برای داده های دریافتی رو یکی می کنیم و متغیر ارسال شده به صورت کامل دریافت می شود
برای یکی کردن متغیر ها هم از دستور ((c = a | (b<<8) استفاده می شود که a بایت پایین و b بایت بالا می باشد و c متغیر خروجی که از یکی شدن متغیر های a و b حاصل می شود
می توانید از برنامه زیر استفاده نمایید
a و b مغیری از نوع char و c متغیری از نوع short می باشد
کد:
for (s=0;s<5;s++) { a = getkey(); delay_ms(100); b = getkey(); delay_ms(100); (c = a | (b<<8)); }
××××× نکته : برای ارسال و دریافت با کمترین خطا همان طور که در برنامه های زیر قابل مشاهده هست در ارسال از 100 میلی ثانبه تاخیر و در گیرنده هم به همین صورت .
با سپاس
دیدگاه