سلام می خواستم بصورت تستی یک کاراکتر رو از میکرو به لپتاپ ارسال کنم از ماژول PI2303 استفاده میکنم و بنظر میاد به لپتاپ متصل هستم اما برنامم درست کار نمیکنه کسی یک برنامه ساده برای ارسال کاراکتر داره؟
اطلاعیه
Collapse
No announcement yet.
برنامه ساده برای تست USART در AVR
Collapse
X
-
پاسخ : برنامه ساده برای تست USART در AVR
این ی برنامه تستی هست از جایی گرفتم با اجرای این برنامه پایه tx تو میکروم یک میشه! باید چیکار کنم ؟؟؟؟ خواهشا کمک کنید گیر کردم ... مشکل کجاست
کد:#include <mega32a.h> interrupt [USART_TXC] void uart_tx_isr (void) { UDR='A'; } #include <stdio.h> void main(void) { UCSRA=0x00; UCSRB=0x48; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; #asm ("sei") UDR='A'; while (1) { } }
م_________________نتظرم
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط MSAEED1900ای داااااااااااد ای هواااااااااااااااااااااار کمک کنید خواهشا گیر کارم یخداااااااااا :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry:
برای ارسال چه نیازی به وقفه هست.
توی کد ویزارد یدونه فقط تیک TX رو بزن و سرعت ارسال رو هم بررسی کن تمام.
از تابع putchar یا puts هم می تونی برای ارسال استفاده کنیIf the wind will not serve, take to the oars
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط ASHIT AXARچرا اینکارو کردی؟
برای ارسال چه نیازی به وقفه هست.
توی کد ویزارد یدونه فقط تیک TX رو بزن و سرعت ارسال رو هم بررسی کن تمام.
از تابع putchar یا puts هم می تونی برای ارسال استفاده کنی
الان بی زحمت اینو چک کن ببین چی کم داره
کد:#include <mega32a.h> #include <stdio.h> void main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM); UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8); UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL); UBRRH=0x00; UBRRL=0x33; while (1) { putchar(65); } }
م_________________نتظرم
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط MSAEED1900والا از صبح صد مدل نوشتم اینم تستی از ی جا کپی کرده بودم
الان بی زحمت اینو چک کن ببین چی کم داره
کد:#include <mega32a.h> #include <stdio.h> void main(void) { // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM); UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8); UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL); UBRRH=0x00; UBRRL=0x33; while (1) { putchar(65); } }
فکر کنم یکی از چراغ های ماژول روشن میمونه (موقع ارسال مدوم چشمک میزنه)
باید حتما GND ماژول رو هم به GND میکرو وصل کنی
سعی کن از VCC ماژول استفاده نکنی.
اگه پورت (نرم افزاری ) ماژول رو هم توی سیستم درست انتخاب کرده باشی باید کار کنهIf the wind will not serve, take to the oars
دیدگاه
-
پاسخ : پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط ASHIT AXARیادم نیست ( الان هم امکان تست رو ندارم)
فکر کنم یکی از چراغ های ماژول روشن میمونه (موقع ارسال مدوم چشمک میزنه)
باید حتما GND ماژول رو هم به GND میکرو وصل کنی
سعی کن از VCC ماژول استفاده نکنی.
اگه پورت (نرم افزاری ) ماژول رو هم توی سیستم درست انتخاب کرده باشی باید کار کنه
GND ماژول هم به GND میکرو وصل کردم تاثیر نداشت
پورت ماژول هم درسته ..
یک سوال اساسی که دارم اینه که چرا پایه TX میکرو که باید دیتا رو ارسال که همون پایه 15 کلا روی سطح منطقی یک هست ..
دوستان یکی به داد ما برسه از صبح درگیرم
م_________________نتظرم
دیدگاه
-
پاسخ : پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط MSAEED1900نخیر مثه اینکه قسمت نیست ... :cry2: :cry2:
GND ماژول هم به GND میکرو وصل کردم تاثیر نداشت
پورت ماژول هم درسته ..
یک سوال اساسی که دارم اینه که چرا پایه TX میکرو که باید دیتا رو ارسال که همون پایه 15 کلا روی سطح منطقی یک هست ..
دوستان یکی به داد ما برسه از صبح درگیرم
یه عکس کم حجم از مدار بزار
از برنامه کامپیوتر هم یه عکس بزار
ماژول از کدوم مدل هستش؟If the wind will not serve, take to the oars
دیدگاه
-
پاسخ : پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط ASHIT AXARپایه های RX و TX رو که به میکرو اشتباهی وصل نکردی؟
یه عکس کم حجم از مدار بزار
از برنامه کامپیوتر هم یه عکس بزار
ماژول از کدوم مدل هستش؟
پایه TX میکرو به RX ماژول هست
از ماژول PI2303 استفاده کردم وقتی دستم رو روی پایه RX ماژول میگیرم روی ترمینال کدویژن یک سری شر و ور نشون میده
اما وقتی به میکرو وصلش میکنم هیچ داده ای نمیاد یعنی اینکه مشکل از برنامه میکرو هست
م_________________نتظرم
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
درود
دوست عزیز اول برنامه رو توی پروتئوس تست کن.
پایه TX باید یک بمونه و این در واقع stop bit هست که از ارسال قبلی مونده. یعنی در هر ارسال پابه0 میشه که start bit هست بعد دیتا و بعد دوباره 1 که stop bit هست.
https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=im ages&cd=&ved=0ahUKEwi07efHqcXKAhWhh3IKHdJg DM0QjxwIAw&url=https%3A%2F%2Flearn.sparkfun.co m%2Ftutorials%2Fserial-communication%2Fwiring-and-hardware&bvm=bv.112454388,d.bGQ&psig=AFQjC NFlLjan1OQmDed9uY-r06Ok7jwWfA&ust=1453823723165794&cad=rja
مسئله مهمی که باید رعایت کنی baud rate هست. باید کریستالی که تو code vision انتحاب می کنی و طبق اون مثلا 9600 انتخاب میشه، باید همون رو برای میکرو بذاری. یعنی اگه با 16MHz باود ریت 9600 درست شده، کریستال 16M برای میکرو قرار بدی.
مسئله بعدی انتخاب باید (مثلا 9600 ) در ترمینال هست.
گراند ماژول باید به میکرو وصل بشه و tx به rx و برعکس.
قبلش می تونی ماژول رو تست کنی. به این صورت که rx ماژول و tx ماژول رو به هم وصل کنی و تو ترمینال (خود پروتئوس هم ترمینال داره) دیتا بفرستی و باید همون رو دریافت کنی.
اینم برنامه تست به همراه فایل پروتئوس:
http://uploadboy.me/zxui6mjoa39c/sample.rarمـن هیچ ندانم که مرا آن که سرشت
از اهل بهشت کرد یا دوزخ زشت
جامی و بتی و بربطی بر لب کشت
این هر سه مرا نقد و تو را نسیه بهشت
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط marychiدرود
دوست عزیز اول برنامه رو توی پروتئوس تست کن.
پایه TX باید یک بمونه و این در واقع stop bit هست که از ارسال قبلی مونده. یعنی در هر ارسال پابه0 میشه که start bit هست بعد دیتا و بعد دوباره 1 که stop bit هست.
https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=im ages&cd=&ved=0ahUKEwi07efHqcXKAhWhh3IKHdJg DM0QjxwIAw&url=https%3A%2F%2Flearn.sparkfun.co m%2Ftutorials%2Fserial-communication%2Fwiring-and-hardware&bvm=bv.112454388,d.bGQ&psig=AFQjC NFlLjan1OQmDed9uY-r06Ok7jwWfA&ust=1453823723165794&cad=rja
مسئله مهمی که باید رعایت کنی baud rate هست. باید کریستالی که تو code vision انتحاب می کنی و طبق اون مثلا 9600 انتخاب میشه، باید همون رو برای میکرو بذاری. یعنی اگه با 16MHz باود ریت 9600 درست شده، کریستال 16M برای میکرو قرار بدی.
مسئله بعدی انتخاب باید (مثلا 9600 ) در ترمینال هست.
گراند ماژول باید به میکرو وصل بشه و tx به rx و برعکس.
قبلش می تونی ماژول رو تست کنی. به این صورت که rx ماژول و tx ماژول رو به هم وصل کنی و تو ترمینال (خود پروتئوس هم ترمینال داره) دیتا بفرستی و باید همون رو دریافت کنی.
اینم برنامه تست به همراه فایل پروتئوس:
http://uploadboy.me/zxui6mjoa39c/sample.rarم_________________نتظرم
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
اگر بخوام خروجی یک سنسور رو بصورتی که تکرار نشه روی ترمینال کدویژن نشون بدم چه دستوری رو باید بکار ببرم من الان می تونم خروجی سنسورم رو که رو میکرو هست توی ترمینال ببینم البته با کمک بچه ها اما تند تند تکرار میشه ... باید چه چیزی رو در آخر برنامه صفر کنم یا چه درستوری رو بنویسم که به جای اینکه رو ترمینال کدویژن ببینم
T=25T=25T=25T=25T=25T=25T=25T=25T=25T=25T=26T=26T= 26T=26T=26T=26T=26
ببینم :
T=25
و زمانی هم که مثلا دما تغییر کرد به جای 25 عدد 26 بیاد
متشکرم_________________نتظرم
دیدگاه
-
پاسخ : برنامه ساده برای تست USART در AVR
نوشته اصلی توسط MSAEED1900اگر بخوام خروجی یک سنسور رو بصورتی که تکرار نشه روی ترمینال کدویژن نشون بدم چه دستوری رو باید بکار ببرم من الان می تونم خروجی سنسورم رو که رو میکرو هست توی ترمینال ببینم البته با کمک بچه ها اما تند تند تکرار میشه ... باید چه چیزی رو در آخر برنامه صفر کنم یا چه درستوری رو بنویسم که به جای اینکه رو ترمینال کدویژن ببینم
T=25T=25T=25T=25T=25T=25T=25T=25T=25T=25T=26T=26T= 26T=26T=26T=26T=26
ببینم :
T=25
و زمانی هم که مثلا دما تغییر کرد به جای 25 عدد 26 بیاد
متشکر
یه متغیر دیگه برای نگه داری مقدار قبلی داشته باش. اگه مقدار جدید که می خونی با اون قبلی متفاوت بود اونوقت داده جدید رو ارسال کن و مقدار قبلی رو هم به مقدار جدید پدیت کن. و دوباره همه چی از نو ....
اینجوری دست کم داده تکراری نمی فرسته . (تعداد ارسال ها خیلی کم میشه)If the wind will not serve, take to the oars
دیدگاه
دیدگاه