اطلاعیه

Collapse
No announcement yet.

[گفتگو و تبادل نظر] سوالات برنامه نویسی در کامپایلر CCS

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

    پاسخ : سوالات برنامه نویسی در کامپایلر CCS

    نوشته اصلی توسط منطقه ازاد
    سلام کسی روی rom سری 24 نوشته این سری eeprom نداره مجبوریم از rom استفاده کنیم ولی من نتونستم تا الان کاری کنم مطمئنم میشه چون حافظه اینا فلش میشه روش نوشت
    سلام خوبی دوست قدیمی؟ :biggrin:
    شما دستور write_program_memory رو امتحان کردید؟ من استفاده نکردم ولی تو منوالش دیدم.

    دیدگاه


      پاسخ : سوالات برنامه نویسی در کامپایلر CCS

      سلام
      طاعات و عباداتتون قبول درگاه حق
      یه سوالی داشتم
      چجوری میشه یک ارایه ای مثل این

      کد:
      int1 ali[24]={0,1,0,0,0,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,0}
      که هر عددش یک تک بیت باینریه رو توی eeprom ذخیره کرد به صورتی که برای هر عدد یک بیت از eeprom استفاده بشه
      کسی میتونه برام این تیکه کد رو بنویسه و اصولش رو توضیح بده

      دیدگاه


        پاسخ : سوالات برنامه نویسی در کامپایلر CCS

        نوشته اصلی توسط ALI.EE
        چجوری میشه یک ارایه ای مثل این
        کد:
        int1 ali[24]={0,1,0,0,0,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,0}
        که هر عددش یک تک بیت باینریه رو توی eeprom ذخیره کرد به صورتی که برای هر عدد یک بیت از eeprom استفاده بشه
        کسی میتونه برام این تیکه کد رو بنویسه و اصولش رو توضیح بده
        از اونجایی که کامپایلر بیتها رو توی سه بایت پشت سر هم ذخیره میکنه میتونی اینجوری دسترسی پیدا کنید:
        کد:
         write_eeprom( 0,ali);
         write_eeprom( 1,ali+1);
         write_eeprom( 2,ali+2);
        البته این مال 16F873A و کامپایلر نسخه 4.130 هست. ممکنه برای آیسی های دیگه وضعیت فرق کنه. باید بررسی کنید. فایل lst رو ببینید.

        راه حل عمومی تر اینه که بیتها رو بصورت یک متغیر int32 در بیارید و با تابع make8 بایتهاشو جدا کنید و تو ایپرام بنویسید.

        یه چی تو این مایه ها:
        کد:
        int8 i=0;
        int32 result=0;
        for (i=0 ; i<24 ; i++)
        {
         if (ali[i]) bit_set(result, i); else bit_clear(result, i);
        }
        write_eeprom(0,make8(result,0));
        write_eeprom(1,make8(result,1));
        write_eeprom(2,make8(result,2));

        دیدگاه


          پاسخ : سوالات برنامه نویسی در کامپایلر CCS

          freedom_truth
          ممنونم از جوابت .
          بیت ها رو به سه بایت تبدیل کردم بعد داخل eeprom سیو کردم جواب داد

          دیدگاه


            پاسخ : سوالات برنامه نویسی در کامپایلر CCS

            توی نرم افزار CCS من قبلا یک مشکل داشتم با USART اونهم این بود که فکر کنم CCS جهت دریافت و ارسال دیتا
            نرم افزاری این کارو انجام میده و میشه پایه های RX و TX به هر پایه ای که خواستیم بزنیم
            ولی توی ارتباط اون با SIM900 پدر منو در آورد چون SIM900 چرت میگرفت و وقتی هم میفرستاد برای میکرو میکرو درست نمیگرفت
            اگه کسی این مشکل داشت از دستور زیر استفاده کنه تا اط همون پایه های RX-TX سخت افزاری استفاده بشه
            [code=c]
            #use rs232(baud=2400, UART1, ERRORS)
            [/code]

            دیدگاه


              پاسخ : سوالات برنامه نویسی در کامپایلر CCS

              سلام دوستان ، خدا قوت
              منم یه مشکلی دارم با ماژول های HMT و HMR
              ماژول HMT به Arduino nano متصل هست و HMR به pin 25 از PIC16F887A
              کدی که برای PIC نوشتم به شکل زیر هست ولی اعداد درستی به من نمیده ، میشه راهنماییم کنید
              البته یه سوال این که حتما باید کلاک PIC رو با Arduino دقیقا یکی کنم یا نیاز نیست؟!

              اگر راهنماییم کنید ممنون میشم
              [code=c]
              #include <16F877A.h>
              #FUSES HS, NOWDT, NOPROTECT, NOBROWNOUT, PUT, NOLVP
              #use delay(clock=4000000)
              #include "Flex_LCD420.c"
              //#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

              void initialisations(){

              setup_adc_ports( ALL_ANALOG );
              setup_adc(ADC_CLOCK_INTERNAL );
              setup_psp(PSP_DISABLED);
              setup_spi(SPI_SS_DISABLED);
              setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
              setup_timer_1(T1_DISABLED);
              setup_timer_2(T2_DISABLED,0,1);
              setup_comparator(NC_NC_NC_NC);
              setup_vref(FALSE);
              lcd_init();

              }

              int RX;

              void main()
              {

              initialisations();

              set_tris_C(0x80);//set all pin as output
              set_tris_D(0x00);

              while(TRUE)
              {

              RX = input_c();

              lcd_gotoxy(1,1);
              lcd_putc(" "
              lcd_gotoxy(1,1);
              printf(lcd_putc,"RX: %U",RX);

              putc(RX);

              delay_ms(50);
              }
              }[/code]
              بعضیا هیچوقت گرسنه نمیمونن چون همیشه حسرت ما رو میخورن

              دیدگاه


                پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                نوشته اصلی توسط afsaneh_af
                سلام دوستان ، خدا قوت
                منم یه مشکلی دارم با ماژول های HMT و HMR
                ماژول HMT به Arduino nano متصل هست و HMR به pin 25 از PIC16F887A
                کدی که برای PIC نوشتم به شکل زیر هست ولی اعداد درستی به من نمیده ، میشه راهنماییم کنید
                البته یه سوال این که حتما باید کلاک PIC رو با Arduino دقیقا یکی کنم یا نیاز نیست؟!

                اگر راهنماییم کنید ممنون میشم
                [code=c]
                #include <16F877A.h>
                #FUSES HS, NOWDT, NOPROTECT, NOBROWNOUT, PUT, NOLVP
                #use delay(clock=4000000)
                #include "Flex_LCD420.c"
                //#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

                void initialisations(){

                setup_adc_ports( ALL_ANALOG );
                setup_adc(ADC_CLOCK_INTERNAL );
                setup_psp(PSP_DISABLED);
                setup_spi(SPI_SS_DISABLED);
                setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
                setup_timer_1(T1_DISABLED);
                setup_timer_2(T2_DISABLED,0,1);
                setup_comparator(NC_NC_NC_NC);
                setup_vref(FALSE);
                lcd_init();

                }

                int RX;

                void main()
                {

                initialisations();

                set_tris_C(0x80);//set all pin as output
                set_tris_D(0x00);

                while(TRUE)
                {

                RX = input_c();

                lcd_gotoxy(1,1);
                lcd_putc(" "
                lcd_gotoxy(1,1);
                printf(lcd_putc,"RX: %U",RX);

                putc(RX);

                delay_ms(50);
                }
                }[/code]
                سلام.
                فرکانس کاری مهم نیست؛ولی باودریت فرستنده و گیرنده مثل هم هستن؟
                و البته مهم تر از هر چیزی!
                تو این برنامه، شما کجای برنامه دارین سریال دریافت میکنین؟ و کجا دارین ارسال میکنین؟ oo: من که چیزی ندیدم!

                دیدگاه


                  پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                  سلام.با میکرو pic16f690 پین rb4 رو به عنوان ورودی در نظر گرفتم.و اون رو پول پ خارجی کردم.
                  [code=c]
                  set_tris_b(0xf0)
                  while(true){
                  if (input(pin_b4)==0{
                  output_high(pin_c0)
                  delay_ms(500)
                  output_low(pin_c0)
                  delay_ms(500
                  }
                  [/code]
                  اما این پین همیشه با ولت متر ورودی صفر ولت رو داره!!ااسیلاتور هم اینترنال 8 مگ هست بنابر این پول پ داخلی غیر فعال میشه طبق دیتاشیت.با پین های دیگه جواب میده ولی با این نه!!! اساتید خواهشا راهنمایی کنند .بیچاره کرده این مسئله من رو.

                  دیدگاه


                    پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                    آنالوگ رو روی اون پورت غیر فعال کردید؟
                    کد:
                     setup_adc_ports(NO_ANALOGS);
                    در ضمن به درستور set_tris نیازی نیست چون حود کامپایلر tris رو ست میکنه.

                    دیدگاه


                      پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                      سلام .این کد ها رو خود ویزارد درست کرده!!
                      [code=c]
                      #include <16F690.h>
                      #device adc=16

                      #FUSES NOWDT //No Watch Dog Timer
                      #FUSES INTRC //Internal RC Osc
                      #FUSES NOMCLR //Master Clear pin used for I/O
                      #FUSES NOBROWNOUT //No brownout reset

                      #use delay(int=8000000)

                      #use rs232(baud=9600,xmit=PIN_C4,rcv=PIN_B6,PARITY=n)
                      #define Relay_close PIN_C0
                      #define Relay_open PIN_C1
                      #define Output_signal_open PIN_C2
                      #define Output_signal_close PIN_C3
                      #define clkin PIN_A2
                      #define Input_learn PIN_B4
                      #define iInput_signal_open PIN_B7
                      #define iInput_signal_close PIN_B5
                      #define rf_enable PIN_C7
                      #define rf_detector PIN_C6
                      #define rf_resiverisok PIN_C5
                      #define DELAY 1000
                      [/code]
                      مگر برای ورودی خروجی هایی که غیر از i/o کاربرد دیگری دارند باید کدی نوشت؟!یعنی برای پین های بالا که استفاده میکنیم باید مسئله ای رو رعایت کنیم؟ لطفا بنده رو راهنمایی کنید من توی pic مبتدی هستم. از اینکه وقت گذاشتید و جواب دادید ممنونم.

                      دیدگاه


                        پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                        اون چیزی که گفتم رو تست کردید؟
                        در کل بهتره بعضی امکانات مثل آنالوگ و SPI رو اگر استفاده نمیکنید با دستور غیر فعال کنید چون ممکنه بصورت پیشفرض فعال باشه.
                        درضمن اگر اینجوری بنویسید بهتره:
                        کد:
                        if (!input(PIN_B4))

                        دیدگاه


                          پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                          سلام.امان از دست این میکروهای غیر اورجینال!!!از دست avr مینالیدیم این هم به این مسئله مبتلاست!! 3 عدد میکرو نو خریده بودم .هر 3 تا مشکل داشت.با نوع مرغوب تعویض کردم مشکل حل شد!!یه سوال :از کجا بفهمیم میکرو مشکل دار نیست ؟آرمی مارکی ؟پلاکی چیزی نداره؟؟ این جهان سوم که میگن مسئله ای داره برا خودش..

                          اضافه شده در تاریخ :
                          بابت وقت و لطفتون تشکر میکنم. :applause:

                          دیدگاه


                            پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                            نوشته اصلی توسط b_m
                            سلام.امان از دست این میکروهای غیر اورجینال!!!از دست avr مینالیدیم این هم به این مسئله مبتلاست!! 3 عدد میکرو نو خریده بودم .هر 3 تا مشکل داشت.با نوع مرغوب تعویض کردم مشکل حل شد!!یه سوال :از کجا بفهمیم میکرو مشکل دار نیست ؟آرمی مارکی ؟پلاکی چیزی نداره؟؟ این جهان سوم که میگن مسئله ای داره برا خودش..
                            من تاحالا به همچین مشکلی برنخوردم. بعید میدونم مشکل از این قضیه باشه. احتمالاً مشکل از جای دیگری بوده. بگذریم...

                            دیدگاه


                              پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                              وقتی یه میکرو پروگرام نشده رو روی برد منتاژ میکردیم پین های پول پ شده ولتاژ 4.99 رو داشت ولی وقتی این میکرو ها رو پروگرام نشده لحیم کردیم ولتاژ آنها 2.8 بود و رندم بالا و پایین میشد!!
                              oo:

                              دیدگاه


                                پاسخ : سوالات برنامه نویسی در کامپایلر CCS

                                سلام کسی تا حالا با PIC12629 کار کرده
                                چه جوری می توان این ای سی را در مود LOW POWER قرار دا و چه جوری می توانیم ر CCS حافظه EPROM را برنامه ریزی کرد

                                دیدگاه

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