اطلاعیه

Collapse
No announcement yet.

دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

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

    #16
    پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

    نوشته اصلی توسط mojtaba_led
    منظورم اینه که شما وقتی برنامه رو نوشید چه فرکانسی رو براش تعیین کردید همون فرکانس رو باید از طریق فیوز بیت ها برای میکرو انتخاب کنید . به صورت پیشفرض فرکانس میکرو 1 مگ هست احتمالا شما فرکانس برنامه تون 8 مگ یا فرکانس برنامه رو 1 مگ کنید یا با تنظیم فیوز بیت ها فرکانس میکرو رو 8 مگ کنید البته اگه فرکانس برنامه 8 مگ هست
    این که میگم پول دان کنید به خاطر اینه که نویز رو حذف کنه و البته پیشنهاد میکنم با اون مقاوت یک خازن 100 نانو هم موازی کنید (البته تنها پایه هایی که به اون ها کلید وصل میکنید و تغییراتشون توی برنامه تاثیر دارند)
    من فرکانس برنامه رو تو کدویژن، تو قسمت configure برنامه رو هشت مگ تنظیم کردم، فیوز بیت هاشم رو هشت مگ نوسان ساز داخلی گذاشتم. حالا نمی دونم مشکل از کجاست

    دیدگاه


      #17
      پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

      الان دقیقا مشکلتون چیه زمان delay ؟ یا پورت c ؟ هیچکدوم برطرف نشدند؟ میتونید فایلاتون رو به همراه شماتیک مدارتون رو پلود کنید؟

      دیدگاه


        #18
        پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

        مشکل پورت C حل نشد، مشکل delay هم حل نشد.
        این برنامه منه که تو کدویژن نوشتم:
        http://s2.picofile.com/file/7160814943/Test_Program.rar.html
        دو تا فایل C توش هست، تو یکی کنترل سون سگمنت با پورت C هست
        اون یکی یه برنامه برای نمایش اعداد صفر تا 9 رو سون سگمنت هست که هر عددی باید 500 میلی ثانیه نمایش داده بشه.
        این عکس هم تنظیمات فیوز بیت هاست وقتی دارم میکرو رو پروگرام میکنم:



        خیلی ممنونم که جواب میدی ، واقعا ممنونم.

        دیدگاه


          #19
          پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

          به نظر که مشکلی وجود نداره من فقط اون برنامه دومتون رو یه اصلاحی کردمش براتون میزارم شماتیک رو هم که نزاشتید و نگفتین که 7segment چیه من آند مشترک گرفتم
          برنامه :

          کد:
          #include <mega32.h>
          #include <delay.h>
          // Declare your global variables here
          flash unsigned char num[11]=
          {/* 0   1   2   3   4   5   6   7   8   9    */
           0XC0 , 0XF9 , 0XA4 , 0XB0 , 0X99 , 0X92 , 0X82 , 0XF8 , 0X80 , 0X90 };
          void main(void)
          {
          unsigned char i;
          DDRB=0xFF;
          PORTB=0x00;
          DDRC=0x00;
          PORTC=0x00;
          
          while (1)
             {
          
              PORTB=num[i];
              if(++i==10)i=0;
              delay_ms(500);
             }
          }

          این شماتیک :


          در مورد فیوز بیتها مطمئنید که پروگرام میشن یک بار رید کنید ببنید فیوز بیتها درست پروگرام میشن یا ببخشید الان چیزه دیگه ای به ذهنم خطور نمیکنه !

          دیدگاه


            #20
            پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

            خیلی خیلی خیلی ممنون دوست عزیز، واقعا ممنون.
            آره سون سگمنت آند مشترکه. مدار هم فکر میکنم درست باشه، چون وقتی به جای پورت C پورت A میگریم درست کار میکنه. در ضمن یه سوال کوچولو داشتم ببخشید این همه سوال میپرسم، چرا متغیر num رو flash تعریف کردین؟ مگه چه فرقی داره اگه تعریف کنیم:
            unsigned char num[11]l
            و چطوری میتونم فیوز بیت ها رو بخونم تا مطمئن شم درست پروگرم میشن؟

            دیدگاه


              #21
              پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

              خواهش میکنم
              در مورد استفاده از فلش ، خوب میدونید که میکرو چند نوع حافظه داره ، حافظه برنامه (flash) , حافظه داده (sram) و حافظه eeprom خوب هر کدوم بهره کاریه دیگه درسته ، flash : برنامه ای که مینویسید اول کامپیال میشه بعد اسمبل کد هگزه معادل رو تولید میکنه خوب این کدهای هگزه توی خونه های حافظه برنامه یا flash قرار میگیره حالا حافظه داده یا sram چیه خوپ این حافظه معمولا توسط هرکامپایل به چند بخش تقسیم میشه (این قضیه حداقل در مورد یسکام ، کدویژن و iar صادقه)که تو این جا یعنی کدویژن میاد اون به 4 بخش تقسیم میکنه : 1. دیتا استک 2. متغیرهای سراسری 3. استک سخت افزاری 4. هیپ که دیگه توضیح هر کدوم رو میتونید برید توی هلپ ببینید خوب همونطور که دید متغیر های سراسری در داخل ناحیه ای از sram واقع میشن اما خوب ما تا یک حدی میتونیم از این ناحیه با این عنوان استفاده کنیم با توجه به محدودیت های دیگه توی استفاده از این فضا دچار کمبود هستیم پس باید این ناحیه رو برای استفاده های ضروری مثل نیاز به متغیر های سراسری سیو کنیم به خاطر همین همیشه توی برنامه خواستیم از یکسری ثابت چه عددی و چه رشته استفاده کنیم میاییم این ثوابت هامون رو داخل حافظه فلش ذخیره میکنیم به این ترتیب کامپایلر هر وقت نیاز داشت به این رشته ها اون ها رو فقط لود میکنه توی رجیستر اشاره گر z و از اونها برای مقاصد بعدی استفاده میکنه .
              و البته در موقع استفاده از این فضا میشه بارعایت یکسری مسائل مقدار بیشتری رو این ناحیه رو سیو کرد مثلا توصیه میشه که از تعریف متغیر ها به صورت سراسری که در واقع از آنها به طور محلی استفاده میشود اجتناب شود چرا که متغیر های محلی در حافظه استک بازنشانی شده و پس از اتمام عملیات در تابع محلی مورد نظر دوباره از فضای استک پاک میشوند این امر علاوه بر کاهش فضای مصرفی sram با عث تولید کد کمتری میشود چرا که دیگر به بارگزاری های پیاپی از فضای sram داخل رجیستر های I/O نیازی نیست .
              و یا استفاده از حافظه به شکل پویا با استفاده از اشاره گر به این ترتیب که اینجا دیگه یک خونه از حافظه تنها به یک متغیر اختصاص پیدا نمیکنه و میشه با تعریف یک متغیر اشاره گر بخشی از حافظه رو به اون به صورت موقت اختصاص داد و پس از اتمام کار اون ناحیه از حافظه رو آزاد کرد.

              در مورد خوندن فیوز بیت ها توی همون عکسی که گزاشتین روی اون گزینه read fuses که کلیک کنید قاعدتا باید فیوز بیت ها رو بخونه و به شما نشون بده

              دیدگاه


                #22
                پاسخ : دسترسی بیتی به پورت های میکرو-راه اندازی سون سگمنت

                حل شد دوست عزیز
                من فکر میکردم کافیه فیوز بیت ها رو تنظیم کنم بعد دیگه موقع پروگرم کردن برنامه خودش فیوز بیت ها رو هم تغییر میده که اشتباه فکر میکردم باید write fuse bits رو میزدم تا فیوز بیت ها تغییر کنند.
                خیلی ممنون که کمک کردی کارم را بیفته :applause:

                دیدگاه

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