ايران ويج

نسخه‌ی کامل: ارسال اطلاعات از کامپیوتر به میکرو
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام دوستان
من یک برنامه با میکرو نوشتم که توی این برنامه یک عدد از پورت سریال کامپیوتر فرستاده میشه به صورت hexadecimal و اونطرف با یک Max232 به ttl تبدیل میشه و وارد پورت سریال میکرو میشه . برنامه میکرو هم به صورت زیر هستش

$regfile = "m32def.dat"
$crystal = 1000000
$baud = 1200
Config Portd.6 = Output
Dim A As String * 12
Dim B As Byte
On Urxc Rec_isr
Enable Urxc
Enable Interrupts
Main:
Do
Loop
End

Rec_isr:
Input A
B = Hexval(a)
If B = 255 Then
Set Portd.6
End If
If B = 128 Then
Reset Portd.6
End If

Return
این برنامه دارای وقفه سریال هستش . همونطور که گفتم از کامپیوتر اعداد به صورت hex ارسال میشه . برنامه میکرو همونطور که معلومه اعداد رو دریافت میکنه و رشته تبدیل به عدد میشه ( با دستور hexval) .
ولی چیزی که هستش برنامه کار نمی کنه یعنی من روی برد نتونستم جواب بگیرم .
1- از خروجی کامپیوتر هم مطمئن هستش چون خروجی com کامپیوتر رو به پورت com یک کامپیوتر دیگه وصل کردم و با استفاده از terminal بسکام تونستم اطلاعات رو به شکل صحیح بخونم .
2- از برنامه میکرو هم مطمئن هستم چون هم توی پروتوس جواب داده و هم این که به در قسمت فرستنده ( که قراره کامپیوتر باشه ) یک میکرو گزاشتم که اعداد رو بفرسته به میکرو گیرنده و جواب + داده و کار کرده .
حالا موندم مشکل سر چی هستش . من خودم فکر می کنم مشکل از baud rate باشه
حالا نظر شما دوستان چی هستش.
با تشکر فراوان[/code]
موقع کامایل کردن فیوز بیتهای نوسانساز رو رو 1 مگ قرار دادین؟
باود ریت پورت کام کامپیوتر چقدره؟
جفتشو بذار 9600

برای گرفتن دیتا توس زیر روال وقفه از دستور Inkey استفاده کن

سلام
باود هردو 1200 گذاشتم . مگه میکرو خودش روی نوسان ساز داخلی 1 مگاهرتز ست نیست .
خوب دستور inkey فقط یک کارکتر رو دریافت می کنه ولی دستور input کل رشته رو دریافت میکنه .
چیزی که هستش زمانیکه از میکرو برای ارسال اطلاعات برای میکروی دریافت کننده استفاده می کنم برنامه مشکلی نداره ولی زمانی که از کامپیوتر برای ارسال اطلاعات استفاده می کنم به مشکل می خورم . پس برنامه مشکلی نداره . برنامه کامپیوتر هم مشکلی نداره چون خروجی سریال کامپیوتر رو وصل کردم به پورت سریال یک کامپیوتر دیگه و اطلاعاتی که این کامپیوتر دریافت می کرد کاملا صحیح بود .
من خودم فکر می کنم مشکل توی باود ریت هستش . یکی گفت باید از کریستال 11.0592 مگا هرتز استفاده کنم تا باود ریت میکرو خطا نداشته باشه و دقیق باشه .
حالا این حرف من ابرو ریزی هستش که بگم تاحالا این نوع کریستال به میکرو وصل نکردم اگه فکر میکنید مشکل از اینجا هستش منو توی طریقه تغییر فیوز بیت ها برای این نوع کریستال راهنمایی کنین ( به صورت دقیق)
با تشکر فراوان
خوب اگر رو 1 مگ ست هست که مشکلی نداره
اما به نظر من هم فرکانس رو بالا ببرید و کرستالشو 11059200 بذارین بعد امتحان کنید
باود رو هم بذارین رو 9600
بعد اگر میتونین برنامه رو شبیه سازی کنید و تو سیمولاتور بسکام مقدار رجیستر UBRR , UCSRA,UCSRC رو ببینید چقدره
اگه میشه نحوه اتصال این کریستال رو که گفتین بهم بگین . تاحالا از کرستال خارجی استفاده نکردم . من هم پروگرامر هاتل دارم و هم stk200/300 .
با تشکر
راستی میکروی من مگا 32 هستش
فرقی نمیکنه کریستالی که استفاده میکنید چه فرکانسی داره مقدار خازن ها هم 22 پیکو همیشه خوب جواب داده
[تصویر:  1yg3xk0z6u4mjcyhh3i4.jpg]

فرقی نمیکنه از چه پروگرامری استفاده میکنی
چه با هاتل چه با خود بسکام فقط باید فیوز بیت های مربوط به cksel رو با توجه به کریستالتون تنظیم کنید

روی فرکانس کم نباشه .فکر کنم باید روی medium frequency باشه
با تنظیم فیوز بیتهای SUT هم میتونی زمان استارت آم میکرو رو تنظیم کنید 11 باشه بهتره
تا یه زمانی مشخص ، میکرو ریست میمونه تا سیتم کلاک میکرو و تغذیه به صبات خودش برسه.خصوصا تغذیه
میرم تست می کنم جوابشو میزارم
موقع پروگرام کردن نباید کریستال وصل باشه؟
هاتل رو که میدونم خودش این کارو اوتومات میکنه
ولی stk200/300چی اونم همینطوره؟
سلام دوستام
رفتم تست کردم یک کریستال 7.3728 مگا هرتز گذاشتم مشکلم از بابت باود ریت حل شد و تا باود 57600 تونستم ارسال و دریافت داشته باشم.
ولی یک مورد هستش که فقط با دستور inkey تونستم فقط یک کارکتر بگیرم و با دستور Input نتونسستم کارکتری دریافت کنم در صورتی که در اتصال میکرو با میکرو از دستور Input استفاده می کنم و به درستی عمل می کنه ولی توی ارتباط کامپیوتر با میکرو زمانی که می خام اطلاعات وارد شده به میکرو رو بخونم نمی تونم از دستور input استفاده کنم و فقط باید با inkey اونم فقط یک کارکتر رو دریافت کنم در صورتی که من می خام چهار کارکتر دریافت کنم .
به نظر شما باید کارکتر ها رو به صورت تک تک کنار هم بچسبونم یا این که دستور خاصی برای این کار هستش .
با تشکر
سلامی دوباره
چرا در ارتباط سریال میکرو با میکرو میتونم از دستور input استفاده کنم ولی در هنگام ارتباط کامپیوتر با میکرو نمی تونم و حتما باید با دستور Inkey این کار رو انجام بدم .
من می خوام یک کلمه دریافت کنم نه یک کارکتر
سلام
هر کاری میکنم با دستور Input نمی تونم در ارتباط کامپیوتر با میکرو یک کلمه رو دریافت کنم . ولی با دستور inkey و Udr می تونم ولی فقط یک کارکتر . به نظر شما مشکل کجاست Confused
صفحه‌ها: 1 2