PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : Usart



meh1011
04-08-2010, 21:14
با سلام وخسته نباشید به همه. اگه خدا کمک کنه. دارم یه مطالبی رو راجع به USART ترجمه میکنم
ولی یه سوالایی برام پیش اومده یکیشو فعلا اگه میشه جواب بدید، ممنون میشم.
نوشته :
The primary thing to remember is that USART0 has just one interrupt.

گفته USART یه دونه اینتراپت داره ولی (RXRDY, TXRDY , TXEMPTY,...) اینا که یهدونه نیستن؟!!!

meh1011
04-08-2010, 21:33
سوال دوم : اینجا گفته پس از شمردن 10 کاراکتر که دریافت شده به رجیستر rhr منتقل میشه ، اینجا کاراکتر همون بیته؟ اصلا کاراکتر چیه ؟ چرا 10تا 10تا ؟ مگه رجیستر ها 32 بیتی نیستن؟و بازم ممنون

رهتازالکترونیک
05-08-2010, 01:07
سوال دوم : اینجا گفته پس از شمردن 10 کاراکتر که دریافت شده به رجیستر rhr منتقل میشه ، اینجا کاراکتر همون بیته؟ اصلا کاراکتر چیه ؟ چرا 10تا 10تا ؟ مگه رجیستر ها 32 بیتی نیستن؟و بازم ممنون
سلام

در مورد نوشتن روی یک پایه میکرو باید بگم که درسته هر پایه میکرو یک بیت هست ولی اگه بخاییم مثلا 10001011 رو رو یکی از پورت ها قرار بدیم دو تا روش وجود داره یکی این که از هشت پایه یعنی یک پورت کامل برای قرار دادن مقادیر استفاده کنیم و راه حل دوم استفاده از ارتباط سریال (usart) كه تو اين روش از 10 يا 11 بيت استفاده مي شه كه بيت اول بيت شروع و هشت بيت بعدي بيتهاي ديتا هستن كه همون اعداد بالا توش قرار مي گيرن و بيت دهم بيت توازن و بيت 11 بيت پايان هست كه بيت توازن اختياري هست.... خوبي اين روش اينه كه كل اين ديتا ها به وسيله يك و فقط يك پايه (پايه مربوط به usart) ارسال ميشن.

meh1011
05-08-2010, 12:49
خیلی ممنون از راهنمایی تون ، ولی نگفتین چرا ارسال 10تاییه ؟ مثلا اگه داده های زیادی رو بخوایم بفرستیم و گیرنده پس از گرفتن ،اونا رو ذخیره کنه چون رجیستر ها 32 بیتی هستن و داده ها پس از اصلاح به صورت 8تایی در میان، و باید ما 4 تا داده ی 8 تایی در یک 32 بیتی ذخیره کنیم. این چیزی که من تا حالا گفتم درست بوده ؟ یا من اشتباه میکنم؟

meh1011
05-08-2010, 20:19
کسی نمی خواد به من جواب بده؟:cry:
یه مشکل دیگه هم دارم :
volatile AT91PS_PMC pPMC = AT91C_BASE_PMC;
pPMC->PMC_PCER = (1<<AT91C_ID_US0);
volatile چیه؟ هر وقت بخوایم اشاره گر رو تعریف کنیم اینو مینویسیم؟
هر وقت بخوایم مقدار یه رجیسترو تغییر بدیم باید همیشه اشاره گر رو اول بفهمونیم که رجیستر تو کدام قسمته(timer,PMC,usart)؟

meh1011
06-08-2010, 00:00
هم اکنون نیازمند یاری تان هستیم:(

meh1011
06-08-2010, 22:16
کسی نمی خواد به من کمک کنه؟:cry::cry::(

SAHA21
10-08-2010, 22:26
تبادل اطلاعات سري به دو صورت است يا به صورت سري ميفرسيتم يا برعك اطلاعات رو ميگيريم.درصورتي كه اطلاعات به فقط در يك هت ارسال شوند به اين حالت Simplex گويند مثل ارسال اطلاعت به پيرينتر .اگر بتوان اطلاعات را درهم ارسال و دريافت نمود،به اين حالت Duplex ميگويند.اگر در هر لحظه اطلاعات را بتوان فقط ارسال يا دريافت كرد به آن HAll Duplex گويند.و اما اگر اطلاعات را در آن واحد بتوان دريافت و ارسال كرد به اين حالت Full duplex گويند.{صبر كن الان ميريم سراغ اصل مطلبaa)} اين حالت هم نياز به دو سيم دارد پس پورت سري USART ميكرو Full Duplex است.
اطلاعات از طريق سيم فرستنده TXD ارسال و از طريق RXD دريافت ميشوند!
اطلاعات ميتونن به دو حالت ارسل بشوند.
1.سنكرون(synchronous) كه همان ارتباط موازي است
2.آسنكرون كه بيت به بيت ارسال ميشود.در اين حالت به عنوان مثال مي خواهيم كد 00110011 به RXD ميكرو بفرستيم.
اولين عدد هميشه 0 خواهد بود سپس از كم ارزش ترين بيتمون يعني1 شروع به دريافت عدد ميشود و آخرين بيت از ثبات 10 بيتي RXD يك خواهد بود
اين صفر و يك اضافي به خاطر آغاز و پايان در يافت يا ارسال اطلاعات ميباشد!OK!!!:wink:
البته نه در حالت كلي صبر كن به طور كامل برات توضيح ميدم

1nafar
11-08-2010, 11:15
سلام

گفته USART یه دونه اینتراپت داره ولی (RXRDY, TXRDY , TXEMPTY,...) اینا که یهدونه نیستن؟!!!
اگه دیتاشیت AT91SAM7X512
AT91SAM7X256
AT91SAM7X128
Preliminary رو دانلود کنید ( همون که 687 تا صفحه داره ) و به صفحه ی 338 برید ، در اونجا سه تا رجیستر 32 بیتی برای اینتراپت تعین شده ، دو رجیستر اول مربوط به فعال و غیر فعال کردن وقفه و رجیستر سوم برای مشاهده ی وضعیت وقفه هست .
مثلا اگه رجیستر USART Interrupt Enable Register رو به صورت 0x1 =*AT91C_US0_IER مقدار دهی کنید ، وقفه ی دریافت فعال میشه .
در این حالت اگه داده ای در بافر دریافت داده یا رجیستر USART Receive Holding Register قرار بگیره ، بیت اول از رجیستر USART Interrupt Mask Register یک میشه ، با فعال کردن واحد aic میتونید مقدار این رجیستر رو چک کنید و به زیر برنامه ی دلخواه پرش کنید .
همون طور که دید USART یه دونه وقفه داره یا بهتر بگم یه دونه رجیستر 32 بیتی برای وقفه داره که حالت های مختلف در 19 بیت اول اون ذخیره میشه . بیت های RXRDY, TXRDY , TXEMPTY ، CTSIC ، DCDIC، DSRIC، RIIC در این رجیستر وجود دارن و شما باید با توجه به نیاز خودتون اونا رو چک کنید .

اینجا گفته پس از شمردن 10 کاراکتر که دریافت شده به رجیستر rhr منتقل میشه ، اینجا کاراکتر همون بیته؟ اصلا کاراکتر چیه ؟ چرا 10تا 10تا ؟ مگه رجیستر ها 32 بیتی نیستن؟و بازم ممنون
این مورد برمیگرده به استاندارد rs232 در این استاندارد داده به صورت 8 بیتی + 1 بیت توازن + دو بیت شروع و پایان ارسال میشه .
رجیستر ارسال و دریافت داده (USART Transmit Holding Register و USART Receive Holding Register ) سی و دو بیتی هستند ؛ اما فقط 8 بیت اول اونا برای ذخیره سازی داده معتبر میباشند . ( فقط برای سازگاری با استاندارد ، چون تمامی دستگاه های قبلی داده ی rs232 رو به صورت 8 بیت میشناسن ) .

در کل نحوه ی ارسال و دریافت داده توسط USART خیلی جالب و گسترده هست و خودش یه کتابه ، خواستی بیا تو گوگل تالک تا دقیقا بهت بگم چی به چیه .

kiarash1990
09-09-2013, 20:07
سلام برادر ارسال بصورت سنکرون با ارسال موازی زمین تا اسمون فرق میکنه.سنکرون یعنی همزمان در این حالت پین sck میکرو فرکانس لازم برای ازسال میسازه که باید به پین sck میکرو دوم وصل بشه. usart با هر لبه ی بالا رونده یا پایین رونده دیتا رو در یافت یا ارسال میکنه.با تغییر فرکانس sck سرعت تغییر میکنه.