اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه نویسی ربات مسیریاب

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

    مشکل در برنامه نویسی ربات مسیریاب

    با سلام

    ما یک ربات سه سنسور داریم،که میکرو میگا 32 اون سوخت .. و مجبور شدیم،میگا 8 رو جایگزینش کنیم(بدلیل کمبود بودجه !)
    کدها تویه میگا 32 روی ربات خوب جواب میداد ولی توی مگا 8 بعضی کدها رو نمی خونه !! و باید به طریقی دیگری ان را بنویسیم

    کد ها در مگا 32
    [code=c]/************************************************** ***
    edited by: mahan!!!

    Chip type : ATmega32
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    ************************************************** ***/

    #include <mega32.h>
    #define xtal 8000000L
    ///////////////////////////
    void main(void)
    {

    DDRD=0xFF;

    // Timer/Counter 1 initialization:
    // Clock source: System Clock
    // Clock value: 3.906 kHz
    // Mode: Fast PWM top=0x00FF
    TCCR1A=0xA1;
    TCCR1B=0x0D;
    ////////////////////////////////////
    // Harekat avvaliye
    OCR1A=65;
    OCR1B=65;

    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=1;
    PORTD.3=0;

    while (1)
    {
    if(PINA==0b00000100)
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=0;
    PORTD.3=1;
    OCR1A=65;
    OCR1B=45;
    }

    if(PINA==0b00000010)
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=1;
    PORTD.3=0;
    OCR1A=65;
    OCR1B=65;
    }

    if(PINA==0b00000001)
    {
    PORTD.0=0;
    PORTD.1=1;
    PORTD.2=1;
    PORTD.3=0;
    OCR1A=45;
    OCR1B=65;
    }
    if(PINA==0b00000011)
    {
    PORTD.0=0;
    PORTD.1=1;
    PORTD.2=1;
    PORTD.3=0;
    OCR1A=45;
    OCR1B=65;
    }
    if(PINA==0b00000110)
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=0;
    PORTD.3=1;
    OCR1A=65;
    OCR1B=45;
    }
    if(PINA==0b00000101)
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=1;
    PORTD.3=0;
    OCR1A=65;
    OCR1B=65;
    }
    }
    }[/code]
    کد ها در مگا 8
    [code=c]
    ************************************************** ***/
    Chip type : ATmega8
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    ************************************************** ***/


    #include <mega8.h>
    #define xtal 8000000L
    ///////////////////////////
    void main(void)
    {

    DDRD=0xFF;
    DDRB=0xFF;
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 3.906 kHz
    // Mode: Fast PWM top=0x00FF
    TCCR1A=0xA1;
    TCCR1B=0x0D;
    ////////////////////////////////////

    OCR1A=65;
    OCR1B=65;

    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=1;
    PORTD.3=0;
    while (1)
    {
    if(PINC==0b000001)
    {
    PORTD.0=0;
    PORTD.1=1;
    PORTD.2=1;
    PORTD.3=0;
    OCR1A=40;
    OCR1B=65;
    }
    if(PINC==0b000010)
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=1;
    PORTD.3=0;
    OCR1A=65;
    OCR1B=65;
    }
    if(PINC==0b000100)
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=0;
    PORTD.3=1;
    OCR1A=65;
    OCR1B=40;
    }
    }
    }[/code]
    حالا مشکل اینجاست که کد PINC==0b000001 خونده نمیشه (ولی تویه مگا 32 خونده میشد،البته با اضافه کرد 2 بیت اضافه) و باید اون رو اینطوری بنویسیم PINC.0==1 تا میکرو متوجه بشه.(و این طرز نوشتن باعث میشه که نشه وقتی ربات دو سنسور رو میخونه 1 کرده بخونه و یا کدش رو بنویسیم،یا حداقل من کدنویسیش رو بلد نیستم)
    لطفا راهنمایی کنید
    مشکل دقیقا کجاست
    فایل پرتئوس دو میکرو هم موجوده اگر نیاز شده بگید تا براتون اپلود کنم.
    باتشکر.

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

    سلام
    لطفا راهنمایی کنید...
    باتشکر.

    دیدگاه


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

      سلام تو فیوزبیت jtag رو غیر فعال کن یعنی 1 کن فیوزبیت مزبوطه رو
      [آموزشی] کنترل رله با پیامک توسط sim800l
      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
      صفحه اینستاگرام : ecdco_ir

      دیدگاه


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

        سلام بر شما
        ممنون از راهنمایتون
        ---
        فیوزبیت JTAG رو پیدا نکردم ... ولی وقتی پایه RSTDISBl رو تویه پروتئوس 0 میکنم، کدها خونده میشن و حرکت می کنند!

        متاسفانه اشتباه کردم،و بدون اینکه تحقیق کنم،فیوزبیت رو 0 کردم،و الان دیگه نمی تونم با میکرو ارتباط برقرار کنم! (پروگرام از این نمونه ها چند کاره ایسی هستش، سری usb ، بنظرتون میشه با راهکاری یا ترفندی باهش ارتباط برقرار کنم؟)
        باتشکر از شما

        دیدگاه


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

          نوشته اصلی توسط SINASET
          سلام بر شما
          ممنون از راهنمایتون
          ---
          فیوزبیت JTAG رو پیدا نکردم ... ولی وقتی پایه RSTDISBl رو تویه پروتئوس 0 میکنم، کدها خونده میشن و حرکت می کنند!

          متاسفانه اشتباه کردم،و بدون اینکه تحقیق کنم،فیوزبیت رو 0 کردم،و الان دیگه نمی تونم با میکرو ارتباط برقرار کنم! (پروگرام از این نمونه ها چند کاره ایسی هستش، سری usb ، بنظرتون میشه با راهکاری یا ترفندی باهش ارتباط برقرار کنم؟)
          باتشکر از شما
          سلام شما با این کارت پایه ریست خارجی رو غیر فعال کردی با این پروگرامر ها نمیشه فیوزبیتو برگردوند ولی با پروگرامر های حرفه ای فکر کنم بشه
          برای غیر فعال کردن jtag هم فیوزبیت jtagen رو 1 کن
          [آموزشی] کنترل رله با پیامک توسط sim800l
          [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
          [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
          [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
          صفحه اینستاگرام : ecdco_ir

          دیدگاه


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

            سلام بر شما
            ممنون از راهنمایی های شما
            ---
            کدام فیوزبیت مد نظر شماست؟


            ----
            ببخشید به عنوان سوال پایانی
            چرا کدها در وضعیت اولیه در میگا8 جواب نداد،دلیلش چی بوده،ممنون میشم توضیح بدید
            باتشکر

            دیدگاه


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

              سلام
              راستش بین فیوزبیت ها من jtagen رو نمیبینم حالا بزار خودم یه امتحان بکنم باز میام جواب میدم
              اما جواب قسمت دوم سوالت اینه که
              به طور پیش فرض پورت c برای jtag فعال هستش و ازش نمیتونی به عنوان ورودی خروجی استفاده کنی

              اضافه شده در تاریخ :
              ببخشید
              من اشتباه کردم
              atmega8 اصلآ jtag نداره
              [آموزشی] کنترل رله با پیامک توسط sim800l
              [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
              [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
              [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
              صفحه اینستاگرام : ecdco_ir

              دیدگاه


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

                ظهرتون بخیر..
                --
                خواهش میکنم .. @};-
                پس اشکال کار همون پایه ریست بود.کاشکی زودتر متوجه میشدم ..
                --
                مجبورم از دوباره یک میکرو جدید بگیرم،شما بین دو گزینه میگا32 و 328 کدوم رو پیشنهاد میدید،اصولا برای ربات کدام یک از 40 پایه ها یا 28 بهتر می باشد ..؟
                باتشکر از وقت که گذاشتید.

                دیدگاه


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

                  به جای این
                  PINC==0b000001
                  بزنید این
                  PINC==0b01000001
                  علتش هم اینه که پایه ریست در حالت عادی یکه.پس PINC.6 همیشه یکه.
                  پس شما هر وقت PINC را خوندید 64 تا ازش کم کنید و بعد مثل همیشه ازش استفاده کنید. :job:
                  آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                  دیدگاه


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

                    سلام بر شما
                    ممنون از پاسختون
                    ===
                    بله کاملا درسته،و دیگه نیازی به 0 کردن فیوزبیت ریست نداره ... اگر زودتر جواب میدادید از یک بحران مالی جلوگیری میکردید... (البته تقصیر کار خودم بودم که عجله کردم)
                    به هر حال ممنون از دو کاربر محترم @};-
                    ---
                    متوجه قسمت اخر جملتون نشدم،64 تا از چه چیزی کم کنم!؟
                    باتشکر.

                    دیدگاه


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

                      نوشته اصلی توسط pooyan-shafiei
                      به جای این
                      PINC==0b000001
                      بزنید این
                      PINC==0b01000001
                      علتش هم اینه که پایه ریست در حالت عادی یکه.پس PINC.6 همیشه یکه.
                      پس شما هر وقت PINC را خوندید 64 تا ازش کم کنید و بعد مثل همیشه ازش استفاده کنید. :job:
                      سلام
                      پورت c که 6 پایه بیشتر نداره چرا باید 8 بیتی نوشته بشه؟
                      بله pinc.6 همیشه باید یک باشه
                      [آموزشی] کنترل رله با پیامک توسط sim800l
                      [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
                      [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
                      [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
                      صفحه اینستاگرام : ecdco_ir

                      دیدگاه


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

                        64 تا از PINC کم کنید،اون یک که بیخودی اضافه شده حذف میشه.
                        پورت سی 7 تا پایه داره.من همین جوری 8 تایی نوشتم.7تایی هم درسنه. :job:
                        آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

                        دیدگاه


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

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

                          دیدگاه


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

                            سلام بر شما
                            ---
                            ممنون،اگر میشه بیشتر توضیح بدید ..

                            ضمن اینکه اون برنامه که اول صفحه گذاشتم،کمی قدیمی بود،الان بهتر از قبلش کردم.الان بجایی مبنایی باینری از دسیمال استفاده میکنم..(که دیگه همه چیز رو کوتاه میکنه)
                            باتشکر.

                            دیدگاه


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

                              نوشته اصلی توسط SINASET
                              سلام بر شما
                              ---
                              ممنون،اگر میشه بیشتر توضیح بدید ..

                              ضمن اینکه اون برنامه که اول صفحه گذاشتم،کمی قدیمی بود،الان بهتر از قبلش کردم.الان بجایی مبنایی باینری از دسیمال استفاده میکنم..(که دیگه همه چیز رو کوتاه میکنه)
                              باتشکر.
                              به هر حال بازم فرقی نمیکنه .
                              شما باید در سطر اول یک کد بنویسید که اگر فقط سنسور وسط روی خط رفت ( و بقیه ی سنسور ها توی هر حالتی بودن ) جلو بره و در سطر بعد سنسور سمت راستی و چپی را به تنهایی مورد شرط قرار بدین و همین طور سمت راست و بعد سنسور سمت چپ باز سنسور بعدی سمت راست و بعد سنسور سمت چپ
                              حالا هر موقع سنسور وسطی روی خط باشه و سنسور های دیگه هم روی خط باشن فقط مستقیم میره !
                              انگار دارین الویت براش قرار میدین .
                              موفق باشید
                              « با هر دستی بدی , با همان دست پس خواهی گرفت »
                              این جمله رو فراموش نکن

                              دیدگاه

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