درباره کار کردن با دو کانال USART در ATMEGA64 آیا نکته ای وجود دارد؟من یک کانال را به ارتباط با یک ماژول RFID و کانال دیگر را نیز به HM-TR برای ارسال و دریافت اطلاعات بی سیم اختصاص دادم.ماژول RFID باید اطلاعات خود را به صورت وقفه گیرنده دریافت کند و در سرویس روتین وقفه اش باید یک سری پردازش انجام شود و در نهایت توسط USART دیگر به مرکز اطلاعات ارسال شود.RFID را به USART0 و HM-TR را به USART1 وصل کرده ام.در ابتدا با مشترک بودن میزان باودریت هیچکدام کار نمی کرد و برای آن باودریت کانال ها را با هم متفاوت گذاشتم(سوال!!!) هنوز با این کار نتوانستم خروجی مطلوب را بگیرم.آیا کسی می تواند راهنمایی کند؟
اطلاعیه
Collapse
No announcement yet.
کمک درباره استفاده از دو USART در ATMEGA64
Collapse
X
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
روی hm-tr وقفه گیرنده داری یا فقط در حالت فرستنده ازش استفاده میکنی :rolleyes:
من کانال 2 رو راه انداختم
اگه 2 تا هم زمان وقفه داشته باشی باید به فکر تداخل وقفه هم باشی
[move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]
- تشکرها 1
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
USART0 فقط برای RFID استفاده می شود و هر زمان که مرکز داده بخواهد باید ایستگاه های RFID داده های ذخیره شده در MMC شان را در قالب اطلاعات سریال برای مرکز بفرستند.در کل احتیاج به دو وقفه USART هست یکی USART0 و یکی USART1 .البته فعلا در مرحله تست و عیب یابی هستم تا از صحت ارسال و دریافت در زمانی که USART0 به عنوان گیرنده با وقفه و uSART1 برای ارتباط معمولی uSART است مطمئن شوم.یکبار کار می کند اما کانال دیگر قطع است.نمی توانم از صحت تبادل داده در USART0 مطمئن شوم(مثلا برای تست صحت در سرویس روتین USART0 یک putchar تعریف کردم که به محض ورود داده از وقفه کانال صفر ، 20 بار کاراکتر a را از طریق USART1 بفرستد.)
دیدگاه
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
خوب الان چه کمکی از دست من بر میاد در خدمتم
از لحاظ سخت افزاری میشکل ندارین فقط باید اصول برنامه نویسی رو رعایت کنید تا وقفه ها با هم تداخل نکنه
توی روتین وقفه دستورات سنگین ننویسید استک هارو زیاد کنید تا میکرو بتونه سر برگ های روتین وقفه رو ذخیره کنه
اگه توی وقفه یوزارت 2 مشکلی دارین من نمونه برنامه شو نوشتم بزارم ؟
البته با ابیسکام
زبان برنامه نویسی شما ؟؟[move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]
- تشکرها 1
دیدگاه
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
من با زبان C و نرم افزار codevision کار می کنم.آیا امکان تداخل سیگنال های سریال در USART0 و USART1 وقتی باودریت یکسان دارند وجود دارد؟آیا برای استفاده از 2 USART تنظیم خاصی از جمله فرکانس کلاک یا استفاده از کریستال خارجی لازم است؟همان طور که در دیتاشیت HM-TR آنده است ، این ماژول داده ها را به صورت بسته های 32 بایتی می فرستد.سوالم این است که وقتی بسته های من دارای بایت های کمتری است امکان دارد این ماژول تا پر شدن هر 32 بایتش صبر کند و به این ترتیب اشکال در امر تبادل بوجود آورد؟آیا تنظیم پهنای باند برای این ماژول باری از مشکلات را کم می کند یا نه؟
دیدگاه
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
شما برای کار با هر دو پورت سریال بصورت وقفه یا سرکشی؛ باود یکسان یا متفاوت، هیچ مشکلی نداری. اما با توجه به اینکه یکی از ماژولهات تعداد زیادی داده رو با هم ارسال میکنه شما بایستی بافر اون پورت رو بیشتر از مقدار بحرانی 32 قرار بدی .
// USART0 Receiver buffer
#define RX_BUFFER_SIZE0 32
اگه با کدویژن کار میکنی موقع ایجاد برنامه با کدویزارد خودش مقدار اونو از شما میخواد که بهتره رو 64 بایت تنظیم بشه(بعدا هم میتونی تنظیم کنی) . این بافر در واقع یه صف حلقوی (ring queue ) هست بقول بچه های کامپیوتری، که خودش داده های دریافتی رو تا موقع خوندنشون با توابع getchar, getchar1 نگه میداره.
به این نکته هم توجه داشته باش که کدی که توسط کامپایلر برات درس میکنه اگه توش این بافر پر بشه ، یه فلگ رو 1 میکنه و تعدادی از داده ها از بین میرن
if (++rx_counter0 == RX_BUFFER_SIZE0)
{
rx_counter0=0;
rx_buffer_overflow0=1;
};
- تشکرها 1
دیدگاه
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
سلام خسته نباشید ببخشید مزاحم شدم بابت مگا 64 سوال داشتم من نمیتونم بهش وودی یوزارتمو معرفی کنم من دوتا ماژول دارم که از طریق پورت سریال باید به میکر وصل بشن اگه ممکنه نمونه برنامه بسکام واسم اپ کنید تا ببینم مثلا چجوری بهش بگم برای ماژول سیم 900 از یوزارت 1 و واسه وای فای از یوزارت 0 استفاده کن ممنون میشم کمکم کنید بدجوری گیرم
دیدگاه
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
نوشته اصلی توسط حامد رحیمی نمایش پست هاخوب الان چه کمکی از دست من بر میاد در خدمتم
از لحاظ سخت افزاری میشکل ندارین فقط باید اصول برنامه نویسی رو رعایت کنید تا وقفه ها با هم تداخل نکنه
توی روتین وقفه دستورات سنگین ننویسید استک هارو زیاد کنید تا میکرو بتونه سر برگ های روتین وقفه رو ذخیره کنه
اگه توی وقفه یوزارت 2 مشکلی دارین من نمونه برنامه شو نوشتم بزارم ؟
البته با ابیسکام
زبان برنامه نویسی شما ؟؟با سلام اگر لطف کنید نمونه برنامه بسکام کار با دو پورت سریال همزمان رو بذارید ممنون میشم
من توی وقفه ها و روتینش مشکل دارم و به کل گیج شدم
دیدگاه
-
پاسخ : کمک درباره استفاده از دو USART در ATMEGA64
نوشته اصلی توسط حامد رحیمی نمایش پست هاروی hm-tr وقفه گیرنده داری یا فقط در حالت فرستنده ازش استفاده میکنی :rolleyes:
من کانال 2 رو راه انداختم
اگه 2 تا هم زمان وقفه داشته باشی باید به فکر تداخل وقفه هم باشیهر اقدام بزرگی ابتدا محال به نظر میرسد
دیدگاه
دیدگاه