PDA

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



M.ABDOLLAHI
23-05-2010, 12:38
به نام خدا سلام با توجه به اين كه يكي از قابليتهاي UART ميكروكنترلر LPC2378 فعال شدن وقفه دريافت بعد از دريافت تعداد مشخصي بايت (1 با 4 يا 8 يا 14) كه مقدار آن به وسيله بيتهاي 7و6 رجيستر UxFCR مشخص ميگردد ميباشد مثلا اگر ما تعداد بايتها را 14 تعيين كنيم در گيرنده هنگام فعال شدن وقفه دريافت ما آخرين بايت دريافتي را از رجيستر UxRBR ميخوانيم خوب حالا ما 13 بايت قبلي را كه به مبكرو ارسال شده را از كدام رجيستر و يا رجيستر ها بايد بخوانيم.تا به اطلاعات هر 14 بايت دريافتي دسترسي پيدا كنيم.در ضمن من اين سوال را در سايت eca هم مطرح كردم ولي متاسفانه كسي جواب درستي به من نداد اميدوارم شما دوستان خوب بتوانيد اين مشكل را برطرف كنيد متشكرم خداحافظ...

1nafar
25-05-2010, 14:56
سلام
در کل اطلاعاتی که توسط میکرو کنترلر دریافت میشه توی رجیستر ( UxRBR ( Receiver Buffer Register قرار می گیره . وقتی که شما بیت های 6و7 رجیستر UxFCR رو روی 0x0Eبرنامه ریزی میکنید ، میکرو میفهمه که باید در هنگام دریافت بیت چهاردهم از ورودی ، عکس العمل نشون بده .
با دریافت بیت چهاردم CPU بیت های 4 و 5 رجیستر UxIIR تغییر میده و شما میتونید با خوندن او از دریافت بیت چهاردهم اگاه بشید .
پس نتیجه این شد که :
اطلاعات دریافتی شما در رجیستر UxRBR محفوظ هست و شما هر وقت که خواستید میتونید اون رو بخونید .
بیت های 4 و 5 از رجیستر UxIIR برای خوندن وضعیت وقفه رزرو شدن ، شما میتونید بعد از فعال کردن وقفه با مقدار دهی رجیستر uxIER مقدار این بیت ها رو بخونید و از رخ دادن وقفه اگاه بشید .
با این حساب دیگه نیازی نیست که تعداد ورودی ها به صورت دستی چک بشه ، چون بعد از مقدار دهی رجیستر ها cpu تمام کار ها رو انجام میده و شما باید فقط بهش دستور بدید که در مقابل اونا چه کار کنه .

در ضمن من اين سوال را در سايت eca هم مطرح كردم ولي متاسفانه كسي جواب درستي به من نداد اميدوارم شما دوستان خوب بتوانيد اين مشكل را برطرف كنيد متشكرم خداحافظ...
شاید دوست نداشتن جواب بدن .... اگه بین دو تا گروه مقایسه نباشه و هر کدوم راه خودش رو بهتره :0013:

M.ABDOLLAHI
30-05-2010, 23:56
به نام خدا سلام خيلي متشكرم ولي ميخواستم بپرسم شما در اينجا منظورتان از بيت همان بايت بود ديگر يا نه چون من منظورم بايت بود در هر صورت از كمك شما دوست گرامي و عزيز متشكرم...

1nafar
31-05-2010, 08:06
سلام
منظور من بیت بود .
چون همون طور که میدونید هر رجیستر دارای 32 بیت هست ( 32 تا خونه برای در نظر گرفته شده ) برای مقدار دهی بیت n ام شما باید کلیه بیت های قبل از اون رو مقدار دهی کنید . در صورتی که بیت های قبلی نیاز به فعال شدن داشته باشه باید مقدار یک براشون در نظر گرفته بشه .

وقتی که شما بیت های 6و7 رجیستر UxFCR رو روی 0x0Eبرنامه ریزی میکنید
این یعنی این دو تا بیت باید 1 بشه ، تا هر وقت مقدار ورودی به 0e هگز رسید وقفه غیر فعال بشه .
شما باید وضعیت تمام بیت ها رو در نظر بگیرد و در نهایت اونا رو کناب هم قرار بدید و کد هگز متناظر رو در رجیستر بریزید

M.ABDOLLAHI
02-06-2010, 14:52
به نام خدا سلام منظور من در سؤآل همان بايت بوده اگر ميشود يك نگاه به user manual اين ميكرو قسمت UART بيندازيد تا متوجه سؤال كن بشويد. باز هم متشكرم خداحافظ...

1nafar
04-06-2010, 23:03
سلام
بهتره یه دونه عکس از جایی که میگی بزاری