سلام
چند روزیه دارم روی ارتباط USART بین دوتا میکرو کار میکنم یه برنامه ی ساده نوشتم ( اطلاعات PINB.0 میکرو فرستنده که یا یک یا صفره که توسط کلید معلوم میشه رو با TXD بفرسته میکرو گیرنده با RXD بگیره و یه led روی PORTA.0 روشن کنه ) تو پروتئوس درست کار میکنه اما عملی کار نمیکنه البته یه سری چیزا رو نمیدونم چون مبتدیم.
فایل کل پروژه گذاشتم با یه عکس از مدار عملی که بستم نمیدونم مشکل کجاست که جواب نمیده چون هم از پروگرامر مطمئنم هم از سالم بودن میکروها چون با برنامه ساده امتحانشون کردم چنتا مشکل به نظرم اومد میپرسم و اگه مشکله دیگه ایم رو پروژه بود بهم بگید ممنون :
1 - من میکروهامو (Mega32) گذاشتم روی کریستال داخلی (cksel0=0 و cksel1=0 و cksel2=1 و cksel3=0 ) باید کریستال خارجی استفاده بکنم یا نه ؟ اگه باید استفاده کنم باید برابر هم باشن هر دو کریستال و مقدارشون مهمه با اونی که تو کدویژن تعیین کردم یا نه ؟
2 - یه چیزایی راجب Boud rate و stop bit خوندم ولی زیاد بلد نیستم البته من دست به تنظیماته اونا نزدم . باید تنظیمشون کنم یا پیش فرض درست هستش ؟
3 - چیزی که به نظرم میاد انگار هیچ کاری روی پایه ی TXD میکرو فرستنده انجام نمیشه چه کلید قطع باشه و چه وصل.
لینک عکس پروژه عملی روی برد برد :
http://upload7.ir/imgs/2014-09/06737197754474929998.jpg
لینک فایل کدها و پروتئوس پروژه :
http://s5.picofile.com/file/8142102218/recive_send.zip.html
برنامه فرستنده و گیرنده :
[code][
#include <mega32.h>
#include <stdio.h>
#include <delay.h>
void main(void)
{
DDRB=0x0F;
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
while (1)
{
putchar(PINB.0);
delay_ms(10);
}
}
]
برنامه گیرنده :
چند روزیه دارم روی ارتباط USART بین دوتا میکرو کار میکنم یه برنامه ی ساده نوشتم ( اطلاعات PINB.0 میکرو فرستنده که یا یک یا صفره که توسط کلید معلوم میشه رو با TXD بفرسته میکرو گیرنده با RXD بگیره و یه led روی PORTA.0 روشن کنه ) تو پروتئوس درست کار میکنه اما عملی کار نمیکنه البته یه سری چیزا رو نمیدونم چون مبتدیم.
فایل کل پروژه گذاشتم با یه عکس از مدار عملی که بستم نمیدونم مشکل کجاست که جواب نمیده چون هم از پروگرامر مطمئنم هم از سالم بودن میکروها چون با برنامه ساده امتحانشون کردم چنتا مشکل به نظرم اومد میپرسم و اگه مشکله دیگه ایم رو پروژه بود بهم بگید ممنون :
1 - من میکروهامو (Mega32) گذاشتم روی کریستال داخلی (cksel0=0 و cksel1=0 و cksel2=1 و cksel3=0 ) باید کریستال خارجی استفاده بکنم یا نه ؟ اگه باید استفاده کنم باید برابر هم باشن هر دو کریستال و مقدارشون مهمه با اونی که تو کدویژن تعیین کردم یا نه ؟
2 - یه چیزایی راجب Boud rate و stop bit خوندم ولی زیاد بلد نیستم البته من دست به تنظیماته اونا نزدم . باید تنظیمشون کنم یا پیش فرض درست هستش ؟
3 - چیزی که به نظرم میاد انگار هیچ کاری روی پایه ی TXD میکرو فرستنده انجام نمیشه چه کلید قطع باشه و چه وصل.
لینک عکس پروژه عملی روی برد برد :
http://upload7.ir/imgs/2014-09/06737197754474929998.jpg
لینک فایل کدها و پروتئوس پروژه :
http://s5.picofile.com/file/8142102218/recive_send.zip.html
برنامه فرستنده و گیرنده :
[code][
#include <mega32.h>
#include <stdio.h>
#include <delay.h>
void main(void)
{
DDRB=0x0F;
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
while (1)
{
putchar(PINB.0);
delay_ms(10);
}
}
]
برنامه گیرنده :
کد:
[ #include <mega32.h> #include <stdio.h> #include <delay.h> void main(void) { char a; DDRA=0xFF; UCSRA=0x00; UCSRB=0x10; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; while (1) { a=getchar(); PORTA=a; delay_ms(10); }; } ]
دیدگاه