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

ارسال‌ها: 798
موضوع‌ها: 67
تاریخ عضویت: آذر ۱۳۸۵

تشکرها : 849
( 3655 تشکر در 908 ارسال )
ارسال: #1
مولتی ترد نویسی روی میکرو
چطوری میشه همزمان چند پروسیجر مختلف را استفاده کرد ؟
قصد دارم از یک ورودی مثلا I2C یا سریال مقادیر وارد شده را بخونم ،در یک متغییر عمومی ذخیره کنم
همزمانی که دارم این اطلاعات را میخونم بتونم مقداری که توی اون متغییر ذخیره شده مثلا یک عدد است را روی 7Segment هم نمایش بدهم
از Timer0 که استفاده میکنم اگه wait استفاده کنم ظاهرا روی کل برنامه تاثیر میذاره ، چطوری میتونه برنامه نویسیی روی میکرو را به صورت multithread یا همزمانی پروسیجرها انجام بدم ؟

پیوست : زبان bascom

وقتی میگمConfig Timer0 = Timer , Prescale = 1024
تقریبا بهم کار میده ولی چشمک زدن خیلی سریغ سون سگمنت تقریبا به چشم میاد ، وقتی پریسکار را میزارم کمتر از 256 کلا قاط میزنه و یه چند دقیقه طول میکشه تا پروسیجر بعدی که اصلا توی این تایمر هم نوشته نشده اجرا بشه ، باید چیکار کنم ؟ که هم دسترسی سریع به قطع و وصل کردن پایه هاس 7seg داشته باشم هم دیتا را موقع اومدن از دست ندم ؟
مگه هرچی پریسکال را بیاریم پائین سریعتر حلقه این تایمر نباید اجرا بشه ؟چرا برعکسه ؟

کد:
$regfile = "m16def.dat"
$crystal = 8000000

Config Timer0 = Timer , Prescale = 1024                     'evry 65ms
Enable Interrupts
Enable Timer0
On Timer0 Timer_label
Start Timer0

P7g Alias Porta
Config P7g = Output

Dim Ms As Integer

Declare Sub Offall()
Declare Sub Test()
Declare Sub L0()
Declare Sub L1()
Declare Sub L2()
Declare Sub L3()
Declare Sub L4()
Declare Sub L5()
Declare Sub L6()
Declare Sub L7()
Declare Sub L8()
Declare Sub L9()
Declare Sub Lm()


Leda Alias P7g.0
Ledb Alias P7g.1
Ledc Alias P7g.2
Ledd Alias P7g.3
Lede Alias P7g.4
Ledf Alias P7g.5
Ledg Alias P7g.6
Ledh Alias P7g.7


Ms = 350
Set Portb.0
Set Portb.1

Do

Call Test()

Loop
End

Sub Offall()
Reset Leda
Reset Ledb
Reset Ledc
Reset Ledd
Reset Lede
Reset Ledf
Reset Ledg
Reset Ledh


End Sub

Sub L0()
Call Offall()
   Set Leda
   Set Ledb
   Set Ledc
   Set Ledd
   Set Lede
   Set Ledf
End Sub

Sub L1()
Call Offall()
   Set Ledb
   Set Ledc
End Sub

Sub L2()
Call Offall()
   Set Leda
   Set Ledb
   Set Ledd
   Set Ledg
   Set Lede
End Sub

Sub L3()
Call Offall()
   Set Leda
   Set Ledb
   Set Ledg
   Set Ledc
   Set Ledd
End Sub

Sub L4()
Call Offall()
   Set Ledf
   Set Ledg
   Set Ledb
   Set Ledc
End Sub

Sub L5()
Call Offall()
   Set Leda
   Set Ledf
   Set Ledg
   Set Ledc
   Set Ledd
End Sub


Sub L6()
Call Offall()
   Set Leda
   Set Ledf
   Set Lede
   Set Ledd
   Set Ledc
   Set Ledg
End Sub

Sub L7()
Call Offall()
   Set Leda
   Set Ledb
   Set Ledc
End Sub

Sub L8()
Call Offall()
   Set Leda
   Set Ledb
   Set Ledc
   Set Ledd
   Set Lede
   Set Ledf
   Set Ledg
End Sub


Sub L9()
Call Offall()
   Set Leda
   Set Ledb
   Set Ledc
   Set Ledf
   Set Ledg
End Sub

Sub Lm()
   Set Ledh
End Sub

'=========
  Sub Test()
  Call L0()
Waitms Ms
Call L1()
Waitms Ms
Call L2()
Waitms Ms
Call L3()
Waitms Ms
Call L4()
Waitms Ms
Call L5()
Waitms Ms
Call L6()
Waitms Ms
Call L7()
Waitms Ms
Call L8()
Waitms Ms
Call L9()
Waitms Ms
'Call Lm()

Waitms 500
Reset Porta.0
Reset Porta.1
Reset Porta.2
Reset Porta.3
Reset Porta.4
Reset Porta.5
Reset Porta.6
'Reset Porta.7
Waitms 100

  End Sub

'=========================
Timer_label:
    Set Ledh
    Waitms 10
    Reset Ledh
   Waitms 10


Return



[quote][/quote]

[تصویر:  sajdelogo.gif]
(آخرین ویرایش در این ارسال: ۲۱-اردیبهشت-۱۳۸۹, ۱۱:۰۹:۳۸، توسط joker.)
۲۱-اردیبهشت-۱۳۸۹, ۱۰:۵۶:۱۲
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #2
RE: مولتی ترد نویسی روی میکرو
مهندس کاری نداره !

با وقفه و تایمرها !

البته در همین حد و میکرو در اون حدی نیست که چند پروسه رو همزمان اجرا کنه !!
۲۱-اردیبهشت-۱۳۸۹, ۱۰:۵۹:۰۶
ارسال‌ها
پاسخ
joker آفلاین
کاربر با تجربه
****

ارسال‌ها: 798
موضوع‌ها: 67
تاریخ عضویت: آذر ۱۳۸۵

تشکرها : 849
( 3655 تشکر در 908 ارسال )
ارسال: #3
RE: مولتی ترد نویسی روی میکرو
(۲۱-اردیبهشت-۱۳۸۹, ۱۰:۵۹:۰۶)t3r!p3000 نوشته است: مهندس کاری نداره !

با وقفه و تایمرها !

البته در همین حد و میکرو در اون حدی نیست که چند پروسه رو همزمان اجرا کنه !!

یه سمپل بی زحمت......

[تصویر:  sajdelogo.gif]
۲۱-اردیبهشت-۱۳۸۹, ۱۱:۱۰:۱۷
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #4
RE: مولتی ترد نویسی روی میکرو
http://www.iranled.com/forum/showthread....#pid111795
۲۱-اردیبهشت-۱۳۸۹, ۱۱:۲۷:۲۱
ارسال‌ها
پاسخ
تشکر شده توسط : joker
joker آفلاین
کاربر با تجربه
****

ارسال‌ها: 798
موضوع‌ها: 67
تاریخ عضویت: آذر ۱۳۸۵

تشکرها : 849
( 3655 تشکر در 908 ارسال )
ارسال: #5
RE: مولتی ترد نویسی روی میکرو
(۲۱-اردیبهشت-۱۳۸۹, ۱۱:۲۷:۲۱)t3r!p3000 نوشته است: http://www.iranled.com/forum/showthread....#pid111795


حجی مطمئنی این همزمانه ؟ ظاهرا با کلید S هربار توی یک مد میره

[تصویر:  sajdelogo.gif]
۲۱-اردیبهشت-۱۳۸۹, ۱۷:۴۱:۰۸
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #6
RE: مولتی ترد نویسی روی میکرو
حاجی منظور من این نبود که هر لحظه فقط یه کارو انجام میده !

مثلا مد فرکانس متر رو در نظر بگیر :
با تایمر دو زمان دقیق یه ثانیه ساخته شده تا پالس ها رو تو همین مدت بشمره !
تو حلقه اصلی برنامه دیتای دریافتی از کلیدها گرفته میشه ! ( واسه رفتن به مد بعدی و ... )
تو وقفه تایمر صفر هم سون سگمنت ها رفرش میشن !
از تایمر یک و وقفه اش هم برای شمارش پالس های دریافتی استفاده شده !!
۲۱-اردیبهشت-۱۳۸۹, ۱۸:۰۰:۱۸
ارسال‌ها
پاسخ
تشکر شده توسط : joker


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question [سوال] کمک در برنامه نویسی دور موتور خودرو HPower 6 2,592 ۲۵-آبان-۱۳۹۷, ۲۲:۰۳:۵۷
آخرین ارسال: alimogmov
  برنامه نویسی AVR به روش فلوچارتی با نرم افزار FLOWCODE AVR V3 koorosh.k 8 12,641 ۲۴-آذر-۱۳۹۵, ۲۲:۴۶:۰۸
آخرین ارسال: 1نفر
  تست میکرو saber.k 10 14,048 ۰۹-شهریور-۱۳۹۵, ۰۲:۰۹:۲۷
آخرین ارسال: yadulla fazel
  سوالهای برنامه نویسی با کامپایلر BASCOM EBKA 242 157,509 ۱۸-خرداد-۱۳۹۵, ۲۰:۱۸:۲۴
آخرین ارسال: hassan721
  برنامه نویسی بیسکام soy1345 17 13,270 ۲۳-مرداد-۱۳۹۴, ۱۷:۱۷:۵۶
آخرین ارسال: MN-123
  آموزش برنامه نویسی ربات مسیریاب kamran0080 3 10,199 ۲۶-تير-۱۳۹۴, ۱۷:۲۵:۳۶
آخرین ارسال: sona2
Exclamation کمک در مورد برنامه نویسی avr . saeedsniper2 5 3,585 ۱۵-اردیبهشت-۱۳۹۴, ۰۹:۲۰:۳۳
آخرین ارسال: kimiafars
  سوال در مورد انتخاب سنسور و برنامه نویسی dj kaka 10 6,397 ۰۲-اسفند-۱۳۹۳, ۰۹:۱۱:۰۳
آخرین ارسال: dj kaka
  کمک در برنامه نویسی mehdi_mecha 1 2,363 ۰۸-بهمن-۱۳۹۳, ۱۵:۵۸:۰۵
آخرین ارسال: a.mehran
  میکرو و ال ای دی dostane 4 3,376 ۲۴-شهریور-۱۳۹۳, ۱۶:۳۹:۰۰
آخرین ارسال: a.mehran

پرش به انجمن:


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

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