پاسخ : مشکل در ارسال اطلاعات با USART
خواهش میکنم
اگر میخواهید به همون شکل که گفتم دریافت کنید. باید به صورت زیر ارسال کنید:
مثلا ما یک متغییر int data داریم . اول باید بایت پر ارزش را ارسال کنید:
بعد تو روتین وقفه ارسال سریال بایت کم ارزش را ارسال کنید:
کمتر از 8 بیت که کلا کارو خراب میکنه . بهتره همون 8 بیتی بفرستید. براچی چند بار ؟ میتونید خودتون یک پروتکل به شکل tcp ایجاد کنید و ack دریافت کنید . ولی لازم نیست همون یک بیت توازن کافیه(اگه خیلی وسواس دارید) .
ببنید با این روش که ارسال میکنید (آسنکرون) خیلی مهمه سرعت دو طرف با هم مچ باشه و در صورتی که اختلاف کمی داشته باشه تو سرعت های بالا این اختلاف محسوس و باعث خطا میشود. بهتره برای جلوگیری از خطا ، برای دادن کلاک به میکرو از کریستال خارجی 11.0592 مگاهرتز استفاده کنید و در صورتی که سرعت ارسال براتون مهم نیست ، از سرعت پایین تر استفاده کنید.
در رابطه برد هم بهتره از max232 استفاده کنید. (برید این پستم رو بخونید : http://www.eca.ir/forum2/index.php?topic=72433.msg485490#msg485490 )
نوشته اصلی توسط --نیلوفر--
اگر میخواهید به همون شکل که گفتم دریافت کنید. باید به صورت زیر ارسال کنید:
مثلا ما یک متغییر int data داریم . اول باید بایت پر ارزش را ارسال کنید:
کد:
(UDR=(char)(data>>8;
کد:
UDR=(char)data;
ببنید با این روش که ارسال میکنید (آسنکرون) خیلی مهمه سرعت دو طرف با هم مچ باشه و در صورتی که اختلاف کمی داشته باشه تو سرعت های بالا این اختلاف محسوس و باعث خطا میشود. بهتره برای جلوگیری از خطا ، برای دادن کلاک به میکرو از کریستال خارجی 11.0592 مگاهرتز استفاده کنید و در صورتی که سرعت ارسال براتون مهم نیست ، از سرعت پایین تر استفاده کنید.
در رابطه برد هم بهتره از max232 استفاده کنید. (برید این پستم رو بخونید : http://www.eca.ir/forum2/index.php?topic=72433.msg485490#msg485490 )
دیدگاه