سلام من یک ارتباط usart برقرار کردم بین دو میکرو که کریستال هر دو میکرو 8 مگا هرتز و همین طور میزان باود 9600/1200 / 1000 / 500 / (این باود ها را تست کردم ) و بافر در فرستنده و گیرنده از نوع رشته و با ظرفیت 20 کاراکتر هست ( dim k as string * 20 ) و سیم ارتباطی نیز شیلد دار می باشد ولی متاسفانه بعد از ارسال اطلاعات دفعه ی اول اطلاعات به درستی ارسال می شود و دریافت به صورت کامل صورت می گیرد ولی دفعات بعدی دریافت اطلاعات ناقص صورت می گیرد بدین صورت که تعدادی از کاراکتر ها از بین می روند دستگاهی که من دارم طراحی می کنم کلا لنگ این ارتباط یوزارت هستش اگه لطف کنید منو راهنمایی کنید چیکار کنم که یوزرات مشکلی نداشته باشه ممنون می شم فقط این رو هم مطح کنم که وقتی بعد از ارسال اطلاعات در فرستنده پایه int1 )d.3) در مگا 8 ) رو مثلا به مدت 500 میلی ثانیه یک و دوباره صفر می کنم اطلاعات 2 بار ارسال می شن ولی دیگه مشکلی از نظر ارسال در دریافت وجود نداره هرچند بار که اطلاعات ارسال کنم گرفته می شن فقط به ازای هر بار ارسال 2 بار یک برنامه اجزا می شه ممنون می شم اگه راهنمایی کنید :icon_razz: :smile: اگه به من کمک کنید که این بخش از دستگام درست بشه واقعا ممنونتون می شم چون کل دستگاه گیر این بخش ارتباط سریال هست اگه درست نشه هیچ بخشی با بقیه بخش ها هماهنگ نمی شه :sad: :sad:
اطلاعیه
Collapse
No announcement yet.
مشکل در مورد ارتباط usart
Collapse
X
-
پاسخ : مشکل در مورد ارتباط usart
احتمالا خطای ارسال زیاده! یه کاری کن: کریستالاتو عوض کن و به جای هر دو کریستال 11.0592مگاهرتز بذار و باد ریت رو هم روی 9600 که خطا رو صفر میکنه، حالا دوباره تست کن. اگه باز مشکلی بود به خاطر قرارهایی هست که واسه دو طرف گذاشتی یا باید میذاشتی و اینکارو نکردی.. حالا اینو تست کن اگه جواب نداد بگو تا در مورد اونا توضیح بدم.
دیدگاه
-
پاسخ : مشکل در مورد ارتباط usart
نوشته اصلی توسط mehran901سلام من یک ارتباط usart برقرار کردم بین دو میکرو که کریستال هر دو میکرو 8 مگا هرتز و همین طور میزان باود 9600/1200 / 1000 / 500 / (این باود ها را تست کردم ) و بافر در فرستنده و گیرنده از نوع رشته و با ظرفیت 20 کاراکتر هست ( dim k as string * 20 ) و سیم ارتباطی نیز شیلد دار می باشد ولی متاسفانه بعد از ارسال اطلاعات دفعه ی اول اطلاعات به درستی ارسال می شود و دریافت به صورت کامل صورت می گیرد ولی دفعات بعدی دریافت اطلاعات ناقص صورت می گیرد بدین صورت که تعدادی از کاراکتر ها از بین می روند دستگاهی که من دارم طراحی می کنم کلا لنگ این ارتباط یوزارت هستش اگه لطف کنید منو راهنمایی کنید چیکار کنم که یوزرات مشکلی نداشته باشه ممنون می شم فقط این رو هم مطح کنم که وقتی بعد از ارسال اطلاعات در فرستنده پایه int1 )d.3) در مگا 8 ) رو مثلا به مدت 500 میلی ثانیه یک و دوباره صفر می کنم اطلاعات 2 بار ارسال می شن ولی دیگه مشکلی از نظر ارسال در دریافت وجود نداره هرچند بار که اطلاعات ارسال کنم گرفته می شن فقط به ازای هر بار ارسال 2 بار یک برنامه اجزا می شه ممنون می شم اگه راهنمایی کنید :icon_razz: :smile: اگه به من کمک کنید که این بخش از دستگام درست بشه واقعا ممنونتون می شم چون کل دستگاه گیر این بخش ارتباط سریال هست اگه درست نشه هیچ بخشی با بقیه بخش ها هماهنگ نمی شه :sad: :sad:
آیا از وقفه سریال استفاده کردی
آیا تاخیر بین ارسال هات ایجاد کردی
آیا داده هات همیشه 20 بایت هستن
اگه برات ممکنه برنامه یا قسمتی از برنامه رو بزار
من یک ارتباط سریال با وقفه توی همین سایت گزاشتم میتونی از اون استفاده کنی
اگه بخای یک مدل وقفه سریال دارم که خیلی کارایی بالاتری داره اون رو هم میتونم برات بزارم
اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن
دیدگاه
-
ارسال و دریافت ناموفق در ارتباط usart
بچه ها سلام متاسفانه مربوط به کریستال نمی شه برنامه اصلی من خیلی پیچده شده بزارم اینجا باید فقط چند صفحه توضیح بدم در موردش یک نمونه تست نوشتم همین مشکل رو داره به این صورت هست
برنامه فرستنده :
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 500
Config Pind.3 = Output
Config Int0 = Falling
Enable Interrupts
Enable Int0
On Int0 Sw
Dim K As String * 20
Set Portd.2
K = "3021"
Do
Loop
End
Sw:
Printbin K
Set Portd.3
Waitms 500
Reset Portd.3
Return
و برنامه ی گیرنده بدین شکل :
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 500
Config Pind.6 = Output
Config Pind.0 = Input
Set Portd.0
Dim K As String * 20
Do
K = ""
Inputbin K
If Left(k , 2) = "30" Then
Toggle Portd.6
Waitms 500
End If
Loop
End
دفعه ی اول اطلاعات درست ارسال می شه و دوکاراکتر اول شامل عدد 30 هست دفعات بعدی 2 کاراکتر اول 30 نیست چون واکنش نشون نمی ده و در مورد فاصله باید بگم حد اکثر فاصله 30 سانت می تونه تو دستگاه باشه ولی سیم شیلد دار استفاده شده و فکر نمی کنم مشکل از فاصله و نویز باشه چون طبق چیزی که قبلا گفته بودم اگه پایه اینتراپت فعال بشه بعد از ارسال داده ها داده ها دوبار ارسال می شن ولی هر چند بار که ارسال کنیم درست ارسال می شن ممنون از پیگیریتون بچه ها :
منظور از ایجاد وقفه بین ارسال و دریافت که دوستمون گفتن رو خوب متوجه نشدم ولی برنامه گیرنده منتظر دریافت هست تا زمانی که اطلاعات ارسال بشه بالافاصله اطلاعات در یافت می شهاشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است
دیدگاه
-
پاسخ : ارسال و دریافت ناموفق در ارتباط usart
نوشته اصلی توسط mehran901[b]بچه ها سلام متاسفانه مربوط به کریستال نمی شه برنامه اصلی من خیلی پیچده شده بزارم اینجا باید فقط چند صفحه توضیح بدم در موردش یک نمونه تست نوشتم همین مشکل رو داره به این صورت هست
برنامه فرستنده :
دفعه ی اول اطلاعات درست ارسال می شه و دوکاراکتر اول شامل عدد 30 هست دفعات بعدی 2 کاراکتر اول 30 نیست چون واکنش نشون نمی ده و در مورد فاصله باید بگم حد اکثر فاصله 30 سانت می تونه تو دستگاه باشه ولی سیم شیلد دار استفاده شده و فکر نمی کنم مشکل از فاصله و نویز باشه چون طبق چیزی که قبلا گفته بودم اگه پایه اینتراپت فعال بشه بعد از ارسال داده ها داده ها دوبار ارسال می شن ولی هر چند بار که ارسال کنیم درست ارسال می شن ممنون از پیگیریتون بچه ها :
منظور از ایجاد وقفه بین ارسال و دریافت که دوستمون گفتن رو خوب متوجه نشدم ولی برنامه گیرنده منتظر دریافت هست تا زمانی که اطلاعات ارسال بشه بالافاصله اطلاعات در یافت می شه
وقتی برنامه رو طوری مینویسی که تاخیر توش داره مدام باید سرکشی رو ادامه بدی نه اینکه تاخیر 500 میلی بزاری وسطش
پیشنهاد من استفاده از وقفه سریال ه
اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن
دیدگاه
-
مشکل در مورد ارتباط usart
خیلی ممنون که جواب دادین راستش اون waitms 500 میلی ثانیه اصلا مد نظر نیست ( چون برنامه با رسیدن به خط inputbin متوقف می شه تا اطلاعات برسه بعد این خط رد می شه و بعدش هم که رد شد دیگه اطلاعات ارسال نمی شه - پس نیازی کلا به بررسی مدام نیست - تا این که کارش تموم بشه بافر صفر بشه دوباره میاد پشت خط inputbin ) و این وقفه که باعث یک شدن پایه اینتراپت و صفر شدنش می شه باعث می شه اطلاعات 2 بار ارسال بشن و 2 بار هم دریافت بشن بدون کمترین مشکلی !می خواستم بدونم چرا این طور هست و اگه زحمتی نیست می بخشیدا !سورسی اگه دارین در مورد ارتباط سریال یوزارت که برنامه منتظر و گوش بزنگ بمونه تا اطلاعات برسه و اونا رو بررسی کنه اگه بزارین خیلی خیلی ممنون می شم البته اگه لینکی چیزی هم از سایت معرفی کنید بازم ممنون می شم تو اینجام سرچ زدم چیزی که مد نظرم باشه پیدا نکردم در ضمن بگم با کریستال 8 مگ و باود 9600 فقط 0.16% خطا وجود داره که توی پروتیوس هیچوقت به مشکل بر نمی خوره برنامه فقط نمی دونم چرا توی عمل این همه کارای عجیب غریب می کنه !
البته مسئله نویز هم نمی تونه باشه چون همیشه دفعه اول خوب کارم یکنه و اگر بعد از هر ارسال پایه اینتراپت فعال بشه برا یک لحظه دیگه مشکلی پیش نمی یاد ولی طبق چیزی که قبلا گفتم اطلاعات دوبار ارسال می شه ( یک چیز دیگم بگم دوستان برد ها مونتاژ شدن باکریستال 8 مگ دیگه نمی تونم کریستال رو تغییر بدم ! تو پروتیوس با این کریستال مشکلی نداره !!)
اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است
دیدگاه
-
پاسخ : مشکل در مورد ارتباط usart
شما که از وقفه استفاده نکردید
فرض کن اطلاعات در زمان تاخیر 500 میلی اتفاق بیفته اون وقت یک بایت رو از دست دادی
دستور inputbin k روو به دستور زیر تغییر بده
INPUTBIN K , 4
به معنی اینکه 4 بایت دریافت کنه
اگه درست نشد بگو تا برنامه رو برات بزارم
اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن
دیدگاه
-
مشکل در مورد ارتباط usart
lدوست عزیز ممنونم حتما این کارو می کنم ببینم درست می شه یا نه ولی ممکنه یکمی طول بکشه آخه الان یکم سرم شلوغ شده ولی تا چند وقت دیگه حتما شما رو مطلع می کنم که آیا درست شده یانه قربون دستت که جواب دادی :icon_razz: :rolleyes:اشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است
دیدگاه
-
مشکل در مورد ارتباط usart
سلام دوست من با اون روشی که گفتین بازم مشکل وجود داره و بهتر نشده :( :sad: به نظرتون کاری می شه کرد که یک میکرو به میکرو دیگه در فاصله 30 سانت 40 سانت بدون هیچ مشکلی یوزارت انجام بشه و در ارسال و دریافت مشکلی پیش نیاد هر پیشنهادی دارین بگیم ممنون می شم :d :xاشک هایی که پس از هر شکست ریخته میشوند همان عرق هاییست که برای پیروزی ریخته نشده است
دیدگاه
دیدگاه