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

موضوع: وقفه در lpc 1768

  1. #1
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    Exclamation وقفه در lpc 1768

    سلام به همه مهندسین
    من با coide یه فلشر نوشتم و میخواستم زمانی که وقفه خارجی فعال میشه led ها به اون صورت که من نوشتم تو یه حلقه بی نهایت ثابت بمونه اما زمانی که وقفه خارجی رو فعال میکنم led ها به یه صورت دیگه ثابت میمونه حتی اومدم و یه نوع فلشر با زمان متفاوت با فلشر خارج از حلقه رو توی حلقه نوشتم ولی باز ledها به همون صورت باقی موند.
    این رو بگم که تا زمانی وقفه خارجی رو فعال نکردم کد خارج از وقفه درست کار میکنه که یه فلشر هست که سرعت اون کم وزیاد میشه(ضمنا من این برنامه رو روی برد lpc1768 فروشگاه تست کردم)
    این هم کدش
    [PHP]
    #include"lpc17xx_gpio.h"
    #include"delay.h"
    int i,d,a;
    d=2;
    int main(void)
    {
    GPIO_SetDir(2,1<<11,0);
    GPIO_SetDir(2,1<<12,0);
    GPIO_SetDir(2,0x000000ff,1);
    GPIO_IntCmd(2,1<<10,1);
    NVIC_EnableIRQ(EINT3_IRQn);
    while(1)
    {
    GPIO_ClearValue(2,0x000000ff);
    for(i=0;i<10;i++)
    {
    GPIO_SetValue(2,0x0000000f);
    if(d==0)
    {
    d=1;
    }
    delay_ms(d);
    }
    GPIO_ClearValue(2,0x000000ff);
    GPIO_SetValue(2,0x000000f0);
    delay_ms(10*d);
    if(!(GPIO_ReadValue(2)&1<<11))
    {
    d++;
    delay_ms(50);
    }
    if(!(GPIO_ReadValue(2)&1<<12))
    {
    d--;
    delay_ms(50);
    }
    if(GPIO_GetIntStatus(2,1<<10,1))
    {
    while(1)
    GPIO_SetValue(2,0x00000033);

    }

    }
    }

    [/PHP]

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

  3. #2
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    سلام مجدد
    کسی نیست ما رو از چاله در بیاره( و به سمت چاه هدایت فرماید)

  4. #3
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    جون من f1 بفرمایید(help)

  5. #4
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    یه جوان مرد ما رو از حالت erorr در بیاره

  6. #5
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    ای روزگار ببین کسی دست ما رو که نمیگیره هیچ نگاهمون هم نمیکنه

  7. #6
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    نبووووووووووووووووووووووو ووووووووووووووووووووووووو وووووووووووووووووووووود

  8. #7
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    نقل قول نوشته اصلی توسط avr_rva نمایش پست ها
    سلام به همه مهندسین
    من با coide یه فلشر نوشتم و میخواستم زمانی که وقفه خارجی فعال میشه led ها به اون صورت که من نوشتم تو یه حلقه بی نهایت ثابت بمونه اما زمانی که وقفه خارجی رو فعال میکنم led ها به یه صورت دیگه ثابت میمونه حتی اومدم و یه نوع فلشر با زمان متفاوت با فلشر خارج از حلقه رو توی حلقه نوشتم ولی باز ledها به همون صورت باقی موند.
    این رو بگم که تا زمانی وقفه خارجی رو فعال نکردم کد خارج از وقفه درست کار میکنه که یه فلشر هست که سرعت اون کم وزیاد میشه(ضمنا من این برنامه رو روی برد lpc1768 فروشگاه تست کردم)
    این هم کدش
    [php]
    #include"lpc17xx_gpio.h"
    #include"delay.h"
    int i,d,a;
    d=2;
    int main(void)
    {
    gpio_setdir(2,1<<11,0);
    gpio_setdir(2,1<<12,0);
    gpio_setdir(2,0x000000ff,1);
    gpio_intcmd(2,1<<10,1);
    nvic_enableirq(eint3_irqn);
    while(1)
    {
    gpio_clearvalue(2,0x000000ff);
    for(i=0;i<10;i++)
    {
    gpio_setvalue(2,0x0000000f);
    if(d==0)
    {
    d=1;
    }
    delay_ms(d);
    }
    gpio_clearvalue(2,0x000000ff);
    gpio_setvalue(2,0x000000f0);
    delay_ms(10*d);
    if(!(gpio_readvalue(2)&1<<11))
    {
    d++;
    delay_ms(50);
    }
    if(!(gpio_readvalue(2)&1<<12))
    {
    d--;
    delay_ms(50);
    }
    if(gpio_getintstatus(2,1<<10,1))
    {
    while(1)
    gpio_setvalue(2,0x00000033);

    }

    }
    }

    [/php]
    خداییش من یکی دوبار خوندم نفهمیدم چی گفتید!
    اگه وقفه فعال کرددی پس تابع وقفه کجاست؟؟
    ویرایش توسط mansoory : 13-03-2013 در ساعت 13:00

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


  10. #8
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mansoory نمایش پست ها
    خداییش من یکی دوبار خوندم نفهمیدم چی گفتید!
    اگه وقفه فعال کرددی پس تابع وقفه کجاست؟؟
    دقیقا برای منم همین اتفاق افتاد!!!
    بهتر نبست به جای اینکه یک سوال را گنگ مطرح کنیم و ده بار بگیم چرا کسی نیست یک بار سوال را کامل مطرح کنیم؟

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


  12. #9
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    منظورم این هست که این فلشر تا زمانی که وقفه رو فعال نکردم کار میکنه ولی وقتی وقفه خارجی رو فعال کردم کار نمیکنه
    [PHP]
    #include"lpc17xx_gpio.h"
    //-----------------------------------
    #include"delay.h"
    void ENTE3_IRQHandler(void);
    //-----------------------------------
    int i,d,a;
    d=2;
    int main(void)
    {
    GPIO_SetDir(2,1<<11,0);
    GPIO_SetDir(2,1<<12,0);
    GPIO_SetDir(2,0x000000ff,1);
    GPIO_IntCmd(2,1<<10,1);
    NVIC_EnableIRQ(EINT3_IRQn);
    while(1)
    {
    GPIO_ClearValue(2,0x000000ff);
    for(i=0;i<10;i++)
    {
    GPIO_SetValue(2,0x0000000f);
    if(d==0)
    {
    d=1;
    }
    delay_ms(d);
    }
    GPIO_ClearValue(2,0x000000ff);
    GPIO_SetValue(2,0x000000f0);
    delay_ms(10*d);
    if(!(GPIO_ReadValue(2)&1<<11))
    {
    d++;
    delay_ms(50);
    }
    if(!(GPIO_ReadValue(2)&1<<12))
    {
    d--;
    delay_ms(50);
    }
    if(GPIO_GetIntStatus(2,1<<10,1))
    {
    while(1)
    GPIO_SetValue(2,0x000000ff);

    }

    }
    }

    [/PHP]

  13. #10
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

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

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


  15. #11
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    سلام
    زیاد وارد جزییات برنامتون نشدم اما از روی توضیحی که دادید: برنامه داره کار خودش کار می کند تا زمانی که وقفه ای بیاید. میره در زیر روال وقفه و کاری که براش مشخص کرده ایم را انجام می دهد. در اینجا موقع خروج باید پرچم وقفه را پاک کنیم و از زیر روال خارج بشیم و گرنه برنامه تا قیام قیامت اون تو میمونه و ما را نفرین میکنه
    غیر از مساله ای که فرمودید تابع وقفه خالیه!
    دوم اینکه، توی برنامه یه جایی هست که گفته:
    [PHP]
    if(GPIO_GetIntStatus(2,1<<10,1))
    {
    while(1)
    GPIO_SetValue(2,0x000000ff);

    }[/PHP]
    یه حلقه بینهایت داخل برنامه قرار گرفته که موجب میشه برنامه همونجا قفل بشه.
    کلا به نظر میاد آنچه که باید در تابع وقفه بنویسند رو در تابع Main نوشته اند.

  16. #12
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    این هم یک سری اصلاح
    1-تابع وقفه
    2-حذف حلقه بینهابت در وقفه
    3-پاک کردن پرچم وقفه بعد از اجرا
    ولی بازم همون آش هست و ه.ون کاسه
    [PHP]
    #include"lpc17xx_gpio.h"
    //-----------------------------------
    #include"delay.h"
    void ENTE3_IRQHandler(void);
    //-----------------------------------
    int i,d,a;
    d=2;
    int main(void)
    {
    GPIO_SetDir(2,1<<11,0);
    GPIO_SetDir(2,1<<12,0);
    GPIO_SetDir(2,1<<10,0);
    GPIO_SetDir(2,0x000000ff,1);
    GPIO_IntCmd(2,1<<10,1);
    NVIC_EnableIRQ(EINT3_IRQn);
    while(1)
    {
    GPIO_ClearValue(2,0x000000ff);
    for(i=0;i<10;i++)
    {
    GPIO_SetValue(2,0x0000000f);
    if(d==0)
    {
    d=1;
    }
    delay_ms(d);
    }
    GPIO_ClearValue(2,0x000000ff);
    GPIO_SetValue(2,0x000000f0);
    delay_ms(10*d);
    if(!(GPIO_ReadValue(2)&1<<11))
    {
    d++;
    delay_ms(50);
    }
    if(!(GPIO_ReadValue(2)&1<<12))
    {
    d--;
    delay_ms(50);
    }
    if(GPIO_GetIntStatus(2,1<<10,1))
    {
    GPIO_ClearInt(2,1<<10);
    GPIO_SetValue(2,0x000000ff);
    delay_ms(5000);

    }

    }
    }

    [/PHP]

  17. #13
    کاربر علاقه مند avr_rva آواتار ها
    تاریخ عضویت
    May 2011
    نام
    مجتبی بحرینی
    نوشته ها
    86
    تشکر
    8
    تشکر شده 6 بار در 5 پست

    پیش فرض

    f1بفرمایید

  18. #14
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط avr_rva نمایش پست ها
    این هم یک سری اصلاح
    1-تابع وقفه
    2-حذف حلقه بینهابت در وقفه
    3-پاک کردن پرچم وقفه بعد از اجرا
    ولی بازم همون آش هست و ه.ون کاسه
    در تابع وقفه که چیزی ننوشتید آخه !!!

  19. #15
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    شما تابع وقفه رو فقط بصورت prototype تعریف میکنید ولی از پیاده سازی خبری نیست !
    شرط اتفاق افتادن وقفه باید تو روتین وقفه بررسی بشه نه تو main !
    در واقع شما از توابع اینتراپت دارید بصورت polling استفاده میکنید !

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

  1. لایبری های نوشته شده برای 1768
    توسط esi_52000 در انجمن LPC series (NXP)
    پاسخ: 59
    آخرين نوشته: 20-05-2015, 14:15
  2. lcd بورد 1768
    توسط microprocesor_2002 در انجمن LPC series (NXP)
    پاسخ: 4
    آخرين نوشته: 11-11-2014, 20:32
  3. کلاک cpu در 1768
    توسط forumwork.net در انجمن LPC series (NXP)
    پاسخ: 13
    آخرين نوشته: 10-05-2013, 16:10
  4. برد برای lpc 1768
    توسط ramin.st در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 24-03-2013, 21:03
  5. طراحی برد ساده بر پایه lpc 1768
    توسط alamdar در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 1
    آخرين نوشته: 28-10-2012, 13:47

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

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