اطلاعیه

Collapse
No announcement yet.

تشخیص پایه های میکرو!

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

    تشخیص پایه های میکرو!

    سلام!
    ببخشید چون من تازه برد LPC1768 خریدم برای همین زیاد سوال میپرسم! به بزرگی خودتون ببخشید!

    ببینید توی AVR برای 0 و 1 کردن پین ها خیلی راحت بودیم!
    اما توی ARM نمیتونم پایه ها رو تشخیص بدم!!! الان روی هدر بورد خیلی پایه داره! مثلا سمت چپ روی خود هدر بورد نوشته P1.16 کلا یه پورت P0 هست که 32 پین داره! بقیه پورت ها کامل نیست! مثلا P1 فقط 24 پین داره! و P3 و P4 فقط دو تا پین داره و P2 فقط 14 تا پین داره! چرا اینجوریه؟؟!

    برای اینکه یکی از پین ها رو ورودی و خروجی و 0 یا 1 قرار بدیم چطوری باید پین رو بشناسونیم!
    مثلا برای P0.27 توی Keil چی باید نوشت؟؟؟! تا ورودی /خروچی یا 0و1 قرار بدیم!
    کلا فرمولش چیه؟؟! که خودم بتونم پین ها رو تشخیص بدم!!

    خیلی ممنون

    راستی روی بردی که خریدم برای GLCD و CH LCD و CAMERA هم پین های خالی گذاشته!!
    من میتونم از اینا به عنوان ورودی و خروجی استفاده کنم؟!!

    خیلی ممنون! :eek:
    تشکر :rolleyes:

    #2
    پاسخ : تشخیص پایه های میکرو!

    سلام. ورود شما را به دنیای جذاب ARM خوش آمد میگم. پین ها در میکروکنترلرهای LPC1768 یه کم از این استثناها داره!
    توصیه اکید بنده به شما دوست عزیز این هست که [glow=red,2,300]حتما حتما حتما[/glow] برای شروع کار با ARM کتاب آموزش میکروکنترلر ARM LPC1768 نوشته آقای مهندس خوش باطن که در فروشگاه ECA هم موجود است رو خریداری کنید چون در غیر این صورت خیلی سخت میشه با ARM کار کرد و منابع آموزشی اون کم هست به ویژه برای راه اندازی اولیه میکرو. ضمنا چون تمامی کنترلهای این پردازنده به صورت نرم افزاری هستش اولین اشنباه در نوشتن بیت در رجیسترها = خرابی و بلا استفاده شدن میکرو (البته نمی خوام بترسونمت و ناامیدت کنم ولی هشدار میدم!)
    ضمنا برای صفر و یک کردن پایه ها در 1768 درد سر زیاد باید بکشی!
    STM32 واقعا یه چیز دیگه است...

    دیدگاه


      #3
      پاسخ : تشخیص پایه های میکرو!

      سلام

      منم ورود شما را به دنیای حرفه ای ARM خوش آمد میگم :agree:

      امیدوارم موفق و موید باشید .

      اونقدر که مهندس فرمودند ترس نداره ها .... :rolleyes:

      برای یک کردن به صورت بیتی
      کد:
      LPC_GPIO0->FIOSET=(1<<27);
      در کد فوق بیت بیست و هفتم از پورت صفرم را ست می کنیم
      کد:
      LPC_GPIO2->FIOCLR=(1<<8);
      در کد فوق بیت هشتم از پورت دوم را صفر می کنیم.

      نکته اینکه شمارش ها از صفرم ، یکم و... شروع میشه.

      تست کنید . جواب نداد بگید در خدمتیم :job:

      دیدگاه


        #4
        پاسخ : تشخیص پایه های میکرو!

        نوشته اصلی توسط electron113
        سلام

        منم ورود شما را به دنیای حرفه ای ARM خوش آمد میگم :agree:

        امیدوارم موفق و موید باشید .

        اونقدر که مهندس فرمودند ترس نداره ها .... :rolleyes:

        برای یک کردن به صورت بیتی
        کد:
        LPC_GPIO0->FIOSET=(1<<27);
        در کد فوق بیت بیست و هفتم از پورت صفرم را ست می کنیم
        کد:
        LPC_GPIO2->FIOCLR=(1<<8);
        در کد فوق بیت هشتم از پورت دوم را صفر می کنیم.

        نکته اینکه شمارش ها از صفرم ، یکم و... شروع میشه.

        تست کنید . جواب نداد بگید در خدمتیم :job:
        بهتر است موقع مقدار دهی به یک رحیستر آن را =| (اور مساوی) کنیم تا مقدار قبلی آن حفظ شود

        کد:
        LPC_GPIO0->FIOSET|=(1<<27);
        کد:
        LPC_GPIO2->FIOCLR|=(1<<8);

        دیدگاه


          #5
          پاسخ : تشخیص پایه های میکرو!

          سلام
          از همه عزیزانی که پاسخ دادن! تشکر میکنم :redface: (کاره دیگه ای جز تشکر از دست بنده بر نمیاد )
          آقای موسوی کتابی که معرفی کردید رو پیدا نکردم! اگه میشه لینک بدید! خیلی ممنون

          آقای electron113 خیلی ممنون از راهنماییتون ! استفاده کردم! جواب میده oo: (ممنون بابت کمکتون)

          از آقای غفاری هم ممنونم! اتفاقا میخواستم بپرسم که کاربرد =| چیه؟؟! که فرمودید :rolleyes:

          دیدگاه


            #6
            پاسخ : تشخیص پایه های میکرو!

            نوشته اصلی توسط dalmif
            سلام
            از همه عزیزانی که پاسخ دادن! تشکر میکنم :redface: (کاره دیگه ای جز تشکر از دست بنده بر نمیاد )
            آقای موسوی کتابی که معرفی کردید رو پیدا نکردم! اگه میشه لینک بدید! خیلی ممنون

            آقای electron113 خیلی ممنون از راهنماییتون ! استفاده کردم! جواب میده oo: (ممنون بابت کمکتون)

            از آقای غفاری هم ممنونم! اتفاقا میخواستم بپرسم که کاربرد =| چیه؟؟! که فرمودید :rolleyes:
            اگر = خالی بذاری ، و مقدار جدیدی رو داخل رجیستر یا متغییر بذاری ، مقدار قبلی حذف و مقدار جدید جایگزین میشه
            ولی اگر =| بذاری ، مقدار قبلی با مقدار جدید به صورت بیت به بیت or میشه

            دیدگاه


              #7
              پاسخ : تشخیص پایه های میکرو!

              نوشته اصلی توسط اشکان غفارزاده
              اگر = خالی بذاری ، و مقدار جدیدی رو داخل رجیستر یا متغییر بذاری ، مقدار قبلی حذف و مقدار جدید جایگزین میشه
              ولی اگر =| بذاری ، مقدار قبلی با مقدار جدید به صورت بیت به بیت or میشه
              دوست من در این مورد اشتباه میکنید.

              توی AVR وقتی به یک پورت مقداری میدادیم تمام اون اعداد روی بیتها مینشتند. مثلا PORTA = 0x0f باعث میشد چهار بیت کم ارزش یک بشن و باقیشون صفر، اما توی ARM اینطوری نیست

              شما وقتی FIOSET را مقدار دهی میکنید فقط دارید بهش میگید اون بیتهایی را که 1 میذاریم را فعال یا SET که و اون بیتهایی را که 0 میذاریم برامون مهم نیستند.. چرا که اگر بخواهی یک پین را 0 کنی دیگه از FIOSET استفاده نمیکنی. باید از FIOCLR استفاده کنی.

              پس FIOSET = 0x0f صحیح هست و نیازی به |= نداره..

              دیدگاه


                #8
                پاسخ : تشخیص پایه های میکرو!

                نوشته اصلی توسط dalmif
                اما توی ARM نمیتونم پایه ها رو تشخیص بدم!!! الان روی هدر بورد خیلی پایه داره! مثلا سمت چپ روی خود هدر بورد نوشته P1.16 کلا یه پورت P0 هست که 32 پین داره! بقیه پورت ها کامل نیست! مثلا P1 فقط 24 پین داره! و P3 و P4 فقط دو تا پین داره و P2 فقط 14 تا پین داره! چرا اینجوریه؟؟!
                دوست عزیز یکی از مشکلات اساسی خودمون (به ویژه خودم) توی یادگیری ARM این هست که میخواهیم AVR را که قبلا یاد گرفتیم دقیقا معادل سازی کنیم برای ARM...
                این کار اشتباهی هست..

                خود من اول کار دنبال PORTA میگشتم که باهاش مقادیر را صفر و یک کنم اما ARM اگرچه چنین چیزی را پیش بینی کرده و داره اما روش صحیح را استفاده از دو رجیستر مجزا میدونه برای ست کردن و پاک کردن..

                پورتها توی ARM همیشه مثل AVR نیستند که بیت 0 تا 7 داشته باشه و کامل باشه، ARM اگر چه تمامی پورتها را 32 بیت درنظر میگیره اما خیلی از اونها را روی میکرو نداره و رزرو شده در نظرشون میگیره..

                با ARM که کار میکنی کم کم باید به مباحث اون عادت کنی و خیلی مباحث اون به سادگی AVR نیستند..
                توی AVR چند تا فیوز بیت را تغییر میدادیم و فرکانس میکرومون تغییر می کرد اما توی ARM باید کلی ضرب و تقسیم کنی تا بتونی فرکانس میکرو را به اندازه مورد نظرت برسونی و از همه مهمتر میتونی در حین اجرای برنامه فرکانس کاریت را کم و زیاد کنی..

                دیدگاه

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