اطلاعیه

Collapse
No announcement yet.

لینک کردن میکروها با RS485

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : لینک کردن میکروها با RS485

    نوشته اصلی توسط شاهرخ
    میکروی تو مثال کامپایلر 887 هست؛ نه 877! شدیدا مشابه هم هستن؛ اما زمین تا زیرزمین :mrgreen: با هم فرق دارن....اون کریستال داخلی داره؛ 14 تا ADC داره و چندتا تفاوت جزیی....

    واسه هردوتاش باید رعایت کنین.
    ای وای بر من :redface:
    تفاوت به این فاحشی داشته و من دقت نکردم!
    واقعا ازتون ممنونم.
    ok، بسیار عالی، پس بنده با کمک اون تغییراتی که شما فرمودید و شماتیک مربوط به اون میرم سراغ تست همون برنامه...
    باز هم ازتون متشکرم.
    زندگی برگ بودن در مسیر باد نیست
    امتحان ریشه هاست
    ریشه هم هرگز اسیر باد نیست
    زندگی چون پیچک است
    انتهایش میرسد پیش خدا!

    دیدگاه


      #17
      پاسخ : لینک کردن میکروها با RS485

      عرض سلام و ادب مجدد.
      دوستان بزرگوار الان میکروی 452 به عنوان master در نظر گرفته شده و 877 ها slave هامونن، منتها موقع کامپایل کردن برنامه ی master برای میکروی 452 با کریستال 4 مگ ،که برنامه عینا مثل help کامپایلر هست (منتها با تغییراتی که جناب شاهرخ فرمودند) باز هم با error مواجه میشم!

      کد:
        char dat[10];
      char i,j;
      
       sbit rs485_rxtx_pin at RC5_bit;
      sbit rs485_rxtx_pin_direction at TRISC5_bit;
      
      
      
      void interrupt() {
       RS485Master_Receive(dat);
      }
      
      void main(){
       long cnt = 0;
      
      ANSEL = 0;             
       ANSELH = 0;
       C1ON_bit = 0;            
       C2ON_bit = 0;
      
      
       PORTB = 0;
       PORTD = 0;
       TRISB = 0;
       TRISD = 0;
      
      
       UART1_Init(9600);
       Delay_ms(100);
      
       RS485Master_Init();
       dat[0] = 0xAA;
       dat[1] = 0xF0;
       dat[2] = 0x0F;
       dat[4] = 0;
       dat[5] = 0;
       dat[6] = 0;
      
       RS485Master_Send(dat,1,160);
      
      
       RCIE_bit = 1;
       TXIE_bit = 0;
       PEIE_bit = 1;
       GIE_bit = 1;
      
       while (1){
      
      
        cnt++;
        if (dat[5]) {
         PORTD = 0xAA;
        }
        if (dat[4]) {
         cnt = 0;
         dat[4] = 0;
         j = dat[3];
         for (i = 1; i <= dat[3]; i++) {
          PORTB = dat[i-1];
         }
         dat[0] = dat[0]+1;
         Delay_ms(1);
         RS485Master_Send(dat,1,160);
      
        }
        if (cnt > 100000) {
         PORTD ++;
         cnt = 0;
         RS485Master_Send(dat,1,160);
         if (PORTD > 10)
          RS485Master_Send(dat,1,50);
         }
       }
      
      }
      مشکل اینجاست که با رعایت کردن و نکردن این خطوط همچنان error دارم، منتها error های متفاوت!

      کد:
      ANSEL = 0;             
       ANSELH = 0;
       C1ON_bit = 0;            
       C2ON_bit = 0;
      به نظر شما مشکل این بار از چی میتونه باشه؟
      زندگی برگ بودن در مسیر باد نیست
      امتحان ریشه هاست
      ریشه هم هرگز اسیر باد نیست
      زندگی چون پیچک است
      انتهایش میرسد پیش خدا!

      دیدگاه


        #18
        پاسخ : لینک کردن میکروها با RS485

        همین رجیسترها توی 452 هم نیست؛با حذف این خطوط از برنامه باز هم Error میده؟ متن Error چی هست که فرمودین متفاوته؟

        دیدگاه


          #19
          پاسخ : لینک کردن میکروها با RS485

          نوشته اصلی توسط شاهرخ
          همین رجیسترها توی 452 هم نیست؛با حذف این خطوط از برنامه باز هم Error میده؟ متن Error چی هست که فرمودین متفاوته؟
          ممنونم از پاسختون.
          بله باز هم error میده، که مضمونش این شکلیه:

          کد:
           
          0 360 Unresolved extern 'TFT_CS' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_RD' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_RS' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_DataPort' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_WR' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_CS' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_RD' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_RS' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_DataPort' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_WR' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_RS' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_DataPort' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_WR' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_RS' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_DataPort' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_WR' __Lib_TFT.c
          0 360 Unresolved extern 'TFT_16bit_RS' __Lib_TFT_16bit.c
          0 360 Unresolved extern 'TFT_16bit_DataPort_Lo' __Lib_TFT_16bit.c
          0 360 Unresolved extern 'TFT_16bit_WR' __Lib_TFT_16bit.c
          0 360 Unresolved extern 'TFT_16bit_RS' __Lib_TFT_16bit.c
          0 360 Unresolved extern 'TFT_16bit_DataPort_Lo' __Lib_TFT_16bit.c
          0 360 Unresolved extern 'TFT_16bit_WR' __Lib_TFT_16bit.c
          0 102 Finished (with errors): 27 ÇæÊ 2012, 22:48:04 RS master.mcppi
          این error ها هیچکدوم به خطوط برنامه برنمیگرده ظاهرا!
          زندگی برگ بودن در مسیر باد نیست
          امتحان ریشه هاست
          ریشه هم هرگز اسیر باد نیست
          زندگی چون پیچک است
          انتهایش میرسد پیش خدا!

          دیدگاه


            #20
            پاسخ : لینک کردن میکروها با RS485

            این Error ها مربوط به لایبرری LCD هست از نوع TFT !! oo: چه ربطی به ارتباط سریال داره آخه!!

            یه خرده بیشتر باهاش ور برین ببینین درست میشه؟ تیکهای مربوط به لایبرری فعال هست؟

            دیدگاه


              #21
              پاسخ : لینک کردن میکروها با RS485

              نوشته اصلی توسط شاهرخ
              این Error ها مربوط به لایبرری LCD هست از نوع TFT !! oo: چه ربطی به ارتباط سریال داره آخه!!

              یه خرده بیشتر باهاش ور برین ببینین درست میشه؟ تیکهای مربوط به لایبرری فعال هست؟
              LCD؟؟!!
              ما اصلا با LCD کاری نداریم که!
              کجا هست تیکهای مربوط به لایبرری جناب شاهرخ؟
              اصلا کلّا من امشب با 452 مشکل دارم یه برنامه دیگه هم با همین میکرو error میده دائم! منتها نه این error...
              الان یه کم باهاش سر و کله میزنم ببینم چطور میشه....
              زندگی برگ بودن در مسیر باد نیست
              امتحان ریشه هاست
              ریشه هم هرگز اسیر باد نیست
              زندگی چون پیچک است
              انتهایش میرسد پیش خدا!

              دیدگاه


                #22
                پاسخ : لینک کردن میکروها با RS485

                تو قسمت Library manager؛ هرچند اصولا با توجه به ویزارد مربوط به ساخت پروژه؛ حال پیشفرض همه ی لایبرری ها انتخاب شدن...

                من که خودم هم Error دادم! :mrgreen:

                دیدگاه


                  #23
                  پاسخ : لینک کردن میکروها با RS485

                  نوشته اصلی توسط شاهرخ
                  تو قسمت Library manager؛ هرچند اصولا با توجه به ویزارد مربوط به ساخت پروژه؛ حال پیشفرض همه ی لایبرری ها انتخاب شدن...

                  من که خودم هم Error دادم! :mrgreen:
                  بله تیک داره...
                  زندگی برگ بودن در مسیر باد نیست
                  امتحان ریشه هاست
                  ریشه هم هرگز اسیر باد نیست
                  زندگی چون پیچک است
                  انتهایش میرسد پیش خدا!

                  دیدگاه


                    #24
                    پاسخ : لینک کردن میکروها با RS485

                    بله!
                    همونیه که من عرض میکنم! اصلا با 452 مشکل داره! حالا چرا نمیدونم!!
                    برنامه ی slave رو که با 877 تست میکنم و بدون Error کامپایل میشه، با 452 که تست میکنم، همین Error ها رو میده!
                    زندگی برگ بودن در مسیر باد نیست
                    امتحان ریشه هاست
                    ریشه هم هرگز اسیر باد نیست
                    زندگی چون پیچک است
                    انتهایش میرسد پیش خدا!

                    دیدگاه


                      #25
                      پاسخ : لینک کردن میکروها با RS485

                      نوشته اصلی توسط pama
                      عرض سلام و ادب مجدد.
                      دوستان بزرگوار الان میکروی 452 به عنوان master در نظر گرفته شده و 877 ها slave هامونن، منتها موقع کامپایل کردن برنامه ی master برای میکروی 452 با کریستال 4 مگ ،که برنامه عینا مثل help کامپایلر هست (منتها با تغییراتی که جناب شاهرخ فرمودند) باز هم با error مواجه میشم!

                      کد:
                        char dat[10];
                      char i,j;
                      
                       sbit rs485_rxtx_pin at RC5_bit;
                      sbit rs485_rxtx_pin_direction at TRISC5_bit;
                      
                      
                      
                      void interrupt() {
                       RS485Master_Receive(dat);
                      }
                      
                      void main(){
                       long cnt = 0;
                      
                      ANSEL = 0;             
                       ANSELH = 0;
                       C1ON_bit = 0;            
                       C2ON_bit = 0;
                      
                      
                       PORTB = 0;
                       PORTD = 0;
                       TRISB = 0;
                       TRISD = 0;
                      
                      
                       UART1_Init(9600);
                       Delay_ms(100);
                      
                       RS485Master_Init();
                       dat[0] = 0xAA;
                       dat[1] = 0xF0;
                       dat[2] = 0x0F;
                       dat[4] = 0;
                       dat[5] = 0;
                       dat[6] = 0;
                      
                       RS485Master_Send(dat,1,160);
                      
                      
                       RCIE_bit = 1;
                       TXIE_bit = 0;
                       PEIE_bit = 1;
                       GIE_bit = 1;
                      
                       while (1){
                      
                      
                        cnt++;
                        if (dat[5]) {
                         PORTD = 0xAA;
                        }
                        if (dat[4]) {
                         cnt = 0;
                         dat[4] = 0;
                         j = dat[3];
                         for (i = 1; i <= dat[3]; i++) {
                          PORTB = dat[i-1];
                         }
                         dat[0] = dat[0]+1;
                         Delay_ms(1);
                         RS485Master_Send(dat,1,160);
                      
                        }
                        if (cnt > 100000) {
                         PORTD ++;
                         cnt = 0;
                         RS485Master_Send(dat,1,160);
                         if (PORTD > 10)
                          RS485Master_Send(dat,1,50);
                         }
                       }
                      
                      }
                      مشکل اینجاست که با رعایت کردن و نکردن این خطوط همچنان error دارم، منتها error های متفاوت!

                      کد:
                      ANSEL = 0;             
                       ANSELH = 0;
                       C1ON_bit = 0;            
                       C2ON_bit = 0;
                      به نظر شما مشکل این بار از چی میتونه باشه؟
                      با سلام و عرض احترام...
                      دوستان همونطور که قبلا هم عرض کردم، ما با این برنامه که عینا برنامه ی help کامپایلر mikroc هست و با بود و نبود اون خطوط، کما کان error هایی رو که عرض کردم، رو باهاش درگیریم :angry:

                      چه راه حلی رو دوستان پیشنهاد میدن برای رفع این مشکل؟!
                      یا اگه برنامه ی ساده ای باشه که دوستان بزرگوار تونسته باشن این میکرو رو با میکروهای دیگه لینک کنن، بسیار ممنون میشم در اختیار بنده هم قرار بدند...
                      واقعا این error ها کلافم کردن...
                      زندگی برگ بودن در مسیر باد نیست
                      امتحان ریشه هاست
                      ریشه هم هرگز اسیر باد نیست
                      زندگی چون پیچک است
                      انتهایش میرسد پیش خدا!

                      دیدگاه

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