اطلاعیه

Collapse
No announcement yet.

[آموزش] آموزش کامپایلر CCS از صفر

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : [آموزش] آموزش کامپایلر CCS از صفر

    نوشته اصلی توسط evergreen نمایش پست ها
    با سلام. 5.093 را میتوانید از لینک زیر بگیرید. ( البته من خودم تستش نکردم.)
    http://www.nonlinear.ir/ccs-compiler
    ممنون ولی لینکش خرابه و خطای 404 میده

    دیدگاه


      #32
      پاسخ : [آموزش] آموزش کامپایلر CCS از صفر

      نوشته اصلی توسط Matin_Mirzadeh نمایش پست ها
      ممنون ولی لینکش خرابه و خطای 404 میده
      با سلام مجدد، احتمالا مثل سایتهای دانلود فیلم عمل کردند، فعلا صفحش رو زدن تا ببینند کی کرکش میاد

      دیدگاه


        #33
        پاسخ : [آموزش] آموزش کامپایلر CCS از صفر

        سلام دوستان
        من در CCS C Compiler یک کد نوشتم برای سرور با timer 1 و کار هم می کنه. حالا خواستم با USB HID استفادش کنم.
        حالا مشکل من اینه که وقفه timer 1 در هنگام دستورات USB خاموشه و سرور جابحا نمیشه(مثلا usb_kbhit)
        بعد رفتم سراغ RTOS و اون رو هم که راه میندازم میکروم داغ می کنه و سروو تکون نمی خوره!
        میکروم هم PIC18F4550 هست که براش یه برد توسعه ساختم و چند تا برنامه تست کردم باهاش هنگ نمی کنه

        #include <18F4550.h>
        #device ADC=10
        #fuses NOMCLR NOLVP NOPUT NOBROWNOUT NOWDT NODEBUG NOFCMEN NOIESO
        #fuses HSPLL PLL2 CPUDIV4 VREGEN USBDIV
        #use delay(clock=16MHz, USB_FULL)


        #use rtos(TIMER = 0, minor_cycle = 4ms)


        int16 z = 1000;
        int1 i = 0;




        #task(rate = 24ms, max = 4ms)
        void set_servo()
        {
        output_high(PIN_D0);
        delay_us(z);
        output_low(PIN_D0);
        }


        #task(rate = 100ms, max = 4ms)
        void set_degree(void)
        {
        if(i == 0)
        {
        z=+5;
        if(z > 2000)
        {
        z = 2000;
        i = 1;
        }
        }
        else
        {
        z=-5;
        if(z < 1000)
        {
        z = 1000;
        i = 0;
        }
        }

        }



        void main()
        {

        rtos_run();
        }

        این برنامش با RTOS که داغ می کنه میکرو
        با USB CDC هم اگر تست کردم وقفه غیر فعال میشه
        اگر دوستان می تونین کمکی کنید بفرمایید
        با تشکر

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط Matin_Mirzadeh نمایش پست ها
        سلام دوستان
        من در CCS C Compiler یک کد نوشتم برای سرور با timer 1 و کار هم می کنه. حالا خواستم با USB HID استفادش کنم.
        حالا مشکل من اینه که وقفه timer 1 در هنگام دستورات USB خاموشه و سرور جابحا نمیشه(مثلا usb_kbhit)
        بعد رفتم سراغ RTOS و اون رو هم که راه میندازم میکروم داغ می کنه و سروو تکون نمی خوره!
        میکروم هم PIC18F4550 هست که براش یه برد توسعه ساختم و چند تا برنامه تست کردم باهاش هنگ نمی کنه

        #include <18F4550.h>
        #device ADC=10
        #fuses NOMCLR NOLVP NOPUT NOBROWNOUT NOWDT NODEBUG NOFCMEN NOIESO
        #fuses HSPLL PLL2 CPUDIV4 VREGEN USBDIV
        #use delay(clock=16MHz, USB_FULL)


        #use rtos(TIMER = 0, minor_cycle = 4ms)


        int16 z = 1000;
        int1 i = 0;




        #task(rate = 24ms, max = 4ms)
        void set_servo()
        {
        output_high(PIN_D0);
        delay_us(z);
        output_low(PIN_D0);
        }


        #task(rate = 100ms, max = 4ms)
        void set_degree(void)
        {
        if(i == 0)
        {
        z=+5;
        if(z > 2000)
        {
        z = 2000;
        i = 1;
        }
        }
        else
        {
        z=-5;
        if(z < 1000)
        {
        z = 1000;
        i = 0;
        }
        }

        }



        void main()
        {

        rtos_run();
        }

        این برنامش با RTOS که داغ می کنه میکرو
        با USB CDC هم اگر تست کردم وقفه غیر فعال میشه
        اگر دوستان می تونین کمکی کنید بفرمایید
        با تشکر
        فعلا USB رو غیر فعال کردم

        دیدگاه


          #34
          پاسخ : [آموزش] آموزش کامپایلر CCS از صفر

          نوشته اصلی توسط Matin_Mirzadeh نمایش پست ها
          سلام دوستان
          من در CCS C Compiler یک کد نوشتم برای سرور با timer 1 و کار هم می کنه. حالا خواستم با USB HID استفادش کنم.
          حالا مشکل من اینه که وقفه timer 1 در هنگام دستورات USB خاموشه و سرور جابحا نمیشه(مثلا usb_kbhit)
          بعد رفتم سراغ RTOS و اون رو هم که راه میندازم میکروم داغ می کنه و سروو تکون نمی خوره!
          میکروم هم PIC18F4550 هست که براش یه برد توسعه ساختم و چند تا برنامه تست کردم باهاش هنگ نمی کنه

          #include <18F4550.h>
          #device ADC=10
          #fuses NOMCLR NOLVP NOPUT NOBROWNOUT NOWDT NODEBUG NOFCMEN NOIESO
          #fuses HSPLL PLL2 CPUDIV4 VREGEN USBDIV
          #use delay(clock=16MHz, USB_FULL)


          #use rtos(TIMER = 0, minor_cycle = 4ms)


          int16 z = 1000;
          int1 i = 0;




          #task(rate = 24ms, max = 4ms)
          void set_servo()
          {
          output_high(PIN_D0);
          delay_us(z);
          output_low(PIN_D0);
          }


          #task(rate = 100ms, max = 4ms)
          void set_degree(void)
          {
          if(i == 0)
          {
          z=+5;
          if(z > 2000)
          {
          z = 2000;
          i = 1;
          }
          }
          else
          {
          z=-5;
          if(z < 1000)
          {
          z = 1000;
          i = 0;
          }
          }

          }



          void main()
          {

          rtos_run();
          }

          این برنامش با RTOS که داغ می کنه میکرو
          با USB CDC هم اگر تست کردم وقفه غیر فعال میشه
          اگر دوستان می تونین کمکی کنید بفرمایید
          با تشکر

          دلیل: ادغام دو پست برای جلوگیری از اسپم


          فعلا USB رو غیر فعال کردم
          برنامه رو راه انداختم با وقفه تایمر ولی میخوام با RTOS هم کار کنم. اگر امکانش هست برای RTOS کمک کنید ممنون

          #include <18F4550.h>
          #device ADC=10
          #fuses NOMCLR NOLVP NOPUT NOBROWNOUT NOWDT NODEBUG NOFCMEN NOIESO
          #fuses HSPLL PLL2 CPUDIV4 VREGEN USBDIV
          #use delay(clock=16MHz, USB_FULL)


          #include <stdlib.h>


          #define USB_CONFIG_HID_TX_SIZE 16 // Transmit packet size (bytes)
          #define USB_CONFIG_HID_RX_SIZE 16 // Receive packet size (bytes)
          #define USB_CONFIG_PID 1 //Chnage Product Id
          #define USB_CONFIG_VID 1234 //Chnage Vendor Id
          #define USB_STRINGS_OVERWRITTEN


          #define USB_STRING(x) (sizeof(_unicode(x))+2), 3, _unicode(x)
          rom char USB_STRING_DESC[]={
          //string 0 (must always provide this string)
          //4(length of string index),3(desciptor type is string),9&4(Microsoft Defined for US-English)
          4, 3, 9, 4,
          //string 1 - vendor (this is optional, but we specified it's use in the device descriptor)
          USB_STRING("CCS"),
          //string 2 - product (this is optional, but we specified it's use in the device descriptor)
          USB_STRING("USB HID Example"),
          //string 3 - serial number (this is optional, but we specified it's use in the device descriptor)
          USB_STRING("123456789")};
          #include <usb_desc_hid.h>
          #include<pic18_usb.h>
          #include<usb.c>


          int16 i = 1500;


          char data[16];


          #INT_RTCC
          void RTCC_isr()
          {
          set_timer1(0); // Set Timer1 value to 0
          output_high(PIN_D0);
          while(get_timer1() < i);
          output_low(PIN_D0);
          }


          void set_servo(int degree)
          {
          i = degree * 5.5555555555555555555555555555556 + 1000;
          }



          void main()
          {
          int8 a;
          char error1[16] = "Not supported!\n\r";
          char message1[16] = "Done!\n\r";

          setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
          setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); //32.7 ms overflow

          enable_interrupts(INT_RTCC);
          enable_interrupts(GLOBAL);

          usb_init_cs();
          delay_ms(1000);


          while(true)
          {
          usb_task();
          if(usb_enumerated())
          { // If the device has been enumerated by the PC
          if(usb_kbhit(1))
          {
          usb_get_packet(1, data, 16);
          a = atoi(data);
          if(a > 180)
          usb_put_packet(1, error1, 16, USB_DTS_TOGGLE);
          else
          {
          usb_put_packet(1, message1, 16, USB_DTS_TOGGLE);
          set_servo(a);
          }
          }
          }

          }
          }

          دیدگاه

          لطفا صبر کنید...
          X