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

موضوع: استفاده همزمان از uart2 و راه اندازی ال سی دی ssd1289

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2011
    نوشته ها
    30
    تشکر
    8
    تشکر شده 0 بار در 0 پست

    Gadid استفاده همزمان از uart2 و راه اندازی ال سی دی ssd1289

    با سلام
    من از برد LPC1786-EWB کویر استفاده می کنم هنگامی که ال سی دی رو راه اندازی می کنم و پورت سریال UART2 ال سی دی درست کار می کنه اما اطلاعات پورت سریال ارسالی نامربوط می باشد وقتی فایل راه انداز ال سی دی رو نگاه کردم دیدم دایما داره دایرکشن و دیتا ی GPIO0 رو که UART2 و0 در اون قرار داره رو تعغییر می ده و عملا به خاطر استفاده از ال سی دی امکان استفاده از این پورت وجود نداره
    لطفا اینو ببینید
    void LCD_Send (uint16_t byte)
    {
    unsigned long byte2;
    LPC_GPIO2->FIODIR |= 0x000000ff; //P2.0...P2.7 Output
    LPC_GPIO2->FIOPIN = byte & 0x00FF; //Write D0..D7


    LPC_GPIO0->FIODIR |= 0x07FF8000; //P2.0...P2.7 Output
    byte=byte & 0xFF00;
    byte2= ( byte << 7);
    LPC_GPIO0->FIOPIN &=0xFF807FFF;
    LPC_GPIO0->FIOPIN |= byte2 ; //Write D0..D7
    wait_delay(10);
    }
    یا مثلادر قسمت دیگه از فایل راه انداز ال سی دی
    static __attribute__((always_inline)) uint16_t LCD_ReadData(void)
    {
    uint16_t value;

    LCD_CS(0);
    LPC_GPIO2->FIODIR &= 0xffffff00; //P2.0...P2.7 Input
    LPC_GPIO0->FIODIR |= 0xff807FFF; //P2.0...P2.7 Input
    wait_delay(50);
    LCD_RS(1)
    LCD_WR(1)
    LCD_RD(0)


    // val = lcd_read();
    wait_delay(50);
    value = LPC_GPIO2->FIOPIN & 0x00ff; //Read D8..D15
    value = value|( (LPC_GPIO0->FIOPIN & 0x7F8000) >> 7); //Read D0..D7 0x07FF8000


    LCD_RD(1)


    wait_delay(50);
    LPC_GPIO2->FIODIR |= 0x000000ff; //P2.0...P2.7 Output
    LPC_GPIO0->FIODIR |= 0x07FF8000; //P2.0...P2.7 Output
    wait_delay(50);


    LCD_CS(1);

    return value;
    }


    آیا راه حلی وجود داره؟
    تشکر فراوان

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

  3. #2
    کاربر فعال
    تاریخ عضویت
    Jul 2013
    نوشته ها
    153
    تشکر
    42
    تشکر شده 47 بار در 38 پست

    پیش فرض

    از یه uart دیگه استفاده کن.
    یا روی بِرِد بُرد ببند و پورت ال سی دی رو عوض کن

  4. #3
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2011
    نوشته ها
    30
    تشکر
    8
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط vahid_22002 نمایش پست ها
    از یه uart دیگه استفاده کن.
    یا روی بِرِد بُرد ببند و پورت ال سی دی رو عوض کن
    ممنون کلا صورت مساله رو پاک کردی ولی بازم ممنون

  5. #4
    کاربر فعال
    تاریخ عضویت
    Jul 2013
    نوشته ها
    153
    تشکر
    42
    تشکر شده 47 بار در 38 پست

    پیش فرض

    خب این بردی که داری پایه هاش مشترکه یا باید قید uart رو بزنی یا ال سی دی.

  6. #5
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2011
    نوشته ها
    30
    تشکر
    8
    تشکر شده 0 بار در 0 پست

    پیش فرض

    نقل قول نوشته اصلی توسط vahid_22002 نمایش پست ها
    خب این بردی که داری پایه هاش مشترکه یا باید قید uart رو بزنی یا ال سی دی.
    دوست عزیز ربطی به سخت افزار نداره اگه تو برنامه نویسی موقع کار با ال سی دی روی بقیه پین ها تاثیری گذاشته نشه مشکلی پیش نمیاد مثلا ببین LPC_GPIO0->FIODIR |= 0x07FF8000;
    در این دستور ما فقط برای ال سی دی به پایه های 15 تا 26 نیاز داریم ولی داریم جهت همه پایه ها رو تغییر می دیم یا
    LPC_GPIO0->FIOPIN &=0xFF807FFF;
    ممنون

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

    پیش فرض

    سلام
    پورت سریال 2 فقط روی دو تا پایه خاص نیست پایه های دیگری هم هست که میشه pinsell کرد. این ARM Wizard به همین درد میخورد
    به سادگی هم میشه با یک تغییر اسم در رجیسترها و عوض کردن pinsell شماره سریال را عوض کرد.

  8. #7
    کاربر علاقه مند
    تاریخ عضویت
    Jan 2011
    نوشته ها
    30
    تشکر
    8
    تشکر شده 0 بار در 0 پست

    پیش فرض

    با سلام
    من فکر می کردم مشکل UART2 باشه اما اومدم برنامه مثال آقای ریئسی رو روی UART3 که هیچ ارتباطی با LCD نداره ریختم باز هم کارکتر ها رو اشتباه می فرسته .فکر می کنم emwin این تیکه کد مشکل داره
    int UART3_SendByte (int ucData)
    {
    while (!(LPC_UART3->LSR & 0x20));
    return (LPC_UART3->THR = ucData);
    }
    شاید تسک ها در برخورد با این حلقه while به مشکل بر می خورند
    با تشکر


    مشکل حل شد کلاک سیستم روی 75MHZ تنطیم شده بود و باوود ریت بر اساس 100MHZ محاسبه شده بود.
    ویرایش توسط sindico : 18-07-2015 در ساعت 00:58

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

  1. پاسخ: 23
    آخرين نوشته: 04-09-2016, 11:56
  2. نوشتن متن بصورت افقی با درایور ssd1289
    توسط sindico در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 7
    آخرين نوشته: 14-07-2015, 11:32
  3. راه اندازی lcd با درایور ssd1289
    توسط miladkhakzad در انجمن AT91 series (ATMEL)
    پاسخ: 6
    آخرين نوشته: 11-03-2013, 22:58
  4. uart1 & uart2 in atmega64a?????????????
    توسط cheetah در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 19-09-2012, 13:14
  5. Ssd1289 &lpc1768
    توسط mahanb در انجمن LPC series (NXP)
    پاسخ: 22
    آخرين نوشته: 30-01-2012, 16:30

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

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