من که هنوز یه سال کار داره تا مهندس شم! مهندس تریپ 3000!
من با bascom برنامه رو نوشتم.با دستور crystal=8000000 $ هم فرکانس کریستال رو روی داخلی 8 مگ گذاشتم
الان حتی پایین تر هم آوردم روی 300! خطا هم شد 0.02 درصد!! ولی بازهم همچنان کاراکتر های فضایی دریافت میکنم!
فیوز بیت رو هم نمیتونم تغییر بدم!پیش فرض روی یک مگه.
یکی به داد من برسه!
وقتی فیوزبیت رو نمی تونی تغییر بدی پس تو برنامه هر کریستالی تعیین کنی بی معنی خواهد بود !
چون تا وقتی تو فیوزبیت ها عوض کنی , فرکانس میکرو رو یه مگ داخلی خواهد بود !
پس تو برنامه هم رو یه مگ بذار !
الان با برنامه ای که نوشتی بنویسی WAIT 8
می بینی که به جای هشت ثانیه فقط یه ثانیه توقف می کنه !
تو باوود هم الان چنین مشکلی وجود داره و اگه شما باوود 9600 انتخاب کردی در اصل چون کریستال رو اشتباه گذاشتی باوود ارسالی به کامپیوتر 1200 هستش !!!!
تو برنامه کریستال رو یه مگ بذاری باید مشکلت حل بشه !
برای تنظیمات کامپیوتر هم می تونی طبق این بذاری :
http://www.iranled.com/node/76
در ضمن من لیسانس می گیرم و نه مهندسی !
مهندس شمایی !
wow!!!
ای ول مهندس! گذاشتم روی یک مگ درست شد!!!!مرسی...مرسی!
حالا یه سوال دیگه!
من از ساده ترین نوع پروگرامر که فکر کنم stk300 باشه استفاده میکنم.چطور میشه فیوز بیت رو تغییر داد؟!
مهندس این کتاب رو بگیر به دردت می خوره !
http://forum.iranled.com/showthread.php?tid=10869
موقع پروگرامر کردن گزینه MANUAL PROGRAM رو بزن !
در تب LOCK AND FUSE BIT می تونی فیوز بیت ها رو عوض کنی !
فیوز بیت کرستال هم تابلویه و نوشته یه مگ داخلی و می تونی هر چی دوست داشتی بذاری !
نکته : هر فیوز بیت رو عوض کردی بعدش در سمت راست گزینه فعال شده ... WRITE رو بزن !
تا تغییرات داده شده اعمال بشه !
مهم : مواظب باش هر چیو عوض می کنی بدونی چیه !
یک وقتی سریال ISP رو غیر فعال نکنی که پروگرامر دیگه میکرو رو نمی شناسه !
همینطور میکرو رو قفل نکنی !
کار منم تقریبا راه افتاد!
کلاک رو 1 کردم.
سرعت رو 9600 گذاشته بودم کار نمی کرد. خطا منفی 7 بود! فکر می کردم این خوبه دیگه اصلا خطا نداره.
برگشتم 2400 گذاشتم خطا شد مثیت 0.2
تنظیمات مبدل هم تغییر دادم به 2400
خلاصه درست شد! دو طرف با سرعت 2400 کار می کنن! (راحت شدم!)
خطا منفی یعنی چی؟ خوبه یا بد!؟ فکر میکنم این حالت یعنی میکرو نمی تونه با اون سرعت اطلاعات بفرسته درسته؟(باید کریستال بره بالاتر)
اما یه مشکل دیگه هست! هرچی از طرف کامپیوتر می فرستم اصلا وقفه مربوط به دریافت فعال نمیشه! یعنی هیچی نمی گیره!! پیشنهاد می کنین چیکار کنم؟
رفتم سراغ هایپر ترمینال اصلا نمی شد هیچی توش بنویسم! اطلاعات از طرف میکرو می گرفت ولی من نمی تونستم چیزی بنویسم! چرا؟!
(۰۸-شهریور-۱۳۸۸, ۲۱:۲۰:۰۷)اینم یه خوش تیپ دیگه در جوابش نوشته بود نوشته است: [ -> ]ممنون.
وقفه فکر نمی کنم مشکل داشته باشه. چون همین کدو بین دو تا میکرو امتحان کردم. وقفه سراسری هم فعاله. حالا باشه بدون وقفه و روش های دیگه هم امتحان می کنم ببینم چی میشه ...
می خواستم بدونم با خطای منفی هم کار می کنه یا نه؟! چون اینجا که کار نکرد
البته نه به خوش تیپی بقیه ایرانویجی ها !
آقای هادی خان این علی آقا بیخود که به جنبعالی سفارش نکرد! محدود نکن مهندس ما رو! نمی بینی چطوری داره تو این بخش جان فشانی می کنه؟!!
نشد !!
دریافت نمیشه! این کد رو نوشتم ...
کد:
delay_ms (500);
PORTA.0 = 1;
putsf("Hello World! testing serial port ... !!");
PORTA.1 = 1;
ch = getchar();
PORTA.2 = 1;
داده که دریافت بشه باید از دستور getchar بگذره و ال ای دی سوم هم روشن بشه! ولی فقط دو تای اول روشن میشه. سومی روشن نمیشه!
ولت سنج وصل کردم به پین 3 پورت سریال. اطلاعات که میفرستادم نگاه کردم ولت سنج هیچ تغییری نمی کرد. باید یه لحظه ولتاژش زیاد بشه نه؟ برای اون پایه پورت که امتحان می کردم اینطوری میشد.
چیکار کنم؟!
کسی نمی خواد یه کمکی در راه خدا بکنه ؟!
مثل اینکه مشکل از طرف کامپیوتره! چون من پورت کام رو وصل کردم به یه ماژول htmr از نوع rs232 (از اونایی که روش max232 داره) وقتی از طرف کامپیوتر اطلاعات میفرستادم ال ای دی ماژول روشن نمی شد!
چیکار کنم؟ مگه میشه پورت دریافت کنه ولی ارسال نکنه؟ اتصال پین هم تست کردم برقراره!