خوش آمديد!
20:19 شنبه 15 ارديبهشت ماه ، 1403
سايت مهندس لاچيني | پروژه ها و آموزش الكترونيك و تابلوروان: تالار گفتمان

HLachini.elewiz.com :: نمايش موضوعات - چند برنامه در یک میکرو

چند برنامه در یک میکرو

 

ارسال موضوع جديد  پاسخ به اين موضوع   ارسال تشکر 

   HLachini.elewiz.com صفحه اول انجمن -> AVR

نمايش موضوع قبلي :: نمايش موضوع بعدي  
نويسنده پيغام

solrobot
کاربر فعال
کاربر فعال

وضعيت: آفلاين
17 مرداد ماه ، 1389
تعداد ارسالها: 21
امتياز: 39
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: پنجشنبه، 4 شهريور ماه ، 1389 11:10:08    موضوع مطلب: چند برنامه در یک میکرو پاسخ همراه با اعلان

سلام دوستان

کسی می تونه در مورد اینکه چطور میشه چند برنامه رو به شکل مجزا در یک میکرو پیاده کرد؟

مثال:
یک تابلو روان دارید که به وسیله یک سری کد هدایت می شه.بعد با همون برنامه شما می خواید بطور همزمان یک موتور رو هم کنترل کنید.

میشه؟
چطور؟

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي
تشکرهاي ثبت شده از ايجاد کننده تاپيک :
 

hunteramin
کاربر فعال
کاربر فعال

وضعيت: آفلاين
6 اسفند ماه ، 1387
تعداد ارسالها: 51
امتياز: 85
تشکر کرده: 5
تشکر شده 12 بار در 4 پست


ارسالارسال شده در: پنجشنبه، 4 شهريور ماه ، 1389 13:56:56    موضوع مطلب: پاسخ همراه با اعلان

سلام
خیر این کار امکان پذیر نیست چون میکروکنترلر دستورات را به صورت ترتیبی اجرا میکند و حتما باید دستورات تابلو روان تمام شود تا نوبت به دستورات موتور برسد و شما باید از میکروپروسسور به جای میکروکنترلر استفاده کنید

موفق باشید

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

amir00
کاربر جدید
کاربر جدید

وضعيت: آفلاين
8 شهريور ماه ، 1389
تعداد ارسالها: 3
امتياز: 5
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: دوشنبه، 8 شهريور ماه ، 1389 20:46:23    موضوع مطلب: پاسخ همراه با اعلان

بعله ، میشه ، خوب هم میشه

راه زیاد داره. مثلا کسانی با میکرو کار کردن میدونند که بحث تایمر ها چیزی شبیه Thread در سیستم عامل هست.

شما میتونی برنامه کنترل تابلو را در main بنویسی و برای کنترل موتور هم از وقفه ها استفاده کنی.

حتی برای موتور میتونی از PWM استفاده کنید که برنامه اصلی کار خودش را انجام میده و موتور هم به درستی کار میکنه.

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

solrobot
کاربر فعال
کاربر فعال

وضعيت: آفلاين
17 مرداد ماه ، 1389
تعداد ارسالها: 21
امتياز: 39
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: چهارشنبه، 10 شهريور ماه ، 1389 11:38:42    موضوع مطلب: پاسخ همراه با اعلان

این سوال رو توی سایت های مختلف افراد مختلف پرسیدن ، اما کسی به جواب نهایی نرسیده. یک مثالی یک برنامه ای بنویسین از روی اون توضیح بدین. همه میگن وقفه ها! خوب بنویسید.مثلا یک ال ای دی رو برنامش رو از یک موتور جدا کنید. یا هر چیز دیگه.

ممنون

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

saeiddiod
کاربر فعال
کاربر فعال

وضعيت: آفلاين
5 تير ماه ، 1389
تعداد ارسالها: 22
امتياز: 37
تشکر کرده: 3
تشکر شده 1 بار در 1 پست


ارسالارسال شده در: پنجشنبه، 11 شهريور ماه ، 1389 03:06:12    موضوع مطلب: پاسخ همراه با اعلان

با سلام
من در مورد avr چیز زیادی نمیدونم ولی شنیدم که با میکروهای arm بشه این کار رو کرد
ببخشید همین قدر میدونستم

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

mr_nakhi
کاربر فعال
کاربر فعال

وضعيت: آفلاين
6 مرداد ماه ، 1389
تعداد ارسالها: 6
امتياز: 12
تشکر کرده: 0
تشکر شده 0 بار در 0 پست

محل سكونت: mashhad

ارسالارسال شده در: پنجشنبه، 11 شهريور ماه ، 1389 18:33:57    موضوع مطلب: پاسخ همراه با اعلان

با هيچ يك از ميكرو هاي avr و 8051 و pic امكان انجام دو كار بصورت همزمان وجود ندارد و وقفه هم بصورت يك دستور پرش از حلقه اصلي برنامه عمل مي كند به اينصورت كه ميكرو در حلقه اصلي برنامه چندين بار وقفه ها را چك مي كند و در صورت فعال شدن از حلقه اصلي خارج شده و به حلقه وقفه وارد مي شود.
براي انجام دو كار همزمان بايد از تقسيم زمان استفاده كرد سرعت ميكرو با كريستال 12 مگاهرتز براي انجام هر دستور يك ميكرو ثانيه و سرعت تشخيص چشم ما 10 ميلي ثانيه است با ترفند تقسيم زمان مي توان در هر ثانيه چندين كار را انجام داد قابل ذكر است cpu هايي كه در منزل استفاده مي كنيم (بجز دو هسته اي) از اين ترفند استفاده مي كنند .

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

solrobot
کاربر فعال
کاربر فعال

وضعيت: آفلاين
17 مرداد ماه ، 1389
تعداد ارسالها: 21
امتياز: 39
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: دوشنبه، 15 شهريور ماه ، 1389 13:29:45    موضوع مطلب: پاسخ همراه با اعلان

سلام

از این که با حوصله جواب می دید ممنونم ، دوستان اشاره ای از استفاده از وقفه ها کردن. می شه یکم با مثال توضیح بدین. من چندیه دنبال توضیح در مورد دستور اینتراپت هستم. دوستان لطف می کنید یه توضیح در این مورد بدین؟

باز هم تشکر

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

mr_nakhi
کاربر فعال
کاربر فعال

وضعيت: آفلاين
6 مرداد ماه ، 1389
تعداد ارسالها: 6
امتياز: 12
تشکر کرده: 0
تشکر شده 0 بار در 0 پست

محل سكونت: mashhad

ارسالارسال شده در: سه شنبه، 16 شهريور ماه ، 1389 01:13:32    موضوع مطلب: پاسخ همراه با اعلان

با سلام
توضيحات كامل برنامه ريزي وقفه ها 20 صفحه است كه براي اموزش كامل و بسيار اسان مي توانيد به كتاب ميكرو 8051 نوشته مزيدي فصل 11 مراجعه كنيد.
براي دانلود كتاب به اين ادرس مراجعه كنيد.http://m8051.blogfa.com/cat-4.aspx
اما بطور كلي ما 6 وقفه داريم دو عدد براي سخت افزار بيروني دو عدد براي تايمر ها و وقفه سريال و وقفه باز نشاني كه هر كدام ادرس خاص و اولويت معيني دارند كه در جداول كتاب مذكور امده است.
با ثبات ie كه ادرس پذير بيتي است هر بيت براي فعال يا غير فعال سازي اين 6 وقفه مشخص شده است و يك بيت هم براي غيرفعال سازي همه وقفه ها (IE.7) مشخص شده است .
عملكرد وقفه به اينصورت است كه بعد از فعال سازي وارد برنامه مي شود و اگر در بين برنامه اصلي فعال شود ميكرو بطور اتومات وارد برنامه وقفه مي شود مثلا اگر وقفه سريال فعال شود هنگام دريافت داده برنامه اصلي را رها كرده و به برنامه مشخص شده براي داده سريال وارد مي شود.
هدف كلي از وقفه استفاده نكردن از دستورات چك كننده و پرش مانند jnb cjne jb و... مي باشد.هنگامي كه شما با اين دستورات بخواهيد داده سريال را كنترل كنيد بايد دستور سركشي را چندين بار در طول برنامه بكار ببريد وزمان زيادي براي ميكرو صرف سركشي مي شود كه با وقفه از اين سركشي ها راحت مي شويد.
مثال بعدي وقفه تايمر صفر از ادرس 0BH شروع مي شود شما در ابتدا برنامه بايد يك دستور پرش به برنامه اصلي بگذاريد در برنامه اصلي بايد تايمر را فعال كنيد و يك كار مجزا را انجام دهيد(مثلا چرخش استپ موتور) هنگامي كه تايمر صفر شود بطور اتومات از برنامه خارج و وارد ادرس 0BH شده و (بطور مثال) تايمر را دوباره فعال مي كند و انتهاي برنامه وقفه بايد از RETI براي برگشت به برنامه اصلي استفاده كنيد لازم به ذكر است چون برگشت از وقفه مي باشد بايد بجاي RET از RETI استفاده كنيد.
در كتاب اقاي مزيدي چندين مثال با برنامه نويسي اسمبلي و توضيحات كامل موجود است.

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

solrobot
کاربر فعال
کاربر فعال

وضعيت: آفلاين
17 مرداد ماه ، 1389
تعداد ارسالها: 21
امتياز: 39
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: سه شنبه، 16 شهريور ماه ، 1389 12:15:45    موضوع مطلب: پاسخ همراه با اعلان

ممنون
توضیحات جامع و کاملی دادین.

برداشت من وقفه ها. مثلا من سه برنامه رو می خوام فعال کنم. اول یک تابع کلی می نویسم و بعد توی این تابع کلی یک دستور پرش قرار میدم. حالا اگر برنامه اصلی به وقفه رسید بی درنگ وارد برنامه آدرس داده شده برای وقفه می شه و در صورت وجود شرط اون برنامه رو اجرا می کنه و به تابع اصلی بر می گرده ، در غیر اینصورت برنامه ادامه پیدا می کنه.
سوال:

برای avr مثالی ندارین؟ بسکام؟

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

mr_nakhi
کاربر فعال
کاربر فعال

وضعيت: آفلاين
6 مرداد ماه ، 1389
تعداد ارسالها: 6
امتياز: 12
تشکر کرده: 0
تشکر شده 0 بار در 0 پست

محل سكونت: mashhad

ارسالارسال شده در: چهارشنبه، 17 شهريور ماه ، 1389 18:04:26    موضوع مطلب: پاسخ همراه با اعلان

سلام برداشتتون كاملا درست است اما متاسفانه... اطلاعات من فقط درباره 8051 است
يك مدار كه 3 تا كار رو انجام ميده
براي دانلود از لينك زير استفاده كن
http://delbaste.com/upload/images/bqa86z9v6d740hybhumc.zip

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

adelavr
کاربر فعال
کاربر فعال

وضعيت: آفلاين
2 شهريور ماه ، 1388
تعداد ارسالها: 305
امتياز: 603
تشکر کرده: 4
تشکر شده 45 بار در 12 پست

محل سكونت: http://pcenter.ir

ارسالارسال شده در: چهارشنبه، 17 شهريور ماه ، 1389 21:20:02    موضوع مطلب: پاسخ همراه با اعلان

سلام دوستان
همونطوریکه اشاره شد شما میتونید برنامه تون رو بنویسید بعد با استفاده از وقفه ها(سخت افزاری یا نرم افزاری) میتونید در زمانی که مد نظرتون هست به روتین وقفه رفته و ISR مربوطه را اجرا کنید.
اگه مثال میخواهید کتاب AVR مهندس کاهه بهترین مرجع هست توصیه میکنم حتما اون کتابرو بخر ....
اما اگه فعلا کتاب در دستتون نیست یک مثال کوچیک می زنم
Config INT0=Rising
Enable Interrupts
Enable int0
On int0 Adelavr
Do
Loop
End
Adelavr:
Set portb.0
Return
در این برنامه با اعمال یک پالس بالا رونده به پایه INT0 به روتین وقفه رفته و LED متصل به پورت B.0 را روشن میکند.
در بین DO – Loop میتوانید دستورات برنامه اصلی را بنویسید.
مقدار INT0 میتواند به صورت پایین رونده Falling هم باشد
امیدوارم به دردت بخوره و موفق باشید

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي ارسال ايميل بازديد از سايت ارسال كننده مطلب

solrobot
کاربر فعال
کاربر فعال

وضعيت: آفلاين
17 مرداد ماه ، 1389
تعداد ارسالها: 21
امتياز: 39
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: پنجشنبه، 18 شهريور ماه ، 1389 00:15:08    موضوع مطلب: پاسخ همراه با اعلان

به این می گن جواب. مرسی. از بقیه دوستان هم تشکر می کنم.

موفق باشید

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي
تمامي مطالب ارسال شده:   
ارسال موضوع جديد   پاسخ به اين موضوع   ارسال تشکر

   HLachini.elewiz.com صفحه اول انجمن -> AVR

زمان پيشفرض سايت: ساعت گرينويچ + 3.5 ساعت
صفحه 1 از 1
  
نام کاربري:      کلمه عبور:     

~ يا ~
عضويت در سايت

  


 


Powered by phpBB © 2001, 2008 phpBB Group
پروگرامر و تستر آِی سی سانا با قابلیت تشخیص اتوماتیک قطعه و درج تمامی قطعات از پین یک زیف و تامین کلاک قابل استفاده در بسکام و کدویژن