NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 1930 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 6 از 27 نخستنخست 12345678910111213141516171819202122232425 ... آخرینآخرین
نمایش نتایج: از 101 به 120 از 522

موضوع: فیلم آموزش lpc1768 (مقدماتی و متوسط)

  1. #101
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    من فیلم ها رو تماشا کردم
    ولی رجیستر ها رو که نمیشه حفظ کرد ، اگر ممکنه یه کتاب معرفی کنید که رجیستر ها و بیت هاش رو داشته باشه

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

  3. #102
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض توابع cmsis

    با سلام.
    چرا لینک CMSIS که شما در فیلم به آن اشاره میکنید از سایت NXP حذف شده و گویا به طور کل این شرکت استفاده از این دستورات رو قطع کرده چون هرچقدر در سایت رسمی به دنبال لینک دانلود گشتم چیزی پیدا نشد و لینک های قبل رو هم غیر فعال کرده.
    http://ics.nxp.com/support/documents...er.library.zip
    لطفا مهندس زرکوب اگر در این مورد اطلاعی دارید مطرح کنید.
    داخل DVD فایل های CMSIS قرار نداره و من به آنها نیاز دارم لطفا لینکی از آن قرار دهید.
    ممنون

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

    پیش فرض

    نقل قول نوشته اصلی توسط ensane2008 نمایش پست ها
    با سلام.
    چرا لینک CMSIS که شما در فیلم به آن اشاره میکنید از سایت NXP حذف شده و گویا به طور کل این شرکت استفاده از این دستورات رو قطع کرده چون هرچقدر در سایت رسمی به دنبال لینک دانلود گشتم چیزی پیدا نشد و لینک های قبل رو هم غیر فعال کرده.
    301 Moved Permanently
    لطفا مهندس زرکوب اگر در این مورد اطلاعی دارید مطرح کنید.
    داخل DVD فایل های CMSIS قرار نداره و من به آنها نیاز دارم لطفا لینکی از آن قرار دهید.
    ممنون
    سلام
    هدر ها همگی در پوشه CMSIS_Drivers_Core قرار دارد.
    در مورد فایل lpc17xx.cmsis.driver.library.zip در گوگل سرچ کنید جاهای دیگه ای که قرار دادند می تونید برای دانلود پیدا کنید.

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


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

    پیش فرض

    نقل قول نوشته اصلی توسط soodi نمایش پست ها
    سلام
    من فیلم ها رو تماشا کردم
    ولی رجیستر ها رو که نمیشه حفظ کرد ، اگر ممکنه یه کتاب معرفی کنید که رجیستر ها و بیت هاش رو داشته باشه
    سلام
    من خودم هیچ تلاشی برای حفظ کردن اینها نکرده ام چون قرار نیست بریم سر جلسه امتحان و از حفظیات روی برگه برنامه بنویسیم!
    وقتی قرار است یک پروژه ای را انجام بدهیم از سمپل هایی که قبلا نوشته ایم استفاده می کنیم و تنظیمات را از آنجا کپی می کنیم و چون قبلا در تمرینات هر قسمت با این دستورات درگیر شدیم کلیت آن در ذهنمان است و می دانیم باید چگونه از آن استفاده کنیم.

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


  8. #105
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    تشکر از پاسخ سریع شما.
    من هم از سایتی دیگر دریافت کردم ولی نه با آن حجم.
    در یکی از فرم ها جنابعالی اشاره کردید که در بحث کانتر ها کد های cmsis دچار مشکل بوده.
    سوال من این است که آیا ممکن است به علت مشکلات زیاد nxp اقدام به حذف cmsis از سایت خود کرده باشه؟

  9. #106
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    من برنامه زیر رو برای کانتر نوشتم
    یک کلید به پایه P0.4 متصل کردم و پایه رو با این کلید زمین میکنم
    ولی هیچ چیزی شمرده نمیشه و روی LCD چیزی نمایش داده نمیشه
    وارد وقفه هم نمیشه !!!

    راستی وارد دیباگ هم که میشم همه ی تنظیمات مربوط به Timer2 به صورت 0xAAAAAAA شده !!!

    این برنامه :
    کد:
    #include "LPC17xx.h"
    
    void Delay (uint32_t Time)
    {
        uint32_t i;
        
        i = 0;
        while (Time--) {
            for (i = 0; i < 5000; i++);
        }
    }
    
    #define family_lpc17xx
    #define TFTLCD_DATAPORT_1
    #define TFTLCD_DATAPORT_OFFSET 15
    #define TFTLCD_CONTROLPORT_2
    
    #define TFTLCD_RST    0
    #define TFTLCD_RS   2
    #define TFTLCD_CS      1        
    #define TFTLCD_RD     4
    #define TFTLCD_WR      3
    #define PORTRAIT
    #include <tftlcd_functions.h>
    
    void TIMER2_IRQHandler (void) 
    {        
        
          LPC_GPIO2->FIOSET = 0x155;
          Delay(500);
                
                LPC_GPIO2->FIOCLR = 0x3ff;
          Delay(500);
    
          LPC_GPIO2->FIOSET = 0x2AA;
          Delay(500);
                
                LPC_GPIO2->FIOCLR = 0x3ff;
          Delay(500);
        
      LPC_TIM2->IR = 1;            /* clear interrupt flag */
    }
    
    int main(){
        
        unsigned int s;
      char p[100];
        
        LPC_GPIO2->FIODIR = 0x3ff;    /* LEDs PORT2 0...7 are Output */
      LPC_GPIO2->FIOCLR = 0x3ff;        /* turn off all the LEDs */
    
     LPC_TIM2->CTCR = 0x01;             // set T/C for Counter Rising edge;                              // set T/C for Timer
     LPC_TIM2->PR = 0;                                 // no prescale
     LPC_TIM2->MR0 = 10;
     LPC_TIM2->TCR = 2;                                 // reset counter , disable counter
     LPC_TIM2->MCR = 2;                                 //when T0MR0 is match with T0TC , this register generate interrupt and reset counter(T0TC)
        
        LPC_PINCON->PINSEL0 = 0x00000300; 
        
      // -------------- interupt seting ----------------
      NVIC_SetPriority(TIMER2_IRQn,0); /* Default priority group 0, can be 0(highest) - 31(lowest) */
      NVIC_EnableIRQ(TIMER2_IRQn); /* Enable Timer0 Interrupt */
        
             
    
    SystemInit();
    tftlcd_init();
    tftlcd_clear();
        
    LPC_TIM2->TCR = 1;           //enable counter
        
    while(1){
        s=LPC_TIM2->TC;
      tftlcd_clear();
      sprintf(p," %i",s);
        tftlcd_gotoxy(1,1);    
        tftlcd_putsf("Number:",0,10000,0);
        tftlcd_gotoxy(8,1);    
        tftlcd_puts(p,0,100000,0);
      Delay(100);        
    }
    }

  10. #107
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    برنامه زیر رو نوشتم
    توی Hyper Terminal یه سری علائم ناشناس دریافت میکنه و دریافت ها کاملا اشتباه هست
    مثلا اینها رو دریافت میکنه :

    ?7ÛºþÙ6ûß ¶7û¾û ö~7ú þ Ùý»ûÛû ¶?7û û ö~7úãþ Ùý»ûïûý¶?7 ˜ß ö~þ
    Ï Ùý» »ûýô?7ß÷þÙ6þÓ Ùý» ûû ô~7ß¾þ Ùý» ß ¶7 ¼û ö~7þïþ Ùý»ã¸û ¶?7ãî

    برای ارسال هم وقتی دکمه 1 رو روی کیبرد میزنم عدد 49 روی LCD نمایش داده میشه ولی وقتی عدد رو با فرمت هگز توسط رایانه برای میکرو ارسال میکنم همون 1نمایش داده میشه
    به چه تابعی باید دریافت کنم که وقتی توی Hyper عدد 1 رو میزنم ، میکرو هم 1 رو بگیره ؟؟؟

    این برنامه :
    کد:
    #include <LPC17xx.h>
    #include <stdio.h>
    #include <uart.h>
    
    
    void Delay (uint32_t Time)
    {
        uint32_t i;
        
        i = 0;
        while (Time--) {
            for (i = 0; i < 5000; i++);
        }
    }
    
    #define family_lpc17xx
    #define TFTLCD_DATAPORT_1
    #define TFTLCD_DATAPORT_OFFSET 15
    #define TFTLCD_CONTROLPORT_2
    
    #define TFTLCD_RST    0
    #define TFTLCD_RS   2
    #define TFTLCD_CS      1        
    #define TFTLCD_RD     4
    #define TFTLCD_WR      3
    #define PORTRAIT
    #include <tftlcd_functions.h>
    
    int s;
    char p[100];
    unsigned char  pa;
    char ppa[100];
    
    void UART2_IRQHandler(void) {
        
      pa = UART2_GetChar();
        tftlcd_clear();
      sprintf(ppa," %i",pa);    
        tftlcd_gotoxy(1,2);    
      tftlcd_putsf("UART:",RED,WHITE,0);
        tftlcd_gotoxy(8,2);    
        tftlcd_puts(ppa,BLACK,WHITE,0);
        Delay(1000);
        
    }
    
    int main(void)
    {
        int s;
        SystemInit();
        UART2_Init();
        tftlcd_init();
      tftlcd_clear();
        
          LPC_UART2->IER = 0x01;
          NVIC_SetPriority(UART2_IRQn,0);
        NVIC_EnableIRQ(UART2_IRQn); 
    
    while (1) 
          {
        UART2_SendString("soodi");    
        UART2_SendChar(s);
                
        s = s+1;
      tftlcd_clear();            
        sprintf(p," %i",s);
        tftlcd_gotoxy(1,1);    
        tftlcd_putsf("Number:",RED,WHITE,0);
        tftlcd_gotoxy(8,1);    
        tftlcd_puts(p,BLACK,WHITE,0);
    
      Delay(500);
                
      }
    }

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

    پیش فرض

    تنظیمات هایپرترمینال را درست انجام دادید؟
    مشکل کانترتان حل شد؟
    نقل قول نوشته اصلی توسط ensane2008 نمایش پست ها
    در یکی از فرم ها جنابعالی اشاره کردید که در بحث کانتر ها کد های cmsis دچار مشکل بوده.
    سوال من این است که آیا ممکن است به علت مشکلات زیاد nxp اقدام به حذف cmsis از سایت خود کرده باشه؟
    نه بابا فکر نکنم چه مشکلی حالا یه کانتر از دستش در رفته یکی دو تا تنظیم یادش رفته بذاره خوب خودتون اضافه کنید مگه چه مورد دیگه هست؟ حذف هم بکنه جاهای دیگه هست دانلود میشه کرد فرقی نمی کنه بذاره یا نذاره!

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


  13. #109
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    بله هایپر ترمینال درست هست
    ارسال از رایانه و دریافت از میکرو درست انجام میشه
    ولی ارسال از میکرو و دریافت از رایانه اصلا درست انجام نمیشه !!!!!!

    1 . راستی نگفتید که با چه تابعی دریافت کنم که توی هایپر ترمینال عدد 1 رو میزنم ، توی میکرو هم 1 دریافت بشه ؟؟؟؟

    مشکل کانتر هم هنوز حل نشده ولی احتمال میدم که از TFT LCD باشه ، چون بیشتر پایه های میکرو رو اشغال کرده !!!!!!!!
    حالا میخام سریال رو راه اندازی کنم و اطلاعات کانتر رو روی سریال بندازم

    2 . ببخشید اینقدر سوال میکنم ، یک خروجی دارم که فرکانسش ثابت هست (50هزتر) ، برای خوندنش باید با تایمر یه زمانی ایجاد کنم و توی این زمان با کانتر شمارش کنم ، درسته ؟؟؟؟

    راستی از این هدر استفاده میکنم :
    کد:
    /*-------------------------------------------------------------------------------
                                                                     www.ECA.ir
                                                       LPC1768 Dev Board Rev.A
    --------------------------------------------------------------------------------*/
    #include "lpc17xx.h"                              /* LPC17xx definitions    */
    #include "uart.h"
    
    #define FOSC                        12000000                            /*  Oscillator frequency                  */
    
    #define FCCLK                      (FOSC  * 8)                          /*  Master clock frequency <= 100Mhz          */
                                                                            /*  Multiples of FOSC                */
    #define FCCO                       (FCCLK * 3)                          /*  PLL frequency (275Mhz ~ 550Mhz)      */
                                                                            /*  And FCCLK the same or an even multiple of its */
    #define FPCLK                      (FCCLK / 4)                          /*  Peripheral clock frequency, FCCLK 1 / 2, 1 / 4*/
                                                                            /*  The same or FCCLK               */
    
    #define UART0_BPS     115200                                             /* 0 Serial communication baud rate            */
    #define UART2_BPS     115200                                             /* 2 serial communication baud rate             */
    /*********************************************************************************************************
    ** Function name:       UART0_Init
    ** Descriptions:        By default initialize the serial port 0 pins and communication parameters. Set to 8 data bits, 1 stop bit, no parity
    ** input parameters:    No
    ** output parameters:   No
    ** Returned value:      No
    *********************************************************************************************************/
    void UART0_Init (void)
    {
        uint16_t usFdiv;
        /* UART0 */
        LPC_PINCON->PINSEL0 |= (1 << 4);             /* Pin P0.2 used as TXD0 (Com0) */
        LPC_PINCON->PINSEL0 |= (1 << 6);             /* Pin P0.3 used as RXD0 (Com0) */
      
          LPC_UART0->LCR  = 0x83;                      /* Allows you to set the baud rate               */
        usFdiv = (FPCLK / 16) / UART0_BPS;           /* Set baud rate                   */
        LPC_UART0->DLM  = usFdiv / 256;
        LPC_UART0->DLL  = usFdiv % 256; 
        LPC_UART0->LCR  = 0x03;                      /* Locked baud rate                   */
        LPC_UART0->FCR  = 0x06;                    
    }
    
    /*********************************************************************************************************
    ** Function name:       UART0_SendByte
    ** Descriptions: send data from serial port 0
    ** Input parameters: data: data sent
    ** Output parameters: None
    ** Returned value: None
    *********************************************************************************************************/
    int UART0_SendByte (int ucData)
    {
        while (!(LPC_UART0->LSR & 0x20));
        return (LPC_UART0->THR = ucData);
    }
    
    /*----------------------------------------------------------------------------
      Read character from Serial Port   (blocking read)
     *----------------------------------------------------------------------------*/
    int UART0_GetChar (void) 
    {
          while (!(LPC_UART0->LSR & 0x01));
          return (LPC_UART0->RBR);
    }
    
    /*********************************************************************************************************
    Write character to Serial Port
    ** Function name: UART0_SendString
    ** Descriptions: send a string to the serial port
    ** Input parameters: s: pointer to send the string
    ** Output parameters: None
    ** Returned value: None
    *********************************************************************************************************/
    void UART0_SendString (unsigned char *s) 
    {
          while (*s != 0) 
        {
               UART0_SendByte(*s++);
        }
    }
    
    void UART0_SendChar(uint16_t disp)
    {
        uint16_t dispbuf[4];
        uint8_t i;
    
        dispbuf[3] = disp%10 + '0';
        dispbuf[2] = disp/10%10 + '0';
        dispbuf[1] = disp/10/10%10 + '0';
        dispbuf[0] = disp/10/10/10%10 + '0';
        for(i=0;i<4;i++)
            UART0_SendByte(dispbuf[i]);    
    }
    /*********************************************************************************************************
    ** Function name:       UART2_Init
    ** Descriptions: by default initialize the serial port 2 pins and communication parameters. Set to 8 data bits, 1 stop bit, no parity
    ** Input parameters: None
    ** Output parameters: None
    ** Returned value: None
    *********************************************************************************************************/
    void UART2_Init (void)
    {
        uint16_t usFdiv;
        /* UART2 */
        LPC_PINCON->PINSEL0 |= (1 << 20);             /* Pin P0.10 used as TXD2 (Com2) */
        LPC_PINCON->PINSEL0 |= (1 << 22);             /* Pin P0.11 used as RXD2 (Com2) */
    
           LPC_SC->PCONP = LPC_SC->PCONP|(1<<24);          /*Open UART2 power control bit               */
    
        LPC_UART2->LCR  = 0x83;                       /* Allows you to set the baud rate                */
        usFdiv = (FPCLK / 16) / UART2_BPS;            /* Set baud rate                    */
        LPC_UART2->DLM  = usFdiv / 256;
        LPC_UART2->DLL  = usFdiv % 256; 
        LPC_UART2->LCR  = 0x03;                       /* Locked baud rate                    */
        LPC_UART2->FCR  = 0x06;
    }
    
    /*********************************************************************************************************
    ** Function name:       UART2_SendByte
    ** Descriptions: send data from serial port 2
    ** Input parameters: data: data sent
    ** Output parameters: None
    ** Returned value: None
    *********************************************************************************************************/
    int UART2_SendByte (int ucData)
    {
        while (!(LPC_UART2->LSR & 0x20));
        return (LPC_UART2->THR = ucData);
    }
    
    /*----------------------------------------------------------------------------
      Read character from Serial Port   (blocking read)
     *----------------------------------------------------------------------------*/
    int UART2_GetChar (void) 
    {
          while (!(LPC_UART2->LSR & 0x01));
          return (LPC_UART2->RBR);
    }
    
    /*********************************************************************************************************
    ** Write character to Serial Port
    ** Function name: UART2_SendString
    ** Descriptions: send a string to the serial port
    ** Input parameters: s: pointer to send the string
    ** Output parameters: None
    ** Returned value: None
    *********************************************************************************************************/
    void UART2_SendString (unsigned char *s) 
    {
          while (*s != 0) 
        {
               UART2_SendByte(*s++);
        }
    }
    
    
    void UART2_SendChar(uint16_t disp)
    {
        uint16_t dispbuf[4];
        uint8_t i;
    
        dispbuf[3] = disp%10 + '0';
        dispbuf[2] = disp/10%10 + '0';
        dispbuf[1] = disp/10/10%10 + '0';
        dispbuf[0] = disp/10/10/10%10 + '0';
        for(i=0;i<4;i++)
            UART2_SendByte(dispbuf[i]);    
    }
    ویرایش توسط soodi : 04-08-2013 در ساعت 21:07

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

    پیش فرض

    سلام
    من که تا حالا با mini programer کویر به عنوان سخت افزار بین میکرو و pc استفاده می کردم مشکلی به وجود نیومده
    در موردی که دارید از lcd تاچ برد استفاده می کنید باید دقت شود پایه برای کار دیگری استفاده نشود
    من برای استفاده همزمان از تایمر و کانتر و سریال و lcd برد کویر از پایه های زیر استفاده می کنم:
    · کانتر 0 و 1 پایه های p1.26 و p1.18
    · تایمر mat 2 و 3 پایه های p4.28 و p0.10
    · پورت سریال1: دریافت پایه p0.16 ارسال پایه p0.15
    · وقفه خارجی 0 p2.10

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


  16. #111
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    خیلی ممنون

    درسته ، فکر کنم مشکل از سخت افزار باشه
    یعنی مبدل USB/Serial خرابه یا مدارات واسط
    پس یدونه Mini Lpc بخرم دیگه نیاز با آیسی Max هم نیست ؟

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

    پیش فرض

    نه دیگه نیست مستقیم از خروجی Tx و Rx و Gnd میکرو میدید بهش و اونورشم میزنید به usb کامپیوترتون که با نصب درایورش (اگه مبدلتان داشته باشه) یه com می شناسه

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


  19. #113
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    من سخت افزارم رو چک کردم ، حتی MAX232 هم تعویض کردم
    با یک مبدل USB به سریال دیگه هم امتحان کردم ولی نتایج همون :

    7ÛºþÙ6ûß ¶7û¾û ö~7ú þ Ùý»ûÛû ¶?7û û ö~7úãþ Ùý»ûïûý¶?7 ˜ß ö~þ
    Ï Ùý» »ûýô?7ß÷þÙ6þÓ Ùý» ûû ô~7ß¾þ Ùý» ß ¶7 ¼û ö~7þïþ Ùý»ã¸û ¶?7ãî

    هست
    ماژول EM-18 رو هم متصل کردم به سخت افزارم و روی Hyper Terminal دقیقا درست جواب میداد و نتایج نمایش داده میشد به درستی
    فکر کنم مشکل از میکرو هست !!!!
    کجا رو باید چک کنم ؟ سخت افزار ؟ نرم افزار ؟

    با سپاس

  20. #114
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    آقا این uart داره دیوونم میکنه !!!!!!
    سخت افزار و نرم افزار همه چی درسته !!!!
    نمیدونم میکرو چرا چرت و پرت میفرسه !!!!!!!!

  21. #115
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2007
    نوشته ها
    52
    تشکر
    12
    تشکر شده 27 بار در 17 پست

    پیش فرض

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

    با تشکر از زحمتتان

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


  23. #116
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    UART درست شد ، البته با تغییر در :

    کد:
    #define FOSC                        13000000                            /*  Oscillator frequency                  */

    که 12000000 بود و تغییرش دادم 13000000 گفتم شاید به دلیلش کیفیت پایین کریستال باشه
    ولی کریستال رو هم عوض کردم باز هم با 12000000 جواب نداد
    بیخیال حالا داره با 13 جواب میده فعلا !!!!!!

    میخام یه برنامه بنویسم که یه فرکانس 50 هرتز با پریود 1 تا 2 میلی ثانیه رو بخونه
    این برنامه آماده بود :


    کد:
    ------------------------------------
    'counter  until 8 mhz
    'برنامه نویسی میکروکنترلرها 
    '88/5/21
    '-------------------------------------
    $regfile = "m32def.dat"
    $crystal = 8000000
    '----------
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = _
    Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
    Cursor Off
    '-----------
    Config Timer1 = Counter , Edge = Rising
    Ddrb.1 = 0
    Portb.1 = 1
    '-------
    Config Timer0 = Timer , Prescale = 1024
    '---------------
    Enable Timer1
    Enable Timer0
    Enable Interrupts
    
    '---------------------
    On Ovf1 Pulse_counter
    On Ovf0 Yazdkit
    '-------------------
    Dim A As Long , B As Byte , I As Long
    B = 0
    '----------------------------
    Cls
    Locate 1 , 1
    Lcd "Frequency meter"
    Locate 2 , 1
    Lcd "www.PicPars.com"
    Wait 5
    Cls
    '-----------------------
    Start Timer0
    '------------
    Do
    Loop
    End                                                         'end program
    '--------------
    Yazdkit:
    Incr I
    If I > 30 Then
    Stop Timer0
    Cls
    Home
    A = B * 65536
    A = A + Counter1
    Lcd "frequency:"
    Locate 2 , 1
    Lcd A ; " HZ"
    
    B = 0
    I = 0
    Counter1 = 0
    Start Timer0
    End If
    Return
    '----------------------
    Pulse_counter:
    Incr B
    Counter1 = 0
    Return
    من هم تغییرش دادم به این ولی فقط عدد 116 رو نشون میده !!!!
    توی یه مدت زمانی که تایمر ایجاد میکنه ، با کانتر شمارش میکنم و نشون میدم :


    کد:
    #include "LPC17xx.h"
    #include <stdio.h>
    
    void Delay (uint32_t Time)
    {
        uint32_t i;
        
        i = 0;
        while (Time--) {
            for (i = 0; i < 5000; i++);
        }
    }
    
    #define family_lpc17xx
    #define TFTLCD_DATAPORT_1
    #define TFTLCD_DATAPORT_OFFSET 15
    #define TFTLCD_CONTROLPORT_2
    
    #define TFTLCD_RST    3
    #define TFTLCD_RS   5
    #define TFTLCD_CS      4        
    #define TFTLCD_RD     7
    #define TFTLCD_WR      6
    #define PORTRAIT
    #include <tftlcd_functions.h>
    
        unsigned int s;
      char p[100];
    
    void TIMER1_IRQHandler (void) 
    {
      s=LPC_TIM0->TC;
      sprintf(p," %i",s);
        tftlcd_clear();
        tftlcd_gotoxy(1,2);    
        tftlcd_putsf("Number:",BLACK,YELLOW,0);
        tftlcd_gotoxy(8,2);    
        tftlcd_puts(p,RED,WHITE,0);    
        Delay(5000);
        LPC_TIM0->TC=0;
      LPC_TIM0->TCR = 2; // reset counter , disable counter
      LPC_TIM1->IR = 1;            /* clear interrupt flag */
    return;
    }
    
    int main(){
        
        LPC_GPIO0->FIODIR = 0x1FF8000;
      LPC_GPIO0->FIOCLR = 0x1FF8000;
        
         //timer1 setting
      LPC_TIM1->CTCR = 0;                            // set T/C for Timer
      LPC_TIM1->PR = 0;                                 // no prescale
      LPC_TIM1->MR0 = 50000000;
      LPC_TIM1->TCR = 2;                                 // reset counter , disable counter
      LPC_TIM1->MCR = 3;                                 //when T0MR0 is match with T0TC , this register generate interrupt and reset counter(T0TC)
    
     LPC_TIM0->CTCR = 0x01;             // set T/C for Counter Rising edge;                              // set T/C for Timer
     LPC_TIM0->PR = 0;                                 // no prescale
     LPC_TIM0->MR0 = 500;
     LPC_TIM0->TCR = 2;                                 // reset counter , disable counter
     LPC_TIM0->MCR = 2;                                 //when T0MR0 is match with T0TC , this register generate interrupt and reset counter(T0TC)
        
    LPC_PINCON->PINSEL3 = 0x00300000;
    
      // -------------- interupt seting ----------------
      NVIC_SetPriority(TIMER1_IRQn,0); /* Default priority group 0, can be 0(highest) - 31(lowest) */
      NVIC_EnableIRQ(TIMER1_IRQn); /* Enable Timer0 Interrupt */
            
    tftlcd_init();
    tftlcd_clear();
    tftlcd_gotoxy(1,1);    
    tftlcd_putsf("Wait For Counter !!!",BLACK,YELLOW,0);    
    
    LPC_TIM1->TCR = 1;           //enable counter
    while(1){
      LPC_TIM0->TCR = 1;           //enable counter
    }
    }

  24. #117
    کاربر فعال soodi آواتار ها
    تاریخ عضویت
    Jun 2010
    نام
    مسعود محمدی
    نوشته ها
    264
    تشکر
    111
    تشکر شده 296 بار در 138 پست

    پیش فرض

    سلام

    2 تا سوال دارم

    1 . پست بالایی که فقط عدد 116 رو نشون میده ؟؟؟ اصلا برای خوندم فرکانس و پریود کار درستی کردم ؟؟؟
    2 . تابع زیر رو میخاهم به صورتی تغییر بدم که بتونم تعداد کاراکتر های رشته رو مشخص کنم وقتی رسید به اون عدد از دریافت خارج بشه
    الان وقتی که Enter دریافت شد از دریافت خارج میشه و رشته برگردونده میشه

    کد:
    int UART0_Getstring (unsigned char *str) 
    {
        int i = 0;
      unsigned char *temp = str;
        
        do{
            *temp = UART0_GetChar();
            i++;
        }while(*(temp++) != 0x0D);
        *(temp-1) = 0;
          return i;
    }

  25. #118
    کاربر علاقه مند adibsp آواتار ها
    تاریخ عضویت
    Jul 2012
    نام
    ادیب صدری
    نوشته ها
    50
    تشکر
    50
    تشکر شده 39 بار در 25 پست

    پیش فرض

    نقل قول نوشته اصلی توسط soodi نمایش پست ها
    سلام

    UART درست شد ، البته با تغییر در :

    کد:
    #define FOSC                        13000000                            /*  Oscillator frequency                  */
    [SIZE=3]
    که 12000000 بود و تغییرش دادم 13000000 گفتم شاید به دلیلش کیفیت پایین کریستال باشه
    ولی کریستال رو هم عوض کردم باز هم با 12000000 جواب نداد
    بیخیال حالا داره با 13 جواب میده فعلا !!!!!!
    سلام. دوست من از این که فرصت اشکال زدایی برنامت رو ندارم معذرت میخام.نکته ای که تو پست بالا به ذهنم رسید اینه که اشکال قطعا از کریستالت نیست از مقدار دهی رجیسترهای تنطیم بادریت یا فرکانس کلاک cpu یا تقسیم کننده های جانبیه.و اگه حرف من درست باشه برنامت با تغییر بادریت نباید به درستی کار کنه.پس بهتره یه برنامه قابل اطمینان از هر لحاظ بنویسین.

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

    پیش فرض

    نقل قول نوشته اصلی توسط soodi نمایش پست ها
    آقا این uart داره دیوونم میکنه !!!!!!
    سخت افزار و نرم افزار همه چی درسته !!!!
    نمیدونم میکرو چرا چرت و پرت میفرسه !!!!!!!!
    نقل قول نوشته اصلی توسط soodi نمایش پست ها
    سلام
    UART درست شد ، البته با تغییر در :

    کد:
    #define FOSC                        13000000                             /*  Oscillator frequency                  */

    که 12000000 بود و تغییرش دادم 13000000 گفتم شاید به دلیلش کیفیت پایین کریستال باشه
    ولی کریستال رو هم عوض کردم باز هم با 12000000 جواب نداد
    بیخیال حالا داره با 13 جواب میده فعلا !!!!!!
    سلام
    من روی یه برد لندتایگر برنامه پورت سریال را یه کوچولو تست کردم جواب نداد! دیگه زیاد بهش ور نرفتم ولی برای com0 باید الی سی دی تاچ را از روی برد برداشت فکر کنم. درسته؟

  27. #120
    عضو جدید aiohalaziz آواتار ها
    تاریخ عضویت
    May 2013
    نوشته ها
    14
    تشکر
    11
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ببخشید چه فلش پلیری؟!!

صفحه 6 از 27 نخستنخست 12345678910111213141516171819202122232425 ... آخرینآخرین

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

  1. [خبر] فیلم آموزش پیشرفته lpc1768 (ورژن2)
    توسط mzarkoob در انجمن LPC series (NXP)
    پاسخ: 604
    آخرين نوشته: 26-05-2019, 13:49
  2. آموزش ساخت پروژه با توابع cmsis
    توسط Doloop در انجمن stm32
    پاسخ: 28
    آخرين نوشته: 19-07-2016, 19:17
  3. نام توابع روتین وقفه ها در Keil برای lpc17xx
    توسط Havva2 در انجمن Cortex-a8-a9 arm9-11
    پاسخ: 4
    آخرين نوشته: 09-11-2015, 19:39
  4. کتابخانه CMSIS برای LPC17xx
    توسط hamed.b3269 در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 17-06-2014, 20:01

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

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