امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 1
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل عجیب با برنامه بسکام
نویسنده پیام
دراکولا آفلاین
تازه وارد

ارسال‌ها: 15
موضوع‌ها: 8
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 4
( 9 تشکر در 3 ارسال )
ارسال: #1
مشکل عجیب با برنامه بسکام
با سلام به همه عزیزان

یک برنامه بسکام هست که مربوط به atmega32 و ds1307 هستش که خیلی کوتاه و ابتداییه و فقط شامل خوندن ثانیه و دقیقه و ساعت میشه .

اما مشکل اینجاست که به محض اینکه میخوام مقادیر رو بصورت مرتب شده (format شده) روی lcd نمایش بدم برنامه هنگ میکنه و بعد از آزمایش و حذف
واضافه کردن معلوم شد مشکل از این خط هست(با برداشتن این خط مشکل رفع میشه)

'Hourr = Format(hourr , "00") : Minu = Format(minu , "00") : Seco = Format(seco , "00")
در صورتی که این خط رو اضافه کنم صفحه lcd هیچی نشون نمیده و حتی cls هم نمیشه که معلومه تو همین خط هنگ میکنه .

(توی مدار از پایه sqw/out رو بصورت 1 هرتز تنظیم کردم و به عنوان اینتراپت دهنده به پایه اینتراپت 0 مگا32 دادم )

این هم کل برنامه :

کد:
Enable Interrupts
Enable Int0
Config Int0 = Falling
On Int0 Main
Config Sda = Portd.6
Config Scl = Portd.5
Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim Seco As String * 2
Dim Minu As String * 2
Dim Hourr As String * 2
Const Ds1307w = 208
Const Ds1307r = 209


I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte 0
I2cwbyte 0
I2cwbyte 0
I2cwbyte 0
I2cwbyte 0
I2cwbyte 0
I2cwbyte 0
I2cwbyte 16
I2cstop

Do : Loop
End


Main:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Nack
I2cstop
Waitms 10
_hour = Makedec(_hour)
_min = Makedec(_min)
_sec = Makedec(_sec)
Hourr = Str(_hour)
Minu = Str(_min)
Seco = Str(_sec)
'Hourr = Format(hourr , "00") : Minu = Format(minu , "00") : Seco = Format(seco , "00")
Cls : Lcd Hourr ; ":" ; Minu ; ":" ; Seco
Return
۰۵-مرداد-۱۳۹۱, ۲۱:۰۳:۳۱
ارسال‌ها
پاسخ
abbasalifix غایب
کاربر با تجربه
****

ارسال‌ها: 1,394
موضوع‌ها: 82
تاریخ عضویت: دى ۱۳۸۸

تشکرها : 1496
( 2198 تشکر در 1065 ارسال )
ارسال: #2
RE: مشکل عجیب با برنامه بسکام
بین فرمان DO و LOOP باید یه سر فرمان داشته باشین و گرنه یه حلقه بینهایت بوجود میاد که باقی برنامه رو اجرا نمیکنه
۰۶-مرداد-۱۳۹۱, ۰۰:۱۴:۱۱
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #3
RE: مشکل عجیب با برنامه بسکام
نقل قول: بین فرمان DO و LOOP باید یه سر فرمان داشته باشین و گرنه یه حلقه بینهایت بوجود میاد که باقی برنامه رو اجرا نمیکنه

نه مشكلي ندارهه ، برنامه ي ايشون بقيه اي ندارهه ، سيستم اجراش وقفه اي هست.

-----------------------
نقل قول: اما مشکل اینجاست که به محض اینکه میخوام مقادیر رو بصورت مرتب شده (format شده) روی lcd نمایش بدم برنامه هنگ میکنه و بعد از آزمایش و حذف
واضافه کردن معلوم شد مشکل از این خط هست(با برداشتن این خط مشکل رفع میشه)

'Hourr = Format(hourr , "00") : Minu = Format(minu , "00") : Seco = Format(seco , "00")

تا حالا سعي نكرم متغيير از نوع String رو روي LCD نشون بدم !
نمي دونم درست هست يا نه !!
در help بسكام هم فقط متغيير عددي و Constant در مثال نمونه براي دستور LCD امتحان كردهه.
شما يه برنامه ي معمولي بنويس و سعي كن يه متغيير String رو روي LCD نشون بدي ، ببين اصلا جواب مي دهه يا نه .
خبرش رو بدهه تا ادامه رو بگم.

موفق باشي.

۰۶-مرداد-۱۳۹۱, ۰۱:۵۰:۵۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : abbasalifix
دراکولا آفلاین
تازه وارد

ارسال‌ها: 15
موضوع‌ها: 8
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 4
( 9 تشکر در 3 ارسال )
ارسال: #4
RE: مشکل عجیب با برنامه بسکام
(۰۶-مرداد-۱۳۹۱, ۰۱:۵۰:۵۷)sharin نوشته است:
نقل قول: بین فرمان DO و LOOP باید یه سر فرمان داشته باشین و گرنه یه حلقه بینهایت بوجود میاد که باقی برنامه رو اجرا نمیکنه

نه مشكلي ندارهه ، برنامه ي ايشون بقيه اي ندارهه ، سيستم اجراش وقفه اي هست.

-----------------------
نقل قول: اما مشکل اینجاست که به محض اینکه میخوام مقادیر رو بصورت مرتب شده (format شده) روی lcd نمایش بدم برنامه هنگ میکنه و بعد از آزمایش و حذف
واضافه کردن معلوم شد مشکل از این خط هست(با برداشتن این خط مشکل رفع میشه)

'Hourr = Format(hourr , "00") : Minu = Format(minu , "00") : Seco = Format(seco , "00")

تا حالا سعي نكرم متغيير از نوع String رو روي LCD نشون بدم !
نمي دونم درست هست يا نه !!
در help بسكام هم فقط متغيير عددي و Constant در مثال نمونه براي دستور LCD امتحان كردهه.
شما يه برنامه ي معمولي بنويس و سعي كن يه متغيير String رو روي LCD نشون بدي ، ببين اصلا جواب مي دهه يا نه .
خبرش رو بدهه تا ادامه رو بگم.

موفق باشي.

نه مشکلی نداره متغیر نوع بایتی تعریف کردم و درست مثل همین برنامه تبدیلش کردم به استرینک و فرمتش کردم بدون هیچ مشکلی رو lcd نمایش داد.
۰۶-مرداد-۱۳۹۱, ۱۷:۴۲:۳۷
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #5
RE: مشکل عجیب با برنامه بسکام
OK. در تستي كه زديد در روال وقفه كه اين عمليات رو انجام نداديد؟
شما همين كدهاي روال وقفه رو بذار در do_loop در تنه ي اصلي برنامه.
در روال وقفه i=1 بشه و برگرده.
در تنه ي اصلي برنامه داخل DO_Loop يه شرط بذاريد كه اگر i=1 اون موقع اون كارهارو انجام بده و در آخريد خط i=0 و END IF .
اين رو هم تست كنيد و خبرش رو بديد. ( در ضمن هر مرحله كه تست مي زنيد كدها رو بذاريد كه چك بشه )

۰۶-مرداد-۱۳۹۱, ۱۷:۵۶:۳۴
وب سایت ارسال‌ها
پاسخ
دراکولا آفلاین
تازه وارد

ارسال‌ها: 15
موضوع‌ها: 8
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 4
( 9 تشکر در 3 ارسال )
ارسال: #6
RE: مشکل عجیب با برنامه بسکام
(۰۶-مرداد-۱۳۹۱, ۱۷:۵۶:۳۴)sharin نوشته است: OK. در تستي كه زديد در روال وقفه كه اين عمليات رو انجام نداديد؟
شما همين كدهاي روال وقفه رو بذار در do_loop در تنه ي اصلي برنامه.
در روال وقفه i=1 بشه و برگرده.
در تنه ي اصلي برنامه داخل DO_Loop يه شرط بذاريد كه اگر i=1 اون موقع اون كارهارو انجام بده و در آخريد خط i=0 و END IF .
اين رو هم تست كنيد و خبرش رو بديد. ( در ضمن هر مرحله كه تست مي زنيد كدها رو بذاريد كه چك بشه )

ممنون از کمکتون مشکل از کامپایلر بود من با ورژن های قدیمی کار میکردم

امروز با ورژن 2 کامپایل کردم مشکل حل شد. Happy
۰۶-مرداد-۱۳۹۱, ۱۸:۳۷:۰۰
ارسال‌ها
پاسخ
alinavidy آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 0
تاریخ عضویت: دى ۱۳۹۰

تشکرها : 25
( 0 تشکر در 0 ارسال )
ارسال: #7
RE: مشکل عجیب با برنامه بسکام
ا سلام
من یه مشکل در برنامه نویسی بسکام avr دارم اگه کسی بتونه مشکل من رو حل کنه ممنونش میشم.12:
من یه پروژه ای دارم که میخوام یه سری اطلاعات رو نگه داره و با قطع برق(ریست میکرو) اطلاعاتش پاک نشه .... برای این کار هم رفتم از eeprom استفاده کردم که بایدفایل eep رو که bascom در خروجیش میده رو باید رو میکرو پروگرام کنم. ولی متاسفاته وقتی که کامپیلر میکنمbascom یه سری فایل رو میده(hex,...) ولی فایل eep رو بهم نمیده یه نمونه برنامه در هلپ بسکام گذاشته بود که وقتی اون رو کامپایل میکردم eep رو بهم میداد...
تو اینترنت هم یه سری نمونه گذاشته بود که اونها هم فایل eep نمیداد...
نمیدونم چی کار کنم . شاید یه سری چیزا رو رعایت نکرده ام .... البته بسکام هم هیچ اروری نمیده
من خواهش میکنم از کسایی که با ای حافظه کار کرده کند و جئاب گرفته اند و اطلاعاتی در این مورد دارند به من کمک کنند12FD:s
(آخرین ویرایش در این ارسال: ۱۴-شهریور-۱۳۹۱, ۱۸:۱۳:۴۳، توسط alinavidy.)
۱۳-شهریور-۱۳۹۱, ۲۲:۵۱:۵۳
ارسال‌ها
پاسخ
avr65 آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: خرداد ۱۳۹۰

تشکرها : 0
( 4 تشکر در 1 ارسال )
ارسال: #8
RE: مشکل عجیب با برنامه بسکام
(۱۳-شهریور-۱۳۹۱, ۲۲:۵۱:۵۳)alinavidy نوشته است: ا سلام
من یه مشکل در برنامه نویسی بسکام avr دارم اگه کسی بتونه مشکل من رو حل کنه ممنونش میشم.12:
من یه پروژه ای دارم که میخوام یه سری اطلاعات رو نگه داره و با قطع برق(ریست میکرو) اطلاعاتش پاک نشه .... برای این کار هم رفتم از eeprom استفاده کردم که بایدفایل eep رو که bascom در خروجیش میده رو باید رو میکرو پروگرام کنم. ولی متاسفاته وقتی که کامپیلر میکنمbascom یه سری فایل رو میده(hex,...) ولی فایل eep رو بهم نمیده یه نمونه برنامه در هلپ بسکام گذاشته بود که وقتی اون رو کامپایل میکردم eep رو بهم میداد...
تو اینترنت هم یه سری نمونه گذاشته بود که اونها هم فایل eep نمیداد...
نمیدونم چی کار کنم . شاید یه سری چیزا رو رعایت نکرده ام .... البته بسکام هم هیچ اروری نمیده
من خواهش میکنم از کسایی که با ای حافظه کار کرده کند و جئاب گرفته اند و اطلاعاتی در این مورد دارند به من کمک کنند12FD:s

برای حافظه eeromمشکل اساسی سر ادرس خونه حافطه است از ای استفاده کنید
کد:
Dim I As Byte
Dim I_eerom As Eram Byte

Gosub Eeprom_load
Gosub Display_lcd_i

Do
   If Key_up = 0 Then
      Incr I
      Gosub Eeprom_save
      Gosub Display_lcd_i
   End If
   If Key_down = 0 Then
      Decr I
      Gosub Eeprom_save
      Gosub Display_lcd_i
   End If
   Waitms 300
Loop

End


'*********************************************
Display_lcd_i:
   Cls : Lcd "I= " ; I
Return

'*********************************************
Eeprom_load:
   I = I_eerom
Return

'*********************************************
Eeprom_save:
   I_eerom = I
Return
(آخرین ویرایش در این ارسال: ۱۹-اردیبهشت-۱۳۹۳, ۲۲:۳۹:۲۳، توسط behzady.)
۱۹-اردیبهشت-۱۳۹۳, ۲۲:۰۳:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, a.mehran, alinavidy


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل در پاک کردن برنامه میکرو Salam7 1 398 ۲۹-بهمن-۱۴۰۰, ۲۲:۵۰:۴۴
آخرین ارسال: 1نفر
  [سوال] خواندن داده های یک فایل روی هارد در برنامه بسکام Ambassador 1 739 ۲۸-تير-۱۳۹۹, ۱۶:۱۴:۱۴
آخرین ارسال: Ambassador
  مشکل برنامه تایمر با بیسکام soy1345 7 2,026 ۲۲-فروردین-۱۳۹۸, ۲۰:۴۸:۰۶
آخرین ارسال: 1نفر
  مشکل با eeprom بسکام کمک sky_man847 2 4,380 ۱۲-مهر-۱۳۹۷, ۰۰:۴۷:۰۸
آخرین ارسال: lrn1380
  [سوال] کانتر در بسکام questnet 7 3,486 ۱۲-مرداد-۱۳۹۷, ۰۱:۵۵:۵۴
آخرین ارسال: questnet
  مشکل در کار با تایمر 1 در بسکام klick 3 4,535 ۳۰-بهمن-۱۳۹۵, ۰۴:۰۴:۴۲
آخرین ارسال: omid_phoenix
  افکت کم نور و پر نور شدن تدریجی با بسکام؟ رسول21 19 18,305 ۲۱-بهمن-۱۳۹۵, ۱۴:۲۹:۴۲
آخرین ارسال: hadikh73
  راهنمایی برای حل مشکل برنامه در بسکام fedagh 2 3,420 ۱۲-دى-۱۳۹۵, ۱۸:۳۰:۵۹
آخرین ارسال: fedagh
Question [فوری] اتصال lcd گرافیکی به پایه های دلخواه میکرو در بسکام behzadsen 4 4,337 ۰۵-دى-۱۳۹۵, ۱۵:۲۵:۳۰
آخرین ارسال: behzadsen
  ولتمتر با AVR و بسکام electroavr 163 141,219 ۰۹-شهریور-۱۳۹۵, ۰۹:۱۹:۲۴
آخرین ارسال: alimogmov

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS