اطلاعیه

Collapse
No announcement yet.

خطایی در کدویژن

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

    خطایی در کدویژن

    سلام
    این خطا از چیه و چه جوری رفع میشه ؟

    the first argument of the '.' operator must be of 'struct' or 'union' type

    میکرو : مگا64

    کسی در باره ی پورت های G میکرو کنترلر mega64 اطلاعاتی داره ؟


    ممنون
    « با هر دستی بدی , با همان دست پس خواهی گرفت »
    این جمله رو فراموش نکن

    #2
    پاسخ : خطایی در کدویژن

    کاراکتر نقطه "." توی برنامه نویسی c فقط بعد struct و union میاد احتمالا یه جایی تو کد بعد یه متغیر غیر از این دو نوع نقطه گذاشتی

    دیدگاه


      #3
      پاسخ : خطایی در کدویژن

      شما در کدویژن نمیتونی برای پورت G از '.' استفاده کنی مثلاٌ
      کد:
      PORTG.2 =1;
      کد بالا برای کامپایلر تعریف نشده و هنگام استفاده از '.' کامپایلر خطای عدم استفاده از union و struct میگیره

      برای مقدار دهی پورت G باید از عملیات های بول استفاده کنی ، مثال: 1 کردن G.2:
      کد:
      PORTG|=0b00100;
      و یا برای صفر کردن همین پورت و پین:
      کد:
      PORTG&=0b11011;
      موفق باشید
      امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

      دیدگاه


        #4
        پاسخ : خطایی در کدویژن

        نوشته اصلی توسط Abbas Sarami
        شما در کدویژن نمیتونی برای پورت G از '.' استفاده کنی مثلاٌ
        کد:
        PORTG.2 =1;
        کد بالا برای کامپایلر تعریف نشده و هنگام استفاده از '.' کامپایلر خطای عدم استفاده از union و struct میگیره

        برای مقدار دهی پورت G باید از عملیات های بول استفاده کنی ، مثال: 1 کردن G.2:
        کد:
        PORTG|=0b00100;
        و یا برای صفر کردن همین پورت و پین:
        کد:
        PORTG&=0b11011;
        موفق باشید
        آها
        خوب من میخوام مثلا بیت 2وم پورت G فقط 1 بشه ! و پورت های دیگه کاری نداشته باشه , یعنی غیر مستقیم میخوام از همون PORTG.2 استفاده کنم !

        کل کار من اینه که پورت G.1 و G.2 رو ورودی قرار بدم و اطلاعات بگیرم ازشون , این اطلاعات یا صفر منتقی هست یا 1 منتقی هست . مثلا :
        کد:
        if ( PING.1==1 && PING.2==0 ) { ....}
        حالا من به جای ششرط بالا چی میتونم بنویسم ؟
        « با هر دستی بدی , با همان دست پس خواهی گرفت »
        این جمله رو فراموش نکن

        دیدگاه


          #5
          پاسخ : خطایی در کدویژن

          به جای آن از این دستور استفاده کن .
          کد:
          if((((PING&0b00010)==1)>>1)&&(((PING&0b00100)==0)>>2)){.............}
          باد می وزد ...
          میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
          تصمیم با تو است ...

          دیدگاه


            #6
            پاسخ : خطایی در کدویژن

            نوشته اصلی توسط ATROBOT
            به جای آن از این دستور استفاده کن .
            کد:
            if((((PING&0b00010)==1)>>1)&&(((PING&0b00100)==0)>>2)){.............}

            آقا خیلی ممنون
            من یک بیت دیگه از پورت g استفاد ده کردم که پول پ تعریف کردم تو برنامه
            بهش یک میکرو سوئیچ وصل کردم که سر دیگه به زمینه ! اونم میخوام در شرط استفاده کنم به همین طریق ؟
            « با هر دستی بدی , با همان دست پس خواهی گرفت »
            این جمله رو فراموش نکن

            دیدگاه


              #7
              پاسخ : خطایی در کدویژن

              با سلام
              من روی پورت بیت یکم پورت F از میکروی mega64 یه خروجی دارم که میخوام تحت شرایطی اون رو not کنم که با خطای the first argument of the '.' operator must be of 'struct' or 'union' type
              مواجه میشم.
              توضیحات بالا رو خوندم اما چیزی برای جایگزین دستور PORTF.1 = ~PORTF.1; پیدا نکردم. اگه ممکنه کمکم کنید.
              ممنون

              دیدگاه


                #8
                پاسخ : خطایی در کدویژن

                سلام
                من یه کتابخونه نوشتم که خیلی از کارها رو راحت میکنه ... مخصوصا اگر کسی با اتمل استودیو کار کنه ...
                این هم لینک دانلود ...
                امیدوارم که به دردتون بخوره ...

                نوشته اصلی توسط elham2
                با سلام
                من روی پورت بیت یکم پورت F از میکروی mega64 یه خروجی دارم که میخوام تحت شرایطی اون رو not کنم که با خطای the first argument of the '.' operator must be of 'struct' or 'union' type
                مواجه میشم.
                توضیحات بالا رو خوندم اما چیزی برای جایگزین دستور PORTF.1 = ~PORTF.1; پیدا نکردم. اگه ممکنه کمکم کنید.
                ممنون
                با فرض اینکه کار کنه این دستور اشتباهه
                باید اینجوری بنویسید
                کد:
                PORTX.1 = !PORTX.1;
                در کدویژن برای پورتهای A و B و C و D میتوان به صورت PORTx.y=1 با آن کار کرد... ولی برای پورتهای دیگر باید حتما از کتابخانه خود کدویژن استفاده کرد
                کتابخانه iobits را اینکلود کنید و با توجه به کار خواسته شده دستورات زیر را بکار ببرید
                کد:
                // I/O port bit manipulation for non-ATxmega AVR devices
                // set port bit b, atomic for sfr port address <= 0x1F
                // example: SETBIT(PORTA,5)
                #define SETBIT(port,b) {(port) |= __BM(b);}
                // clear port bit b, atomic for sfr port address <= 0x1F
                #define CLRBIT(port,b) {(port) &= ~__BM(b);}
                // toggle port bit b
                #define TGLBIT(port,b) {(port) ^= __BM(b);}
                سوالی بود در خدمتم
                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                معرفی نرم افزار Codewizard PWM
                با من بیشتر آشنا شوید

                دیدگاه


                  #9
                  پاسخ : خطایی در کدویژن

                  عااااااااااالی بود. مرسی

                  دیدگاه


                    #10
                    پاسخ : خطایی در کدویژن

                    نوشته اصلی توسط elham2
                    عااااااااااالی بود. مرسی
                    خواهش میکنم
                    کتابخونه من یا کدویژن؟
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


                      #11
                      پاسخ : خطایی در کدویژن

                      سلام
                      همانطور که دوستان گفتند در پورت G میکرو " ." تعریف نشده است بنابراین شما از دستورات زیر استفاده کنید.

                      If you want to clear bit2 in PORTG, you write:
                      PORTG &= ~(1<<2);
                      If you want to set bit2 in PORTG, you write:
                      PORTG |= (1<<2);
                      - تو همانی که می اندیشی، هرگاه به این اندیشیدی که تو یک عقابی؟ پس به دنبال رویاهایت برو و به یاوه های مرغ و خروس های اطرافت فکر نکن.

                      - یک تصمیم می تواند دریچه های زندگی ما را به روی اندوه یا شادی ، سعادت یا تنگدستی ، مصاحبت یا تنهایی ، و عمری طولانی یا مرگی زودرس باز کند

                      دیدگاه


                        #12
                        پاسخ : خطایی در کدویژن

                        نوشته اصلی توسط سامان اسدی
                        خواهش میکنم
                        کتابخونه من یا کدویژن؟
                        مسلما کتابخونه شما :agree: :applause:

                        دیدگاه


                          #13
                          پاسخ : خطایی در کدویژن

                          نوشته اصلی توسط elham2
                          مسلما کتابخونه شما :agree: :applause:
                          بسیار سپاسگذارم از ابراز لطف شما

                          موفق باشید
                          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                          معرفی نرم افزار Codewizard PWM
                          با من بیشتر آشنا شوید

                          دیدگاه

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