امکانش هست بعد از کانفیگ UART سخت افزاری بشه پین TXD رو تغییر وضعیت داد؟
اطلاعیه
Collapse
No announcement yet.
کنترل پین TXD در زمان استفاده از UART
Collapse
X
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
من باید یه نوع ارتباط سریال با باود 250K رو ایجاد کنم که هر فریمش 11 بیته. 1بیت شروع، 8بیت دیتا و 2بیت هم پایان. تا اینآجای کار مشکلی نیست ولی باید بین هر فریم یک پالس 1 میکرو ثانیه ایجاد کنم یعنی یه بار TXD رو صفر و یک کتم.همچنین قبل از اولین فریم باید 100 میکرو ثانیه پایه TXD صفر و 12 میکرو ثانیه یک بشه.
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
پین بغلی TXD رو بزن به لاین TXD و همین کارا رو روی لاینش انجام بده(خیلی راحت همون قد که می خوای high یا low بکن). اگه می ترسی به میکرو صدمه بزنه یه دیود هم واسه خط TXD بذار. حله یا نه هنوز به نظرت مشکل داره؟ من باشم براش یه تابع می نویسم که دیگه همه اینکارا رو خودش انجام بده.
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
سلام
بیت txen از رجیسترUCSRB(رجیستر کنترل وضعیت) رو کنترل کن با یک کردن ابن بیت فرستنده USARTفعال خواهد شد .هنگامی که این بیت یک میشود عملکرد عادی پایه TXقطع شده و به عنوان حروجی سریال عمل خواهد نمود صفر کردن این بیت تا هنگامی که اطلاعات بطور کامل ارسال نشود فرستنده را غیر فعال نمیکند
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
نوشته اصلی توسط حسام هاشمسلام
بیت txen از رجیسترUCSRB(رجیستر کنترل وضعیت) رو کنترل کن با یک کردن ابن بیت فرستنده USARTفعال خواهد شد .هنگامی که این بیت یک میشود عملکرد عادی پایه TXقطع شده و به عنوان حروجی سریال عمل خواهد نمود صفر کردن این بیت تا هنگامی که اطلاعات بطور کامل ارسال نشود فرستنده را غیر فعال نمیکند
توی دیتاشیت نوشته:The disabling of the Transmitter (setting the TXEN to zero) will not become effective
until ongoing and pending transmissions are completed (i.e., when the Transmit Shift
Register and Transmit Buffer Register do not contain data to be transmitted). When disabled,
the Transmitter will no longer override the TxD pin
این دو تا رجیستر کجا هستن؟
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
برای استفاده از TXD به عنوان یک پین I/O بعد از اتمام ارسال، ابتدا باید در رجیستر UCSRA منتظر یک شدن بیت شماره 6 که همان TXC است بمانید تا ارسال جاری تمام شود (با فرض mega32). بعد در محل این بیت یک بنویسید تا صفر شود و برای بار بعد بتوانید از آن استفاده کنید. سپس در UCSRB بیت شماره 3 یا TXEN را صفر کنید و در این شرایط با فرض اینکه پین متناظر با TXD از قبل خروجی تعریف شده باشد، می توانید آن را بسته به نیاز Low و High کنید. برای ارسال های بعدی هم باید مجددا TXEN یک شود و این روال همچنان ادامه یابد.اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه
-
پاسخ : پاسخ : کنترل پین TXD در زمان استفاده از UART
نوشته اصلی توسط Rohalaminپین بغلی TXD رو بزن به لاین TXD و همین کارا رو روی لاینش انجام بده(خیلی راحت همون قد که می خوای high یا low بکن). اگه می ترسی به میکرو صدمه بزنه یه دیود هم واسه خط TXD بذار. حله یا نه هنوز به نظرت مشکل داره؟ من باشم براش یه تابع می نویسم که دیگه همه اینکارا رو خودش انجام بده.
میآخوام ترجیحا با UART سخت افزاری و بدون کارهای عجیب و غریب باشه.
نوشته اصلی توسط طراحبرای استفاده از TXD به عنوان یک پین I/O بعد از اتمام ارسال، ابتدا باید در رجیستر UCSRA منتظر یک شدن بیت شماره 6 که همان TXC است بمانید تا ارسال جاری تمام شود (با فرض mega32). بعد در محل این بیت یک بنویسید تا صفر شود و برای بار بعد بتوانید از آن استفاده کنید. سپس در UCSRB بیت شماره 3 یا TXEN را صفر کنید و در این شرایط با فرض اینکه پین متناظر با TXD از قبل خروجی تعریف شده باشد، می توانید آن را بسته به نیاز Low و High کنید. برای ارسال های بعدی هم باید مجددا TXEN یک شود و این روال همچنان ادامه یابد.
در رجیستر UCSRA فقط میآتونم بیت های 0 و 1 رو تغییر بدم. در حالی که TXC هم وضعیت R/W داره و قاعدتا باید بشه تغییر وضعیتش داد.
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
تا حدی مشکل رو پیدا کردم.
در صورتی میشه این کارو انجام داد که حتما قبلش یک ارسال انجام شده باشه. در حالی که بنده میآخوام قبل از اولین ارسال این کارو انجام بدم.
مشکل بعدی اینه که در ارسال حتما باید از دستور print استفاده بشه در حالی که من از دستور printbin استفاده می کنم.
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
سلام به همه دوستان
من با یک مشکل جدید مواجه شدم و اونم اینه که هر بار ارسال اطلاعات میکنم گیرنده ایتدا عدد ارسالی و بعد عدد 48 رو دریافت میکنه باود ریت 9600 هست با وقفه دریافت udr کار میکنم
خیلی ذهنم رو درگیر کرده
ممنون مبشم دوستان راهنمایی کنن .
اگه نیازی به نمونه برنامه و توضیح بیشتر هست در خدمتم .
دیدگاه
-
پاسخ : کنترل پین TXD در زمان استفاده از UART
در صورت برقراری مشکل، بجای استفاده از دستورات بسکام بصورت مستقیم به رجیسترها مقداردهی کنید تا بتوانید عملکرد دلخواه خود را پیاده سازی کنید.اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه
دیدگاه