NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2419 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 15 از 15

موضوع: بسکام + تایمر + اینتراپت !!!

  1. #1
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض بسکام + تایمر + اینتراپت !!!

    با سلام
    من بعد یه برنامه با بسکام نوشتم ، تا بعد از سرریزشدن تایمر و وقفه اون ، یه زیرروال رو اجرا کنه:
    [PHP]
    $regfile = "m32def.dat" ' specify the used micro
    $crystal = 8000000 ' used crystal frequency
    $baud = 9600 ' use baud rate
    $hwstack = 128 ' default use 32 for the hardware stack
    $swstack = 128 ' default use 10 for the SW stack
    $framesize = 128 ' default use 40 for the frame space


    Mcusr = &H80
    Mcusr = &H80


    Dim Tflagb As Integer
    .
    .
    .
    Dim Ref2 As Byte


    Config Timer1 = Timer , Prescale = 1024
    Stop Timer1
    Enable Interrupts
    Enable Timer1
    Enable Ovf1
    Timer1 = 35000
    On Timer1 Timer5

    Start Timer1
    Print "timer started"
    Do

    If T2 > 90 Then
    Reset Rb
    Rbi = 0
    Tflagb = 0
    End If

    If 1 = Key1 Then
    Gosub Mode3
    End If
    Print "loop"
    Wait 1


    Loop
    End

    '***********************************************
    .
    .
    .
    '***********************************************
    Timer5:
    Print "timer int"
    Timer1 = 35000
    .
    .
    .


    Return
    Return
    [/PHP]

    ولی هر وقت تایمر سرریز میشه ؛ به جای پریدن به isr (یعنی Timer5 ) میکرو ریست میشه !و هیچ وقت به زیرروال نمیرسه ! سه روزه رفته رو اعصابم ، روی یه کامپیوتر دیگه هم امتحان کردم ، همینه

    حتی مثال خود بسکام هم همینطوری ریست میشه!!!! کلا مشکل از اینتراپتهاست ، و من فکر میکنم آدرس isr رو نمیتونه بگیره ،اینطوری میشه .

    کسی راه حلی نداره ؟

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

  3. #2
    کاربر علاقه مند MEYSAMHL آواتار ها
    تاریخ عضویت
    Aug 2009
    نوشته ها
    69
    تشکر
    36
    تشکر شده 28 بار در 22 پست

    پیش فرض

    سلام دوست گرامی
    برنامه ی شما یه مشکل کوچیک داره ....
    در خطی که شما نوشته بودید on timer1 timer 5 این دستور معمولا عمل نمی کنه یعنی میکرو بعد از سرازیر شدن می خواد بره به label سرازیری تایمر ولی شما اون label یا isr رو با دستور اشتباه تعریف کردید برای همین میکرو ریت می کنه .
    راه حل :
    باید از این دستور استفاده کنید .... ردخور نداره

    on OVF1 TIMER5

    این دستور 100 در 100 جواب میده ... کافیه به جای دستور on timer1 timer 5 از دستور on OVF1 TIMER5

    موفق باشی

  4. کاربران : 2 تشکر کرده اند از شما MEYSAMHL برای ارسال این پست سودمند:


  5. #3
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    از ovf1 هم استفاده کرده بودم ، کلا 3 روز رو مشغول یه کاری بودم دیگه ! تمام حالتهای ممکن رو امتحان کردم : از ovf1 هم برای فعال سازی وقفه و هم لیبل استفاده کردم ، timer1 تایمر 1 هم همینطور ، به صورت ضربدری (یکی این یکی اون) همچنین و تو آخرین حالت مثل همین کدی که گذاشتم ، هردو دستور
    Enable Timer1
    Enable Ovf1
    رو با هم استفاده کردم.
    ترتیب فعال شدن وقفه سراسری و وقفه تایمر رو هم تغییر دادم ، یه بار لیبل رو قبل از فعال کردن وقفه ها تعریف کردم ، یه بار بعدش، اسم لیبل رو هم تغییر داده بودم شاید مشکل از این باشه ولی نبود . خلاصه نزدیک به 20 حالت مختلف رو امتحان کردم ولی فرقی نکرد.

    فکر میکنم اینم باز از اون باگهای زیبای بسکام باشه . جالبی باگهاش هم اینه که به صورت رندم اتفاق میوفته ! یعنی برای یکی اصلا اتفاق نمیوفته ولی برای یکی دیگه میوفته!
    مثلا باگ بسیار مسخره glcd های k108 که خودم قبلا 2-3 روزی سر کار بودم ، وقتی میکرو میرسه به خط کانفیگ lcd ، میکرو هنگ میکنه ! تواینترنت گشتم ، یکی دیگه میگفت با مگا 8 lcd درست کار میکرده ؛ ولی وقتی برنامه روبرای مگا32 تغییر داده ، هنگ میکرده ! یه سری دیگه هم اصلا مشکلی نداشتن و میگفتن حتما سیمات شله (آخه شل بودن سیم چه ربطی به هنگ کردن میکرو داره !؟!). خلاصه کاشف به عمل اومد یه کتابخونه تو اینترنت برای lcd گرافیکی بسکام هست (احتمالا نسخه قدیمی) که اگه جایگزین ارجینالش کنی درست میشه !!!!!!!!!!! جالبتر اینه که من از نسخه اررجینال بسکام استفاده میکنم (آخرین ورژن 1.12 !) .

    گفتم اینجا مطرح کنم شاید کس دیگه ای هم به این مشکل غیر منطقی بر خورده باشه .

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


  7. #4
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام فرزاد جان

    خیلی متاسفم که بسکام انقدر رفته رو اعصابت! من با اینکه از نسخه ی کرکی استفاده می کنم تا حالا بجز همون ks108 به هیچ مشکل دیگه ای بر نخوردم! که اونم باید فایلهایی که توی نت بود جایگزین فایل های خود برنامه می کردم.

    الان 10 روزه که من مدام عروسی دعوت میشم. و فقط هم بخاطر خانومم میرم. وگرنه اهل عروسی نیستم.

    خودم حتما برنامه رو برات تست می کنم و جوابشو میدم. فقط یکم وقت بده. چون مدرسه ها هم باز شده منم سرم شلوغ شده. انشالله بتونم یه دلیل منطقی براش پیدا کنم و دیر هم نشه.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  8. کاربران : 2 تشکر کرده اند از شما morteza_rk برای ارسال این پست سودمند:


  9. #5
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام فرزاد جان

    دیشب آخرین عروسی رو هم پشت سر گذاشتیم و من خیالم راحت شد! مردم بس که شا باش و کادو دادم! اینجا عروسی ها یا 3 روزه یا 4 روز! پدر آدم در میاد بخدا.

    بگذریم ، من برنامه رو تست کردم و مشکلی هم نداره. برنامه ادیت شده رو بهمراه فایل شبیه سازی شده گذاشتم. ببین اوضاع از چه قراره.

    [PHP]$regfile = "m32def.dat" ' specify the used micro
    $crystal = 8000000 ' used crystal frequency

    $baud = 9600 ' use baud rate

    $hwstack = 128 ' default use 32 for the hardware stack
    $swstack = 128 ' default use 10 for the SW stack
    $framesize = 128 ' default use 40 for the frame space
    '---------------------------------------
    Mcusr = &H80
    Mcusr = &H80
    '---------------------------------------
    Dim Tflagb As Integer
    Dim Ref2 As Byte

    Enable Interrupts

    Config Timer1 = Timer , Prescale = 1024

    Enable Ovf1
    Stop Timer1

    Timer1 = 35000
    On Ovf1 Timer5
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Start Timer1

    Print "timer started"

    Do

    '(
    If T2 > 90 Then
    Reset Rb
    Rbi = 0
    Tflagb = 0
    End If


    If 1 = Key1 Then
    Gosub Mode3
    End If
    Print "loop"
    Wait 1
    ')

    Loop
    End

    '*********************************************

    Timer5:

    Stop Timer1
    Print "timer int"
    Timer1 = 35000
    Start Timer1

    Return
    [/PHP]
    فايل هاي پيوست شده فايل هاي پيوست شده
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  10. کاربران : 3 تشکر کرده اند از شما morteza_rk برای ارسال این پست سودمند:


  11. #6
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    تا باشه از این مجالس باشه
    ممنون از وقتی که گذاشتی ، از نظر کد ، برنامه شما تقریبا تفاوتی با برنامه من نداشت ، برای همین داشتم شک میکردم که نکنه کامپایلر من تعطیله ! ولی امروز بالاخره فرصت کردم برنامه شما رو روی بورد تست کنم . متاسفانه این هم بعد از ترگ شدن وقفه ریست میشد و هیچ وقت زیرروال وقفه رو اجرا نمیکرد حتی مثال خود بسکام رو هم کامپایل کردم همین اوضاع بود
    شاید بسکام با بوت لودری که من استفاده کردم مشکل داره (خیلی بعید هست ) ولی فردا تست میکنم بدون بوتلودر چطور میشه(میکرو رو مستقیم پروگرم کنم). این پروتئوس هم هیچ اعتباری بهش نیست و نمیشه بهش اتکا کرد .
    در هر صورت اگه این مشکل کذایی راه حلش پیدا شد ، حتما تو همین تاپیک میگذارم تا یه وقت یه نفردیگه مثل من 1 هفته تمام علاف نشه !

  12. #7
    مدیر باز نشسته هنرفر آواتار ها
    تاریخ عضویت
    Sep 2009
    نام
    اصفهان
    نوشته ها
    408
    تشکر
    372
    تشکر شده 311 بار در 154 پست

    پیش فرض

    ماکه نفهمیدیم این Gosub Mode3 به کجا پرش میکنه؟
    جوان ایرانی زانو نمیزند حتی اگر حتی اگر سقف آسمان کوتاه تر از قدش باشد....

    iran-ehda.ir


  13. #8
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    نکنه مشکل از تنظیم رجیستر Mcusr باشه! آخه شبیه سازی توی پروتئوس ممکنه برای تنظیم بعضی از این رجیسترها و فیوزبیت ها ارزش قائل نشه. یه بارم بدون اونا تست کن.


    هنرفر عزیز اون قسمت از برنامه برای جای دیگه ای نوشته شده و فرزاد خان هم یه تیکه از کد خودشو گذاشته نه همه ی کد رو.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

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


  15. #9
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    اون رجیستر برای غیر فعال کردن جیتگ به صورت نرم افزاری هست . بدون اون هم همینه ؛ همونطوری که گفتم مثال اصلی بسکام هم همین مشکل رو داره .
    خب بالاخره مشکل پیدا شد ! بدون بوت لودر درست کار میکنه ! حالا باید ببینم کامپایلر های دیگه مثل codevision , winavr, icc هم همینطورن !؟ آخه معنی نداره که بوت لودر تداخل ایچاد کنه ، فضای برنامه اون تو حافظه یه قسمت جداست ( ته حافظه فلش) .

  16. #10
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    قضیه جالب شد. اگه مشکل این باشه باید با کامپایلرهای دیگه هم تست بشه و اگه اونا مشکلی نداشتن این میشه یه باگ برای بسکام که باید به تیم پشتیابنی اون گزارش داده بشه.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  17. #11
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    من با کدویژن امتحان کردم درست کار میکرد (با بوت لودر)
    خب برای نتیجه گیری میشه اینطور گفت که اگه دارید با بسکام برنامه مینویسید و یهو به یه مشکل غیر عادی بر میخورید ؛اگر طی 24 ساعت مشکل حل شد که چه بهتر ، در غیراین صورت سریعا به فکر استفاده از یه کلمپایلر دیگه بیوفتید : چون در صورت پیدا کردن دلیل مشکل (بعد از چندین روز وقت تلف شدن) باز هم مجبور خواهید شد که کامپایلرتون رو عوض کنید ! پس چرا از همون اول اینکار رو نکنید ؟!

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

    M3R

  19. #12
    تازه وارد
    تاریخ عضویت
    Apr 2011
    نوشته ها
    3
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    [QUOTE=morteza_rk;20163]سلام فرزاد جان

    دیشب آخرین عروسی رو هم پشت سر گذاشتیم و من خیالم راحت شد! مردم بس که شا باش و کادو دادم! اینجا عروسی ها یا 3 روزه یا 4 روز! پدر آدم در میاد بخدا.

    بگذریم ، من برنامه رو تست کردم و مشکلی هم نداره. برنامه ادیت شده رو بهمراه فایل شبیه سازی شده گذاشتم. ببین اوضاع از چه قراره.

    [PHP]$regfile = "m32def.dat" ' specify the used micro
    $crystal = 8000000 ' used crystal frequency

    $baud = 9600 ' use baud rate

    $hwstack = 128 ' default use 32 for the hardware stack
    $swstack = 128 ' default use 10 for the SW stack
    $framesize = 128 ' default use 40 for the frame space
    '---------------------------------------
    Mcusr = &H80
    Mcusr = &H80
    '---------------------------------------
    Dim Tflagb As Integer
    Dim Ref2 As Byte

    Enable Interrupts

    Config Timer1 = Timer , Prescale = 1024

    Enable Ovf1
    Stop Timer1

    Timer1 = 35000
    On Ovf1 Timer5
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Start Timer1

    Print "timer started"

    Do

    '(
    If T2 > 90 Then
    Reset Rb
    Rbi = 0
    Tflagb = 0
    End If


    If 1 = Key1 Then
    Gosub Mode3
    End If
    Print "loop"
    Wait 1
    ')

    Loop
    End

    '*********************************************

    Timer5:

    Stop Timer1
    Print "timer int"
    Timer1 = 35000
    Start Timer1

    Return

    با سلام مگه timer1 ده بیتی نیست ؟ چطور timer1=35000 ?!!!!!!! تایمر 1 بعد از 2^10=1024 شمارش سریز میشه

  20. #13
    تازه وارد
    تاریخ عضویت
    Apr 2011
    نوشته ها
    3
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    [QUOTE=robert;100357][QUOTE=morteza_rk;20163]سلام فرزاد جان

    دیشب آخرین عروسی رو هم پشت سر گذاشتیم و من خیالم راحت شد! مردم بس که شا باش و کادو دادم! اینجا عروسی ها یا 3 روزه یا 4 روز! پدر آدم در میاد بخدا.

    بگذریم ، من برنامه رو تست کردم و مشکلی هم نداره. برنامه ادیت شده رو بهمراه فایل شبیه سازی شده گذاشتم. ببین اوضاع از چه قراره.

    [PHP]$regfile = "m32def.dat" ' specify the used micro
    $crystal = 8000000 ' used crystal frequency

    $baud = 9600 ' use baud rate

    $hwstack = 128 ' default use 32 for the hardware stack
    $swstack = 128 ' default use 10 for the SW stack
    $framesize = 128 ' default use 40 for the frame space
    '---------------------------------------
    Mcusr = &H80
    Mcusr = &H80
    '---------------------------------------
    Dim Tflagb As Integer
    Dim Ref2 As Byte

    Enable Interrupts

    Config Timer1 = Timer , Prescale = 1024

    Enable Ovf1
    Stop Timer1

    Timer1 = 35000
    On Ovf1 Timer5
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Start Timer1

    Print "timer started"

    Do

    '(
    If T2 > 90 Then
    Reset Rb
    Rbi = 0
    Tflagb = 0
    End If


    If 1 = Key1 Then
    Gosub Mode3
    End If
    Print "loop"
    Wait 1
    ')

    Loop
    End

    '*********************************************

    Timer5:

    Stop Timer1
    Print "timer int"
    Timer1 = 35000
    Start Timer1

    Return

    با سلام مگه timer1 ده بیتی نیست ؟ چطور timer1=35000 شده?!!!!!!! تایمر 1 بعد از 2^10=1024 شمارش سریز میشه یعنی اگر 35000/1023 کنیم برابر 34 میشه یعنی اگه تایمر یک از صفر بشمره و در مقدار نهایی یعنی 1023 سرریز بشه باید 34 بار سریز بشه تا برسه به 35000

  21. #14
    تازه وارد
    تاریخ عضویت
    Jul 2017
    نوشته ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام دوستان من یه برنامه خیلی ساده دارم که از wait استفاده کردم ولی وقتی تو پروتئوس شبیه سازیش میکنم تو دستور wait هنگ مکنه و رو همون wait میمونه . ممنون میشم کمکم کنین چن روزه کلافه ام کرده .
    اینم برنامه
    $regfile = "m16def.dat"
    $crystal = 8000000

    Config Porta = Output
    Config Portb = Output
    Config Portc = Output
    Do


    V1 = 1

    Wait 10

    V1 = 1 : V6 = 1 : V11 = 1

    Wait 35

    V1 = 0 : V6 = 0 : V11 = 0
    V2 = 1 : V9 = 1

    Wait 20

    V2 = 0 : V9 = 0
    V4 = 1 : V7 = 1

    Wait 10

    V4 = 0 : V7 = 1
    V12 = 1 : V5 = 1
    Wait 35
    V12 = 0 : V5 = 0 : V7 = 0
    V8 = 1 : V3 = 1
    Wait 20
    V8 = 0 : V3 = 0
    V1 = 1 : V10 = 1
    Wait 10
    V1 = 0 : V10 = 0


    Loop
    End

  22. #15
    عضو جدید daruosh20 آواتار ها
    تاریخ عضویت
    May 2013
    نام
    داریوش کسبت
    نوشته ها
    5
    تشکر
    6
    تشکر شده 6 بار در 4 پست

    پیش فرض

    نقل قول نوشته اصلی توسط javad22 نمایش پست ها
    سلام دوستان من یه برنامه خیلی ساده دارم که از wait استفاده کردم ولی وقتی تو پروتئوس شبیه سازیش میکنم تو دستور wait هنگ مکنه و رو همون wait میمونه . ممنون میشم کمکم کنین چن روزه کلافه ام کرده .
    اینم برنامه
    $regfile = "m16def.dat"
    $crystal = 8000000

    Config Porta = Output
    Config Portb = Output
    Config Portc = Output
    Do


    V1 = 1

    Wait 10

    V1 = 1 : V6 = 1 : V11 = 1

    Wait 35

    V1 = 0 : V6 = 0 : V11 = 0
    V2 = 1 : V9 = 1

    Wait 20

    V2 = 0 : V9 = 0
    V4 = 1 : V7 = 1

    Wait 10

    V4 = 0 : V7 = 1
    V12 = 1 : V5 = 1
    Wait 35
    V12 = 0 : V5 = 0 : V7 = 0
    V8 = 1 : V3 = 1
    Wait 20
    V8 = 0 : V3 = 0
    V1 = 1 : V10 = 1
    Wait 10
    V1 = 0 : V10 = 0


    Loop
    End
    دوست من مشگل از فرکانس انتخاب شده برای میکرو هست سیستم شما نمیتونه با فرکانس 8 مگاهرتز برنامه رو شبیه سازی کنه من هم به این مشکل خورده بودم.

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

  1. اینتراپت
    توسط electro_fuzzy در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 23-02-2013, 23:28
  2. یک مثال تایمر با اینتراپت
    توسط jonbakhsh در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 23-01-2013, 16:27
  3. پاسخ: 0
    آخرين نوشته: 25-08-2012, 12:47
  4. اینتراپت سریال
    توسط moeinmj در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 05-04-2011, 09:51
  5. پاسخ: 2
    آخرين نوشته: 20-03-2010, 12:31

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

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