ايران ويج

نسخه‌ی کامل: وقفه در تبادل سریال usart
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام خدمت دوستان
راستش سوالی در رابطه با وقفه در تبادل سریال usart داشتم
همونطور که میدونید وقتی تو کدویزارد میکرو رو در حالت گیرنده و با وقفه تنظیم میکنیم ، کد ویزارد خودش به طور خودکار متغیر rx_buffer رو برای ذخیره داده های ورودی بصورت آرایه ی
char rx_buffer[RX_BUFFER_SIZE];
تعریف میکنه که مثلا اگه بافر 8 بیتی باشه یه آرایه 8 عضوی و اگه 16 تایی باشه یه آرایه 16 تایی تعریف میشه
حالا سوال من اینجاست که اگه بافر 8 بیتی باشه ، یه متغیر نوع char برای ذخیره کافیه ، پس چرا یه آرایه 8 تایی تعریف میشه؟
و دیگه اینکه ما بخوایم این 8 بییت ورودی رو بخونیم و تو یه متغیر دیگه ذخیره کنیم از کدوم عضو این آرایه باید دیتا رو بخونیم یا اگه طور دیگه ای هستش لطفا توضیح بدین
ممنون
بافر 8 بیتی نداریم که! بافر n بایتی میگن... یعنی شما یه آرایه n بایتی تعریف میکنی که هر بایت اطلاعات که اومد، آخر اون آرایه ذخیره بشه.
ارسال در قالب هایی با 8 بیت اطلاعات (+ بیت شروع و پایان...) انجام میشه. (که میشه این 8 بیت رو فکر کنم به 9 و 10 تغییر داد...) برای هرکدوم از این 8 بیت به یک char احتیاج داری. با تشکیل یک بافر مثلا 16 بایتی میتونی 16 تا 8 بیتی دریافت کنی
تا اونا که من می دونم ارسال اطلاعات سریال می تونه 7 بیتی یا 8 بیتی باشه و 9 و 10 بیتی نداره !!!

در مورد وقفه سریال تو بسکام اگه مشکلی داشتین بگین !!!
الان نگاه کردم
7 و 8 و 9 بیت
اخه تو هایپر ترمینال فقط میشه 5 و 6 و 7 و 8 بیتی رو تنظیم کرد !!

[تصویر:  0a8094cf9219455481f7.PNG]

9 هم داریم
اگه کتاب مزیدیو داری یه سر به ارتباط سریال بزن
داش مدرک رو میکنی؟! Biggrin

اینم عکس کدویزارد
[تصویر:  420f2c03d04448fc9723.jpg]
البته این واسه mega16 بود

کتاب ره افروز رو دیدم واسه usart نوشته بود 5 و6 و7 و8 و9 بیت. بیت RXB8 از رجیستر UCSRB نهمین بیت از اطلاعات دریافتی رو ذخیره میکنه...

گفتی هایپر ترمینال غصه م گرفت! چون فردا باید سرعت 115200 رو با یه مبدل سریال امتحان کنم و جواب بگیرم. میخوام سنسور دوربین راه بندازم!! (قبلا که این مبدل بالای 9600 جواب نمیداد!! حالا ببینم با یه کریستال 16 چی میشه...)
بهتر بود یه منبع معتبر تر معرفی میکردین !
کدویژن هم شد منبع !!!

اخه تو لینک های زیر هم فقط 7 و 8 بیتی رو گفته :

http://en.wikipedia.org/wiki/RS-232
http://en.wikipedia.org/wiki/Serial_port
http://www.lookrs232.com/rs232/waveforms.htm

[تصویر:  serwave2.gif]

و جالبه هر چی برنامه کار با پورت سریال داشتم فقط 7 و 8 بیتی داشتن !!!

آیا WINAVR هم مد 9 بیتی داره !!؟؟؟؟؟
سلام و ممنون از همه دوستان
فقط یه سوال دیگه دارم ومیخوام اگه میشه تو همین تاپیک ارسال کنم اونم اینه که در میشه ماژولهای hmt و hmr باود ریت رو مثل ماژولهای hmtr تغییر داد یا نه ؟
بازم ممنون
از وقفه ی usart چه موقع میشه استفاده کرد؟؟؟؟

اگه میشه یکی از موارد استفادش را مثال بزنید؟؟
هر موقع که بخوای با پورت سریال کار کنی و نمی خوای فقط میکرو رو تو دریافت اطلاعات هدر بدی !

مثلا تابلو روان ! ( کنترل از راه دور )
تو حالا معمول متنش رو نمایش بده و هر موقع دیتا اومد بره سراغ دیتایی اومده و ....


وقفه urxc تو بسکام !!