اطلاعیه

Collapse
No announcement yet.

تبدیل 16f به 18f

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

    تبدیل 16f به 18f

    سلام به دوستان و اساتید
    من از 16f877a دارم استفاده می کنم ولی انگار از RAM و ROM کم آوردم و می خوام این مشکل رو برطرف کنم .
    به نظر خودم دو سه راه رسید :
    یا بشینم و کد هام رو تا اونجا که میشه جمع و جور کنم ------------------ که هم زمان زیادی می بره و هم اینکه ممکنه باز هم جا کم بیارم
    یا اینکه از حافظه خارجی EEPROM استفاده کنم --------------------------- که بخاطر سرعتش همه چیز رو نمی شه بهش منتقل کرد و در عین حال نمی دونم اصلا برنامه اصلی رو میشه از روی EEPROM اجرا کرد یا نه
    یا اینکه از یک میکرو دیگه استفاده کنم .
    [hr]
    دیدم قیمت PIC18F46K80 زیاد با PIC16F877 فرق نمی کنه (8500 و 11700 تومان-الآن!!!!) - پین هاشون هم به هم می خوره ( به جز PIN_A4 )
    حالا سوالم اینه که آیا می شه برنامه ام رو که برای PIC16 نوشتم ، بدون تغییر زیاد روی PIC18 بریزم و باهاش کار کنم ؟ یا اینکه اصلا این دو تا دو دنیای متفاوت هستند و اگر بخوام باهاشون کار کنم باید از اول برنامه رو بنویسم
    دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

    #2
    پاسخ : تبدیل 16f به 18f

    کدهای اصلی رو نمیشه به این راحتی ها از حافظه ی خارجی خوند . مگر شکل و مولتی مدیا و مشابه اینا باشه ( که راحته ) . اما راحتترین راه استفاده از میکروهای بالاتر هستش . برای اینن کار من 18F452 رو پیشنهاد میدم که تقریبا مثل یکی خودتون هستش. البته با امکانات بالاتر . ولی باید رجیسترهاش رو دوباره تنظیم کنید . مثل کریستال و ... . یادتون نره که 18 ها اغلب دارای PLL یا ضرب کننده کلاک هستند . پس تنظیمات اون هم یادتون نره . یک بار کار کنی راحت یاد میگیرین . بعدش دیگه دلت نمیاد با 16 ها کار کنی !!
    موفق و شاد باشید .
    if all men are the same
    then
    why do women take so long to choose one ?

    دیدگاه


      #3
      پاسخ : تبدیل 16f به 18f

      فکر کردم قسمت دوم امضاتونه ! نه برنامه ی اصلی با این میکرو هیچ تغییری نداره . یه نیگا به سخت افزارش بندازی متوجه میشی . فقط همون اول برنامت باید تغییر رجیسترها رو بدی . در ضمن این 18 ها 2 تا وقفه دارن نه 1 دونه . HIGH و LOW به کامپایلرت مراجعه کنی میبینی . البته اگه تعریف نکنی نوعش رو ، همون HIGH رو در نظر میگیره . خیلی راحته .
      if all men are the same
      then
      why do women take so long to choose one ?

      دیدگاه


        #4
        پاسخ : تبدیل 16f به 18f

        نوشته اصلی توسط josef2600
        کدهای اصلی رو نمیشه به این راحتی ها از حافظه ی خارجی خوند . مگر شکل و مولتی مدیا و مشابه اینا باشه ( که راحته ) . اما راحتترین راه استفاده از میکروهای بالاتر هستش . برای اینن کار من 18F452 رو پیشنهاد میدم که تقریبا مثل یکی خودتون هستش. البته با امکانات بالاتر . ولی باید رجیسترهاش رو دوباره تنظیم کنید . مثل کریستال و ... . یادتون نره که 18 ها اغلب دارای PLL یا ضرب کننده کلاک هستند . پس تنظیمات اون هم یادتون نره . یک بار کار کنی راحت یاد میگیرین . بعدش دیگه دلت نمیاد با 16 ها کار کنی !!
        موفق و شاد باشید .
        مثل همیشه از پاسخهاتون متشکرم
        رفتم و هم اون میکرویی که شما گفتید و هم اونی که خودم نوشته بودم رو خریدم.
        اونی که خودم گفته بودم که اصلا نمی تونم پروگرامش کنم ، من یه پروگرامر نوآوران دارم که فکر می کنم از خانواده pickit2 باشه و هیچ کدوم pic18f46k80 رو ساپورت نمی کنن ، موندم این چجوری پروگرام میشه....
        اونی رو هم که شما گفتید pic18f452 رو پروگرام کردم و قبلش include رو تغییر دادم یه چند تا #byte تو کتابخانه های قبلی بود که تغییر دادم ، اینا رو هم اضافه کردم:
        //setup_wdt(WDT_OFF);
        //setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
        //setup_low_volt_detect(FALSE);
        //setup_oscillator(False);
        ولی کار نکرد
        نمی دونم چه تغییرات دیگه ای باید بدم.
        pll شاید باید تغییر کنه
        یه جا شنیدم کلا کامپایلر باید فرق کنه آخه این picc چند مدل داره که برای من pchw هست
        دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

        دیدگاه


          #5
          پاسخ : تبدیل 16f به 18f

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

          دیدگاه


            #6
            پاسخ : تبدیل 16f به 18f

            شما لطف داری . گفتم باید یه مدتی روش کار کنی . بعدش دیگه دلت نمیاد بری با مدل های پایینتر کار کنی !
            در مورد کامپایلر که خودتون گفتین ! تمامشون با یک کامپایلر هستن . بعد ، خوانواده DS ها مثل سری 24 و 30 و 33 کامپایلر دیگه یا ورژن دیگه ای از کامپایلر رو دارن و 32 ها هم یه ورژن دیگه از کامپایلرها رو دارن . من با CCS کار نکردم . ولی این قضیه همه جا عمومیت داره .
            در مورد ارتباط سریال باید بگم کهه چرا میشه ! اما پایه های پروگرامش رو باید دقت کنید که اولا درست کانکت شده باشه و بعدش معمولا نمیتونید به اون پایه ها چیزی وصل کنید ( 2 تا پایه ی PGC و PGD ) . اگه تو ISP با میکرو مشکل داشتین باید این 2 پایه چیزی بهشون وصل نباشه . معمولا میگن مقاومتی که به این پایه ها وصله حداکثر باید 1.8 کیلو اهم باشه و کمتر نشه . LCD به این پایه ها وصل نشه و ... .
            دستوراتی که مثال زدین :
            //setup_wdt(WDT_OFF); تو این 2 تا 16F & 18F فرقی نداره .
            تایمرها فرقی ندارن ( معمولا . البته بعضی از 18 ها تایمرهای بیشتر و پیشرفته تری دارن . کاری نداره که ! به دیتاشیت رجوع کنید . واقعا راحته ! )
            //setup_low_volt_detect(FALSE); هیچ فرقی نداره .
            //setup_oscillator(False); این یکی خیلی فرق داره ! اونم بیشتر به خاطر PLL هستش و بع تنظیمات بیشتر با قابلیت های بیشتری داره . بهترین راه بازم استفاده از دیتاشیت هستش . اما اصولیش این هست که تو خود کامپایلر تعریف کنید و نه تو برنامه . مثلا میکرو الکترونیک ها همشون تنظیماتش بسیار راحت توسط خود کامپایلر انجام میشه . توی MPLAB میشه با کامپایلر تعریف کرد ولی بسیار سخته ! راحتتر اینه که تو برنامه تعریف کنید . البته توی اون به طور اثتثنا ، بسیار خوب تعریف میشه . اما تو میکروهای بالاتر و به خصوص هاست ها بسیار به مشکل میخورین . البته هنوز به DSPIC ها نرسیدین . من به شخصه از CCS ابدا خوشم نمیاد ! حاظرم فقط با MPLAB به اسمبلی کار بکنم اما نزدیک CCS نشم . این همه کامپایلر ! چرا گیر دادین به این یکی ؟ اگه از MPLAB ورژن های C استفاده کنید بسیار عالیتره ! فقط چندتا مشکل حاد و اساسی داره که اونم مال مجانی بودن و عدم وجود کرک مناسب براش هست . برای HIP کرک هست اما HIP ها همشون DEMO هستن !!! من خودم میکرو الکترونیک ها رو ترجیح میدم . حالا به هر زبانی . اما مشکلی که باز تمام کامپایلر ها در مقابل MPLAB دارن ، لایبراری های فوق العاده عجیب غریب کمپانی مایکروچیپ هستش که فقط توی MPLAB قابل استفاده هستن . و متاصفانه با اینکه میگن ( میگن !! ) MPLAB اوپن هستش ، اما اصلا هم اینطور نیست ! یه نیگا به لایبراری هاش بندازین میبینین که همشون قفلن ! مثل تمام کامپایلرهای دیگه ! چه فایده داره وقتی برنامه میدن که فقط با لایبراری های خودش کار میکنه و اصلا معلوم نیست چجوری کار میکنه . و اصلا قابل تبدیل به کامپایلرهای دیگه نیستن .
            در ضمن برای نوع میکروی انتخوابی همیشه اول ببینید که پروگرامرتون صاپورتش میکنه یا نه !! بعد میکرو رو بخرین ! در این مورد تو همین قسمت توضیحات کامل داده شده . PICKIT2 ساخت و ...
            موفق و شاد باشید .
            if all men are the same
            then
            why do women take so long to choose one ?

            دیدگاه


              #7
              پاسخ : تبدیل 16f به 18f

              از راهنمایی های همیشگی شما متشکر!
              -------------------------------
              من قبلا با microc کار کردم ولی مشکل داشت و نتونستم باهاش شروع کنم ، با این کامپایلر/نرم افزار شروع کردم و باهاش دو سه تا پروژه انجام دادم و جایی اذیت نکرد . برای همین با همونی که بهش عادت کرده بودم و یاد گرفته بودم ، ادامه دادم .
              یادم میاد اون زمانی که داشتم نرم افزار انتخاب می کردم می گفتن که ccs مزیتش اینه که بیشترین طرفدار رو تو دنیا داره ، برای همین کتابخونه های بیشتری براش هست و البته وقتی آدم به ccsinfo.com/forum سر می زنه می بینه که واقعا چیز بزرگ و خوبیه و از سراسر دنیا اونجا آدم هایی هستن که اگر آدم کارش گیر کرد بهش کمک کنن و کارش رو راه بندازن
              البته جدیدا یه کم مشکلات برام پیش اومده ( مثل همون هنگ کردن و ریست که شما خودتون در جریان هستید ) که به کامپایلر مظنونم کرد و دوست دارم با یک نرم افزار/کامپایلر دیگه امتحان کنم برنامه ام رو ببینم مشکل کجاست.
              --------------------
              الان که برنامه ام رو ریختم تو mplab به اینا گیر می ده:
              disable_interrupts(INT_TIMER1);
              disable_interrupts(global);
              port_b_pullups(false);
              setup_adc_ports(NO_ANALOGS);
              setup_adc(ADC_OFF);
              setup_spi(FALSE);
              setup_timer_0(RTCC_INTERNAL);
              setup_timer_1(T1_internal|T1_DIV_BY_1);
              setup_timer_2(T2_DISABLED,0,1);
              و
              delay هام
              و
              تمام چیز هایی که مربوط به string میشن (فکر کنم string.h توش include نشده)
              و
              #include <18f452.h>
              -----------------------------
              من واقعا با زمان مشکل دارم وگر نه دوست دارم همه کامپایلر ها رو زیر و رو کنم و همه میکرو ها رو از اول تا آخر یاد بگیرم . به نظر شما ارزشش رو داره ( از نظر زمانی ) که برنامه ام رو منتقل کنم به این نرم افزار و با اون کار کنم .
              البته انگار mplab از خودش هیچ کامپایلری نداره و باز از کامپایلر picc ccs استفاده می کنه ، اون HIP هم که شما می فرمایید مشکل داره(اگر کامپایلر باشه )
              دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

              دیدگاه


                #8
                پاسخ : تبدیل 16f به 18f

                بله ارزش داره تعویض کامپایلر شما ! اما MPLAB X قویترین کامپایلر دنیاست از همه نظر . زیاد توضیحات داره که چرا . اما زبان اصلیش اسمبلی هستش بدون اضافه جات . اما نرم افزارهای دیگه رو بهش اضافه میکنن تا C رو کاملا حمایت کنه . اما برای C مجانی نیست . مثلا
                HI-TECH C Compiler for PIC10-12-16 MCUs (PRO-Standard-LITE) Update v9.83osx.exe
                و
                PICC_18_9_80_win.exe
                و یا
                mplabc18-v3.40-windows-lite-installer.exe
                که این یکی مال 18 ها هست و مال خود مایکروچیپ هستش . مجانی نیستن ! مشکلش برای من فقط همینه . وگرنه ارزش یادگیری کامل رو داره . اگه رجیستر میشدش که بهترین بود و یک لحظه هم تردید نمیکردم . اما برای سطح متوسط کافیه .

                در مورد رجیستر ها بله فرق میکنن . همه ی کامپایلرها با هم فرق میکنن تو این ضمینه . مثلا :
                تو MPLAB پورتها و بیتها اینجوری تعریف میشن :
                PORTDbits.RD3 که میشه پورت PORTD.3 بیت . حالا این تو هر کامپایلری یجوری هستش . اما دستورات C همه جا یکسان و استاندارد هستن .
                بهترین حالت اینه که به دیتاشیت میکرو رجوع کنید که برنامه های توضیحی داخلش کامل وجود داره و مخصوص MPLAB و به C و به اسمبلی هستش و بدون مشکل هست و بسیار راحت .
                موفق و شاد باشید .
                if all men are the same
                then
                why do women take so long to choose one ?

                دیدگاه


                  #9
                  پاسخ : تبدیل 16f به 18f

                  متشکرم از پاسختون
                  در ضمن اون ICSP هم درست شد ( خود به خود ! بعضی وقتها فکر می کنم تو مدارام جن رفته!!!! :twisted
                  دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

                  دیدگاه


                    #10
                    پاسخ : تبدیل 16f به 18f

                    نوشته اصلی توسط محمدحسـین
                    متشکرم از پاسختون
                    در ضمن اون ICSP هم درست شد ( خود به خود ! بعضی وقتها فکر می کنم تو مدارام جن رفته!!!! :twisted
                    سلام . نه ، تو مدارت جن نرفته ! کابل های ISP رو با سوکتش عوض کن و یکی دیگه بساز . بعد اتصالات پروگرامرت رو چک کن . معمولا با کار اولی مشکلت حل میشه .
                    موفق و شاد باشید .
                    if all men are the same
                    then
                    why do women take so long to choose one ?

                    دیدگاه


                      #11
                      پاسخ : تبدیل 16f به 18f

                      جوزف جان شما می دونی معادل دستورات ccs رو تو c18 از کجا میشه گیر آورد؟؟؟؟
                      مثلا همونایی که براتون نوشته بودم :
                      set_timer1(0);
                      read_eeprom
                      delay_ms
                      disable_interrupts(INT_TIMER1);
                      disable_interrupts(global);
                      port_b_pullups(false);
                      setup_adc_ports(NO_ANALOGS);
                      setup_adc(ADC_OFF);
                      setup_spi(FALSE);
                      setup_timer_0(RTCC_INTERNAL);
                      setup_timer_1(T1_internal|T1_DIV_BY_1);
                      setup_timer_2(T2_DISABLED,0,1);
                      اگر خودتون می دونید که بسم ال... وگرنه لطفا یه منبع معرفی کنید.ممنون
                      دوستان عزیزم تصمیم گرفتم تا یه مدت کمتر به تالار سر بزنم . اگر دیر جواب دادم ببخشید.

                      دیدگاه


                        #12
                        پاسخ : تبدیل 16f به 18f

                        HELP !
                        شما دستور رو در HELP سرچ کنین ، معادلش رو جایگزین کنین . مثلا دستور پرش رو سرچ کنید تو CCS سرفصلش میاد پرش ها بعدش تو MPLAB سرچ کنید پرش ها . بعد دستور معادل با کار خودتون رو پیدا کنید . اما به این راحتی هم اغلب نیست . بخش آموزش MPLAB همین سایت رو مطالعه کنید . کتابخانه های MPLAB بسیار زیادن و باید ازشون مطلع باشین وگرنه ممکنه اغلب تو HELP برای دستورات لایبراری خواص دچار سردرگمی بشید . بعدش هم از جناب رمضانی که سرور بنده هستن بپرسید تا کاملا راهنمایی بشین .
                        موفق و شاد باشید .
                        if all men are the same
                        then
                        why do women take so long to choose one ?

                        دیدگاه


                          #13
                          پاسخ : تبدیل 16f به 18f

                          بازم دقت نکردی ! دستورات سخت افزاری مثل
                          disable_interrupts(INT_TIMER1);
                          disable_interrupts(global);
                          port_b_pullups(false);
                          setup_adc_ports(NO_ANALOGS);
                          setup_adc(ADC_OFF);
                          setup_spi(FALSE);
                          setup_timer_0(RTCC_INTERNAL);
                          setup_timer_1(T1_internal|T1_DIV_BY_1);
                          setup_timer_2(T2_DISABLED,0,1);

                          رو تو دیتاشیت به راحتی پیدا میکنی . اصلا سخت نیست .
                          if all men are the same
                          then
                          why do women take so long to choose one ?

                          دیدگاه

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