(۳۰-اسفند-۱۳۹۱, ۱۱:۱۶:۴۳)mehdiit نوشته است: (۱۵-شهریور-۱۳۸۸, ۱۲:۴۳:۴۳)محمد حسینی نوشته است: (۱۵-شهریور-۱۳۸۸, ۱۱:۰۰:۵۲)a_azari نوشته است: سلام
من با codevision کار میکنم.
می خوام با میکرو ارتباط سریال برقرار کنم ولی تا حالا اینکارو نکردم، می خوام یه سری دستورات رو بفرستم روی پورت و جوابشونو از پورت بخونم. از codewizard که استفاده میکنم دستوراتی که میاره رو اصلا متوجه نمی شم و نمی دونم کدوم قسمت برنامه دستورات اضافی خودمو بنویسم!!
کسی می تونه یه توضیح کام برام بده؟
اگه تو کدویزارد فقط ارسال رو قعال کنی (بدون وقفه) که چیزی اضافه نمی کنه. فقط تنظیمات رجیستر های سریال و کتابخونه stdio برای دستورهای ارسال داده ...
خیلی راحت با دستورهای puts ، putsf ، putchar و ... میتونی دیتا ارسال کنی.
ولی اگه دریافت رو هم تو کدویزارد فعال کنی (با وقفه) یه بلوک وقفه (اینتراپت) میسازه که هر وقت دیتا از پورت بیاد این وقفه قعال میشه و دیتای دریافتی تو متغیر data میره. اینجا دیگه هر طور خواستی باید کد بنویسی و اطلاعات رو جمع کنی.
مثلا من اینو نوشتم اطلاعات رو میگیره و تو rx_buffer جمع می کنه تا به پایان خط برسه.
کد:
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (data == '\n')
{
rx_buffer[rx_wr_index]='\0';
rx_wr_index=0;
p = 1;
rx_counter=0;
rx_buffer_overflow=1;
return;
}
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
خسته نباشید آقای حسینی
این کدی که زحمت کشیدید نوشتید رو کجای برنامه باید نوشت یا فراخونی کرد؟
بعد از اینکه وقفه ی یوزارت رو از طریق کدویزارد فعال کردیم، چطوری باید اطلاعاتی که میاد روی پورت کام رو ببینم؟
سلام
برای اطمینان از صحت ارسال داده ها می تونید یه بازر به پایه فرستنده max232 وصل کنید و صدای پالس های دریافتی رو بشنوید
برای مشاهده داده های دریافتی از کامپیوتر هم میتوانید از hyper terminal سیستمتون استفاده کنید.