NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5219 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از 1 به 20 از 57

موضوع: راهنمایی در برنامه نویسی

  1. #1
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض راهنمایی در برنامه نویسی

    سوال:
    برای اینکه به میکرو در برنامه بیکام کلیدی را تعریف کنیم از دستور DEBOUNCE استفاده میکنیم حالا میخواهیم بعد از مثلا 4 ثانیه که کلید فشار داده نشد به یک نقطه معین پرش شود!
    شکل دستور چگونه باید باشد؟
    E:
    .
    .
    .


    Do
    Debounce Pind.1 , 1 , Roshan , Sub
    WAIT 4
    JMP E

    Loop
    Roshan:
    JMP F
    Return


    F:

    برنامه بالا درست عمل نمیکنه چون اگر در زمان WAIT کلید فشار داده شود پرش به F صورت نمیگیرد . چه تغییراتی بدهیم؟
    ویرایش توسط 1nafar : 10-01-2010 در ساعت 22:13

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی ----

    سلام
    شما يه دونه متغير از جنس ورود تعري كنيد و هر يك ميلي ثانيه يك واحد به اون اضافه كنيد ، وقتي كه مقدار متغير به 4000 برسه 4 ثانيه گذشته ، اگه تا اين زمان كليد فشرده شد كه هيچ اگه نشد با شرطي كه نوشتيد به مكان مورد نظر پرش ميشود :
    کد:
    dim a as word
    do
    incr  a
    Debounce Pind.1 , 1 , Roshan , Sub
    if a>4000 then
    goto e
    end if
    loop
    .
    .
    .

  5. تشکرها از این نوشته :


  6. #3
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی ----

    ممنون کاملش کردم و شد این:

    E:
    .
    .
    X = 0
    Do
    Waitms 1
    Incr X
    Debounce Pind.1 , 1 , Roshan , Sub
    If X > 4000 Then
    Goto E
    End If
    Loop
    Roshan:
    JMP F
    Return

    F:

  7. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی ----

    برای مورد بالا از پایه های وقفه و تایمر هم میشد استفاده کنی ، پایه های وقفه کاری به تاخیر و غیره نداره و توی کتاب توضیح داده شده

  8. #5
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی ----

    یک سول دیگه:

    میخواهیم یک متغیر مثل D وقتی مقدارش منفی میشود (حتی دهم یا صدم منفی) مقدارش برار صفر داده شود:

    IF D=.....
    D=0

    چگونه باید بنویسیم؟

  9. #6
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی ----

    سلام
    if <0 then
    d=0
    end if
    اعداد منفی اعداد کوچکتر از صفر هستند

  10. #7
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    وقتی مدار 1 که استفاده از دو ADC به عنوان مد تفاضلی هست رو ران میکنم درست کار میکنه و میکرو ولتاژ باطریها رو درست نشون میده ، ولی وقتی فقط چندتا رله بین همون باطریها اضافه میکنم و با اینکه از کنتاکتهای نرمالی اپن استفاده کردم بعد از ران برنامه میکرو ولتاژهارو اشتباه نشون میده !!!؟؟؟ ولی اگر لینک رله هارو باز کنم دوباره درست میشه؟ موضوع از چه قراره؟ کنتاکتهای رله که از هم خیلی فاصله دارنه و هیچ اتصالی بینشان نیست پس چرا ADC های میکرو قاطی میکنند؟؟؟ به نظر شما پروتئوس اشتباه میگه یا در واقعیت هم همینطوره؟ و راه حل؟

  11. #8
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سلام
    مشکل از پروتوس هست و برنامه مشکل خاصی نداره (اگه گراند و زمین رو به رله های متصل کنی (سر های ازاد ) میبینی که همه چیز به هم میریزه )
    بهتره توی برنامه از دستور Reference = Avcc استفاده نکنی ، فکر کنم چند ماه قبل توی سایت ir-micro به این نتیجه رسیدیم که این دستور عمل کرد adc رو مختل میکنه

  12. #9
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    خوب !
    Reference = Internal گزاشتم و تو پروتئوس هم ولتاژهارو از Avcc و AREF قطع کردم ولی بازم خطا داره !!

    یعنی اتصال رله ها با باطری که وصل میشه با اینه کنتاکت رله ها بازه و باطریها به هم وصل نمیشوند ولی محاسبات بهم میریزه! راه حلی وجود نداره؟ ممکنه شما تست بفرمایید؟

  13. #10
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سلام
    من توی پروتوس تست کردم و همین مشکل شما رو داشت
    کلا رله ها قطع باشن یا نباشن مدار شما توی پروتوس درست شبیه سازی نمیشه
    بهتره توی برنامه از دستور Reference = Avcc استفاده نکنی ، فکر کنم چند ماه قبل توی سایت ir-micro به این نتیجه رسیدیم که این دستور عمل کرد adc رو مختل میکنه
    اینم من در کل گفتم نه در مورد این مدار
    شاید یکی از باگ های پروتوس همین باشه

  14. #11
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    میخواهیم مقدار یک متقیر اعشاری در محاسبات به مثلا دو رقم اعشار گرد بشه
    مثال: 1.2367 بشه : 1.24

    با چه دستوری میتوان این کار را انجام داد؟

  15. #12
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سلام
    درستور fusing :
    [align=left]target = FUSING(source, "mask")[/align]
    ب این دستور میشه یه متغیر از جنس سینگل رو تا رقم دلخواه رند کرد :
    [align=left]S = 123.45678
    Z = Fusing(s , "#.##")[/align]
    در برنامه بالا مقدار s برابر 123.46 میشود .

  16. #13
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سید این دستور فقط تو نمایش LCD عدد رو روند میکنه من میخوام تو محاسبات روند کنم و شایدم اصلا نخوام نشونش بدم و فقط روندشو بخوام!

    من دستور ROUND رو پیدا کردم تو بیسکام ولی اعشار رو از بین میبره و عدد صحیح تحویل میده ولی من میخوام تا دو رقم اعشار روند بشه!

  17. #14
    کاربر فعال
    تاریخ عضویت
    Jan 2009
    نوشته ها
    211
    تشکر
    168
    تشکر شده 105 بار در 58 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    خوب می تونید یه کار سخت انجام بدید اول عددتون رو در 100 ضرب کنید بعد از دستور round استفاده کنید و بعد عدد رو بر 100 تقسیم کنید!

  18. #15
    مدیر باز نشسته REZA_KLNTR آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    مشهد مقدس
    نوشته ها
    366
    تشکر
    26
    تشکر شده 233 بار در 122 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    من هم همینکار رو انجام میدهم ولی در تقسیم آخر یعنی تقسیم بر 100 روندی عدد به هم میخوره دوباره چون محاسبات ضرب و تقسیم میکروکنترل ی درصدکی خطا داره و میبینی همیشه مثلا به جای 1000.000 مینویسه 1000.005

  19. #16
    کاربر فعال
    تاریخ عضویت
    Jan 2009
    نوشته ها
    211
    تشکر
    168
    تشکر شده 105 بار در 58 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سلام به نظرتون بهترین راه واسه تشخیص رنگ چیه؟ adc? یا مقایسه کننده آنالوگ؟ اگه بخوام از مقایسه کننده آنالوگ استفاده کنم می نونم از پایه های میکرو به عنوان یه مالتی پلکسر استفاده کنم؟ یا باید از یه مالتی پلکسر آنالوگ استفاده کنم؟ (اگه بخوام حداکثر خروجی دو سنسور رو با ولتاژ مرجع مقایسه کنم چرا فقط در صورت قرمز بودن رنگ ربات باید دور بزنه دو سنسور هم بخاطر اطمینان از اینکه حتما روی خط قرمز هستیم چون خط قرمز به صورت عمود بر خط مشکی و به طول 10 سانتی متر هست)میزان نویز و خطا در این حالت ها چقدره؟

  20. #17
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سلام
    سلام به نظرتون بهترین راه واسه تشخیص رنگ چیه؟ adc? یا مقایسه کننده آنالوگ؟
    adc روش خوبی نیست ، چون با افزایش ولتاژ تغذیه سنسور و... محاسباتش به هم میریزه ، بهترین راه استفاده از مقایسه کننده انالوگ هست ( توی مسابقات رباتیک معمولا ربات های که از adc استفاده کرده بودن موق نبودن)
    اگه بخوام از مقایسه کننده آنالوگ استفاده کنم می نونم از پایه های میکرو به عنوان یه مالتی پلکسر استفاده کنم؟ یا باید از یه مالتی پلکسر آنالوگ استفاده کنم؟
    مالتی پلکسر باید چه کار کنه ؟
    بهتره یه تصویر بزاری

  21. #18
    کاربر فعال
    تاریخ عضویت
    Jan 2009
    نوشته ها
    211
    تشکر
    168
    تشکر شده 105 بار در 58 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----


    توی قوانین اینجوری گفته شده اگه ربات به خط قرمز رسید باید دور بزند و اگه به خط سبز باید مسیر را ادامه بدهد من می خوام 2 تا سنسور مانند aو b فقط مخصوص تشخیص خط قرمز بگذارم که اکه هر دو روی خط قرمز بودن مسیر رو دور بزنه میکرو فقط یک مقایسه کننده آنالوگ داره (atmega 32) اگه بخوام هر دو سنسور رو با ولتاژ مرجع مقایسه کنم با ید چیکار کنم؟ آیا می تونم با مقایسه کننده میکرو ولتاز رو در یک بازه چک کنم؟ مثلا بگم اگر ولتاژ سنسور 0.1 بیشتر یا کمتر ولتاژ مرجع بود....
    اگه نه پیشنهادتون چیه؟ چیکار باید بکنم؟

  22. #19
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    سلام
    شما باید از مقایسه کننده های انلوگ مثل op-amp استفاده کنید :
    مدار زیر یک نمونه از این مقایسه کننده ها هست :


    در این مدار ، با افزایش ولتاژ تغذیه ، ولتاژ هر دو پایه op-amp هم زیاد میشه ، همون طور که میدونید در حالت مقایسه کننده اگر ولتاژ پایه + از پایه منفی بیشتر بشه ، خروجی برابر با ولتاژ تغذیه میشه ( در حالت برعکس خروجی برابر ولتاز پایه منفی یا صفر میشه ) .
    از اون جا که با تغییر ولتاژ تغذیه ولتاژ هر دو پایه و منفی تغییر میکنه ، بنابراین خروجی کاملا پایدار میمونه و فقط در صورت تحریک سنسور یک میشه .
    شما میتونید از ایسی lm324 استفاده کنید این ایسی دارای 4 اپ امپ داخلی میباشد .
    توی برنامه هم کافیه صفر یا یک بودن پایه ها رو چک کند.

  23. #20
    کاربر فعال
    تاریخ عضویت
    Jan 2009
    نوشته ها
    211
    تشکر
    168
    تشکر شده 105 بار در 58 پست

    پیش فرض RE: ---- راهنمایی در برنامه نویسی با میکرو AVR در این تاپیک ----

    اینا درست ولی چجوری رنگ قرمز رو از سفید و مشکی تفکیک کنم؟ ولتاژ منفی رو با توجه به چی تنظیم کنم اگر مثلا ولتاژ خروجی سنسور رو ی خط مشکی 1.1 و قرمز 1.8 و سفید 3 ولت باشه؟ اگه مثلا 1.4 تنظیم کنم وقتی سنسور روی خط سفید و قرمز باشه خروجی آپ امپ 1 میشه اگه مثلا روی 2 ولت تنظیم کنم خروجی هم روی خط مشکی هم روی خط قرمز 0 میشه! به نظرتون اگه ولتاژ خروجی سنسور رو همزمان به 2 آپ امپ وصل کنم که با هردو لتاژ مقایسه(1.6 و 2 ولت مثلا) بشه و بگم اگه از مشکی ولتاژ بیشتر بود و از سفید کمتر... خوب جواب می گیرم؟

صفحه 1 از 3 123 آخرینآخرین

موضوعات مشابه

  1. پاسخ: 3
    آخرين نوشته: 06-12-2016, 12:49
  2. برنامه نویسی با iar
    توسط ali ali در انجمن مباحث کلی ARM
    پاسخ: 13
    آخرين نوشته: 06-02-2012, 03:12
  3. کمک در برنامه نویسی و سخت افزار
    توسط BaRdIa در انجمن AVR
    پاسخ: 6
    آخرين نوشته: 15-08-2010, 03:00
  4. نرم افزار برنامه نویسی lg
    توسط emansad در انجمن آموزش نرم افزارهای برق و الکترونیک
    پاسخ: 1
    آخرين نوشته: 04-07-2009, 18:53
  5. اشنایی با نرم افزار برنامه نویسی
    توسط 1nafar در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 0
    آخرين نوشته: 17-06-2009, 22:55

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •