اطلاعیه

Collapse
No announcement yet.

SRAM

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

    SRAM

    سلام یه سوال خیلی مهم و در عین حال مبتدی داشتم...
    اگه برنامه ای داشته باشیم که دارای یک دستور به شکل زیر باشه :
    lcd_putsf ("HELLO");

    حالا اگه برنامه رو پروگرم کنیم:
    1. این رشته ی hello در کجا ریخته میشه ؟
    2. اگه برنامه رو اجرا کنیم آیا رشته hello به sram منتقل میشه یا نه ربطی نداره؟

    من یه برنامه ای نوشتم با میکرو 2561 ، برنامه ای که نوشتم به جایی رسیده که وقتی یه تابع دیگه مینویسم برنامه اجرا نمیشه به طوری که میکرو 3 تا دستور اجرا میکنه به 4 نرسیده ریست میکنه! هی تکرار...

    نظر خودم اینه که sram پر شده و چون از اون دستور lcd_putsf زیاد استفاده کردم احساس میکنم رشته های توش باعث پر شدن sram شده.

    #2
    پاسخ : SRAM

    اطلاعاتی در مورد حافظه ها:
    تقسیم بندی کلی حافظه ها به صورت زیر است: حافظه های RAM: حافظه RAM در اختیار CPU است. حافظه های RAM شامل دو نوع اصلی حافظه است ، 1.(SRAM (static RAM) 2.DRAM

    دیدگاه


      #3
      پاسخ : SRAM

      اگر از تابع lcd_putsf کدویژن استفاده کرده اید، رشته در حافظه flash قرار می گیرد.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #4
        پاسخ : SRAM

        نوشته اصلی توسط طراح نمایش پست ها
        اگر از تابع lcd_putsf کدویژن استفاده کرده اید، رشته در حافظه flash قرار می گیرد.
        کلا چه جور دستوراتی یا بهتره بگیم کدهایی در SRAM قرار میگیرد؟؟؟
        ! Life doesn't get easier , you just get stronger

        دیدگاه


          #5
          پاسخ : SRAM

          در AVR دستورالعمل ها اصولا در حافظه flash قرار می گیرند. اما مواردی مثل رشته ها و جدول ها و مانند آن بسته به نوع کدنویسی می توانند در flash یا sram قرار بگیرند.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #6
            پاسخ : SRAM

            نوشته اصلی توسط طراح نمایش پست ها
            در AVR دستورالعمل ها اصولا در حافظه flash قرار می گیرند. اما مواردی مثل رشته ها و جدول ها و مانند آن بسته به نوع کدنویسی می توانند در flash یا sram قرار بگیرند.
            میشه یه مثال با کد نویسی بزنین؟؟؟
            ! Life doesn't get easier , you just get stronger

            دیدگاه


              #7
              پاسخ : SRAM

              من یه دستور نوشتم در مگا8، توی حلقه ی وایل
              printf("HELLO");
              delay_ms(1000);

              این برنامه رو در پروتیوس اجرا کردم و دیباگ کردم رشته ی hello در حافظه فلش که برنامه ها قرار داره جای میگیره . printf یعنی f در حافظه ی فلش مثل lcd_putsf که f داره.

              دیدگاه


                #8
                پاسخ : SRAM

                نوشته اصلی توسط parlarelc نمایش پست ها
                . printf یعنی f در حافظه ی فلش مثل lcd_putsf که f داره.
                یعنی هرچی که آخرش F داره توی فلش قرار میگیره؟؟
                ! Life doesn't get easier , you just get stronger

                دیدگاه


                  #9
                  پاسخ : SRAM

                  نوشته اصلی توسط Amirlopez نمایش پست ها
                  یعنی هرچی که آخرش F داره توی فلش قرار میگیره؟؟
                  تقریبا میشه گفت اره بیشتر دستورا همین printf و putsf هستن تو برنامه که اینا مقدارشون ثابت باشه تو فلش میشینن.

                  دلیل: ادغام دو پست برای جلوگیری از اسپم

                  نوشته اصلی توسط طراح نمایش پست ها
                  در AVR دستورالعمل ها اصولا در حافظه flash قرار می گیرند. اما مواردی مثل رشته ها و جدول ها و مانند آن بسته به نوع کدنویسی می توانند در flash یا sram قرار بگیرند.
                  میشه بگین بجز تعریف متغیر ها دیگه چه چیزایی در sram میشینه مثلا توابع بازگشتی من هم متغیرم زیاده هم توابعم لیست توابعم اینه .
                  کد:
                  [FONT=Yekan]///////////////////////////////////////////////////////////////////[/FONT]void def_char(flash unsigned char *pc, unsigned char code);
                  void clc (char * );
                  void menu_bar_charj ();
                  void menu_bar_temp ();
                  void menu_bar_atn ();
                  void menu_bar_gps ();
                  void read_mmc_text (char * , char *);
                  void creat_write_mmc_text (char * ,char  , char *);
                  float read_vbat_in ();
                  float read_vbat_out ();
                    
                  void Send_SMS(char * , char *);
                  int SMS_Recieve (char *sms_txt , char *phone , char sms_num);
                  int clock (char * , char * , int);
                  void contact_w(char linec , char *numberc, char *namec);
                  int contact_r(char *getnumberc ,char getlinec );
                  int charj_sim();
                  int name_servis(char *name_operator);
                  int detect_sim( );
                  int find_network( );
                  int antena();
                  int power_sim908(char );
                  int test_sim();   
                  void calling (char *callnumber,char *sms_text,char *modecall);
                  int atcut( char *sms_getstr , char *atcode , char *textcode );
                  void GPS_init();
                  int GPS_check(char *gpsstatus);
                  int GPS_get(char *longitude,char *latitude,char *altitude,char *speed);
                  [FONT=Yekan]///////////////////////////////////////////////////////////////////[/FONT]

                  دیدگاه


                    #10
                    پاسخ : SRAM

                    دوستان چند روزه پروژه مونده رو دستم اگه میشه راهنمایی کنین بتونم این مشکل رو حل کنم از شانس هم تعدادش زیاده.
                    اینم مدار:

                    دیدگاه


                      #11
                      پاسخ : SRAM

                      سلام میخواستم نتیجه ی این آزمایش رو دوستان هم یه دید کلی داشته باشن مفیده.
                      این کد رو در کدویژن زدم و نتیجش رو در پروتیوس دیباگ کردم :
                      کد:
                      #include <mega8.h>
                      ...
                      char p [15];
                      int testing1(char * s );
                      
                      
                      void main(void)
                      {
                      
                      while (1)
                            {    
                             lcd_clear ();
                             lcd_gotoxy(1,1);
                      
                      
                             testing1(p);
                             lcd_puts (p);
                            }
                      }
                      
                      
                      
                      
                      int testing1(char * s )
                      {
                       char str[7]="Number";
                      
                      
                       sprintf(s,"%s one",str);
                       delay_ms(100);    
                      };
                      عکس دیباگ:


                      اگه دقت کنین میبینید که متغیر هایی که در یک تابع نوشته میشه همشون در sram قرار میگیره و هر تغییراتی در توی تابع بر سر متغییر ها اعمال میشه از حافظه ی sram اشغال میکنه و این جای اختصاص شده تا زمانی که برق میکرو قطع نشه پاک نمیشه!
                      مشکل منم همینه از توابع زیادی استفاده که کردم که طول رشته ها باعث میشه پر شه sram و میکرو ادرس اجرای کد رو قاطی کنه تا ریست شه.
                      جدیدترین ویرایش توسط Ho3le; ۱۶:۰۷ ۱۳۹۶/۰۳/۲۴.

                      دیدگاه


                        #12
                        پاسخ : SRAM

                        با سلام
                        متغییرهای متن TEXT رو با انتخاب نوع متغییر flash درون حافظه فلاش ذخیره کنید ! البته این متن ها ثابت میمونن و قابل تعویض یا تغییر نیستند .

                        دیدگاه

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