اطلاعیه

Collapse
No announcement yet.

ذخـیـره مـقـادیـر وارد شـده تـوسـط USART در ( FLASH ) یـا ( EEPROM ) ?

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

    ذخـیـره مـقـادیـر وارد شـده تـوسـط USART در ( FLASH ) یـا ( EEPROM ) ?

    سلام دوستان ،
    آقا من نیاز دارم به این کار لطفا کمکم کنید/ که بیام عددی رو که داخل usart میزنم بره داخل فلش یا ایپرام میکرو ذخیره بشه بعد اون عدد رو روی ال سی دی نمایش بدم .
    یعنی یه جورایی حساب کنید میخوام setting میکروم رو توسط usart ست کنم ممنون میشم دوستان یه نمونه کوچیک بزارن من متوجه بشم .

    #2
    پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

    نوشته اصلی توسط VSPACE
    سلام دوستان ،
    آقا من نیاز دارم به این کار لطفا کمکم کنید/ که بیام عددی رو که داخل usart میزنم بره داخل فلش یا ایپرام میکرو ذخیره بشه بعد اون عدد رو روی ال سی دی نمایش بدم .
    یعنی یه جورایی حساب کنید میخوام setting میکروم رو توسط usart ست کنم ممنون میشم دوستان یه نمونه کوچیک بزارن من متوجه بشم .
    آقا کسی نیست جواب بده با یه امیدی امدیم اینجا سوال مطرح کریدم .

    دیدگاه


      #3
      پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

      داخل فلش نمیتونی بریزی (باید از قسمت بوت لودر اینکارو انجام بدی که یه کم سخته) پس بهتره بریزی داخل EEPROM
      برای ذخیره یه متغیر داخل این حافظه هم کافیه در کدویژن از کلمه eeprom استفاده کنی

      دیدگاه


        #4
        پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

        نوشته اصلی توسط VSPACE
        آقا کسی نیست جواب بده با یه امیدی امدیم اینجا سوال مطرح کریدم .
        سلام

        اگر منظورتون از ستینگ میکرو اینه که متغیراهای که تعریف کردید را بوسیله یوزارت تغیر بدید اینطور انجام بدید:

        1 - برای هر متغیری که تو برنامه تائین میکنید یک متغییر از همان نوع در ای-پی-رام به آن تخصیص بدهید.
        2- مقادیر داده شده را داخل متغییر ای-پی-رام بریزید و هنگام استفاده دوباره از ای-پی-رام بخوانید.

        اگر نیاز بود بگید جزئی تر بگم.
        دوست عزیز اگه مفید بود روی تشکر بزن

        دیدگاه


          #5
          پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

          دوست عزیزممنوم میشم یه خورده بیشتر توضیح بدین / ببنید من میتونم مثال بزنم بیشترروشن بشه مسله
          من میخوام مقدار min و max سنسور دما رو وقتی این طوری min=18 یا max=23 از طریق usart وارد میکنم ذخیره بشه ببنید من با کلید های کیبورد انجام دادم مثلا اون واحد ++ یا -- کنم با کلید کیبور حتی سیو هم کردم تو ایپرام یا فلش اما میخوام عدد وارد کردم سیو بشه از طریق یوزارت

          دیدگاه


            #6
            پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

            نوشته اصلی توسط VSPACE
            دوست عزیزممنوم میشم یه خورده بیشتر توضیح بدین / ببنید من میتونم مثال بزنم بیشترروشن بشه مسله
            من میخوام مقدار min و max سنسور دما رو وقتی این طوری min=18 یا max=23 از طریق usart وارد میکنم ذخیره بشه ببنید من با کلید های کیبورد انجام دادم مثلا اون واحد ++ یا -- کنم با کلید کیبور حتی سیو هم کردم تو ایپرام یا فلش اما میخوام عدد وارد کردم سیو بشه از طریق یوزارت
            سلام

            بالا گفتید میخواید که داده رو روی ای-پی-رام بریزید که راحشو گفتم.
            ظاهرا از چیزی شبیه هایپر ترمینال هم اطلاعات و فرستادید( من با کلید های کیبورد انجام دادم ) به میکرو و در ای-پی-رام و فلش ذخیره کردید(حتی سیو هم کردم )!
            حالا مشکل چیه همه کارا رو که کردید!
            یوزارتی که میگید کجاست؟ بغییر از ارتباط کامپیوتر با میکرو هست؟
            دوست عزیز اگه مفید بود روی تشکر بزن

            دیدگاه


              #7
              پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

              سلام ببینید من میخوام عدد رو وقتی با اعداد روی کیبور میزنم سیو کنم تو ایپرام مثلا تو محیط ترمینال بزنم min=10 و Max=20 سیو بشه داخل ایپرام و روی ال سی دیم نمایش بده عدد ست شده رو وقتی خاموش روشنش کردن و اگر باز مقادیر دیگه ای دادم برای اون حد بالا و پایین ذخیره بشه باز .
              lمنظورم از یوزارت همون سریاله

              دیدگاه


                #8
                پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

                همانطور که گفتم:

                عدد را از یوزارت می خونی و میریزی تو یک متغییر از نوع ای-پی-رام و همین!!!
                و زمانی که خواستی بخونی متغییری که برای ای-پی-رام تعریف کرده بودی را بریز تو متغییر متناظرش از همون نوع بعدش روی ال-سی-دی نمایش بده.
                شروع کن کدشو بنویس جای که به مشکل خوردی کدشو بزار تصحیش کنم.

                دوست عزیز اگه مفید بود روی تشکر بزن

                دیدگاه


                  #9
                  پاسخ : ذخیره مقادیر وارد شده توسط USART در flash یا eeprom

                  ** // اینم قسمنی از کد من که مربوط به این سوالی گه کردم میشه !
                  کد:
                  [right]
                  
                  // Declare your global variables here
                  unsigned char h[2];
                  eeprom unsigned int data;
                  ************************************************************
                  void Configuration_Key(void){
                  char ch;
                  itoa(data,h);
                  ch=getchar();
                  
                  if(ch=='1'){delay_ms(3);data=data+1;}
                  lcd_gotoxy(0,0);
                  lcd_puts(h);
                  
                  [/right]
                  من اینکار بالارو انجام میدم /

                  اما حالا من میام این کار پایین رو میکنم ،
                  یعنی میام هر چیزی رو که خواستم با کیبوردم کامپیوترم تایپ میکنم نمایشش میدم .
                  کد:
                  [right]
                  
                  scanf("%2s",k);
                    printf("\n\r Min=%s",k);
                   lcd_gotoxy(4,0);
                    lcd_puts(k);
                  
                  [/right]
                  من میخوام وقتی عدد تایپ کردم یعنی اینطوری تو ترمینال نوشتم Min=10 مقادیر تو eeprom ذخیره بشه !!!
                  حالا تو این قسمت از کد من هرجاش رو که باید تغییر بدم یا اضافه کنم چیزی رو بگین من انجام بدم . ممنونم باز /
                  ************************************************** **********************************************
                  راستی یه سوال ؟؟
                  ببنید منظور شما بالا این بود یه متغییر a رو بریزم تو ایپرام بعد ایپرام رو بریزم تو یه متغیر دیگه b برای نمایشش روی ال سی دی /
                  کد:
                  [right]
                  
                  unsigned char a[3];
                    eeprom unsigned int data;
                  unsigned char b[3];
                   itoa(data,b);
                  
                  [/right]
                  من با itoa ایپرام data رو میریزم تو یه متغیر به نام b اما اول متغیر a رو چطوری بریزم تو ایپرام data ؟؟؟
                  اگه درست گفته باشم منظور بالای شما رو / لطفا کمکم کنید حسابی کارم گیر این مسله شده !

                  دیدگاه


                    #10
                    پاسخ : ذخـیـره مـقـادیـر وارد شـده تـوسـط USART در ( FLASH ) یـا ( EEPROM ) ?

                    نگاه کن اینطوری نمیشه

                    مثلا داده ای که از کامپیوتر گرفتی از نوع عددی است و برای اینکه بریزی تو ای-پی-رام اینطور عمل می کنی:

                    یک متغییر عددی در ای-پی-رام تعریف می کنی و بعد متغیر ای-پی-رام را مساوی متغیر عددی که داخلش اطلاعاته قرار می دی.

                    همین :nice:

                    حالا هر وقت خواستی اطلاعاتو از ای-پی-رام بخونی باید بدونی که چه اطلاعاتی را در کدام متغییر ای-پی-رام ریختی و بعد یه متغییر عددی تعریف میکنی و مساوی متغییر ای-پی-رام قرار می دی و حالا اطلاعت تو متغییر است :nice:

                    بصورت برنامه میگم:

                    eeprom unsigned int max_e
                    int max

                    max_e=max;

                    در اینجا مقدار max که از نوع عددی است و مقدار دمای ماکزیمم است در ای-پی-رام max_e ریخته شده آدرس دهی خود میکرو انجام می ده و کاری باهاش نداری.

                    حالا میخواهی که از ای-پی-رام بخونی:

                    تعریف متغیر ها که اون بالا هست و تو برنامه ثابته

                    max=max_e;

                    حالا max که متغیر عددی است مقدارش مقدار ذخیره شده در ای-پی-رام است و میتوانی max را پرینت یا پردازش کنی.

                    البته باید یک سری مطالب هم در کیفیت کار لحاظ کنی که بعدا که نتیجه گرفتی میگم. :nice:

                    دوست عزیز اگه مفید بود روی تشکر بزن

                    دیدگاه


                      #11
                      پاسخ : ذخـیـره مـقـادیـر وارد شـده تـوسـط USART در ( FLASH ) یـا ( EEPROM ) ?

                      سلام ، من کارایی رو که گفتین انجام دادم و میخورم به یه مشکل که اونم نمیدونه چی باید ذخیره کنه :angry: چون اون عددی که از روی کیبورد میزنم برای میکرو ارسال میشه با ترفندی که بالا شما فرمودید فقط صفر ذخیره میشه . :angry:
                      من با این کار که بالا شما فرمودین فقط میتونم یه جورایی عددی که دارم با کلید افزایش + یا کم - میکنم رو ذخیره میکنم / لطفا شما خودتون یه مسیری رو بهم کامل بگین و یا اگه میشه خودتون یه تست کنین راهنمایی کنین لطفا / / منتظرم خیلی سعی کردم تا جایی که وقت میکردم .

                      دیدگاه


                        #12
                        پاسخ : ذخـیـره مـقـادیـر وارد شـده تـوسـط USART در ( FLASH ) یـا ( EEPROM ) ?

                        الانم روی پروژه هام دارم استفاده می کنم.
                        نیاز به تست نیست.
                        چندتا سوال می پرسم جواب بدین ببینم کجای کارتون مشکل داره!

                        نام متغییری که اطلاعات رو از یوآرت میگیره و نوع آن چیست؟
                        همون عددی که گفتید کم و زیاد میکنید - متغییرش را بگید.
                        روی همون چند خط برنامه مینیویسم براتون
                        دوست عزیز اگه مفید بود روی تشکر بزن

                        دیدگاه


                          #13
                          پاسخ : ذخـیـره مـقـادیـر وارد شـده تـوسـط USART

                          کد:
                          من به این روش پایین یک بار خودم نوشتم با + و مراحل توضیحی شما رو هم اضافه کردم در جهت usart اگر دقت به محتویات کد کنید/ 
                          این خلاصه ای از کد بنده مربوط به بخش eeprom / ممنون باز هم 
                          [code=c]
                          // Declare your global variables here
                          
                            unsigned char Min;   
                            eeprom unsigned char Min_EEPROM; 
                          
                            char w[4]; 
                            int a;
                            eeprom unsigned int max_e; 
                          
                          void main(void)
                          { 
                          // Declare your local variables here
                          
                           EEPROM_Load();
                          Configuration_LCD();
                          
                          while (1)
                             { 
                             Configuration_Key();
                             delay_ms(250);
                             }
                          } 
                          
                          //********************************************************
                          //********************************************************
                          void Configuration_LCD(void){
                            lcd_init(16);lcd_clear();
                          }
                          
                          //********************************************************
                          //********************************************************
                          void Configuration_Key(void){
                            char ch;
                          
                          Display_LCD_offset();
                           
                           if(rx_counter){
                            ch=getchar();
                          
                          if(ch=='+'){delay_ms(3);Min=Min+1; EEPROM_Save();}
                          
                          if(ch=='v'){
                          
                            scanf("%2d",a);
                            printf("\n\r Min=%d",a);
                          }
                            itoa(a,w);
                            max_e=a;
                            a=max_e;
                            
                            lcd_gotoxy(10,0);
                            lcd_puts(w);
                          }
                          
                          //********************************************************
                          //********************************************************
                          void Display_LCD_offset(void){
                            char buffer_Min[6];
                          
                          itoa(Min,buffer_Min);
                          lcd_gotoxy(0,1); lcd_putsf("Min:"); lcd_puts(buffer_Min);
                          }
                          
                          //********************************************************
                          //********************************************************
                          void EEPROM_Load(void){
                            Min=Min_EEPROM; delay_ms(10);
                          }
                          
                          //********************************************************
                          //********************************************************
                          void EEPROM_Save(void){
                            Min_EEPROM=Min; delay_ms(10);
                          }

                          دیدگاه


                            #14
                            پاسخ : ذخـیـره مـقـادیـر وارد شـده تـوسـط USART در ( FLASH ) یـا ( EEPROM ) ?

                            چندتا اشکال داره برنامت
                            یکی اینکه Min فکر کنم منظورت عددی بوده - کارکتر تعریف کردی - چون هر دفعه یکی اظافه میکنی تو خط 40 ودر خط 60 بعنوان عدد میخوای تبدیلش کنی به کاراکتر

                            مورد بعدی 10 میل را 100 یا 150 میلی ثانیه تغییر بده.

                            بعدش فقط مینیموم را ظاهرا خواستی ذخیره کنی و ماکسیمم اصلا نیست.
                            یکی هم متغییر a که فکر میکنم از ترمینال میگیری و همونو دوباره برای ترمینال میفرستس و مقدار a را در lcd نمایش میدی.
                            a را داخل eeprom ریختی و دوباره میخوانی که و 2 باره میخوانی که نمیدونم چرا ؟- شاید برای تستت باشه.

                            اگر چه جواستی بنویسی یا بخوانی 100 یا 150 مکث بده.

                            ----------------------
                            در کل Min را هم بعد گرفتن به اینتیجر تبدیل کن و در حافظه eeprom قرار بده مثل max-اول خط یادت نره Min اینتیجر معرفی کنید- الان کاراکتره.

                            اگر هم نخواستی int کنی همه را char تعریف کن بازم در eeprom ذخیره می شود و مشکلی نیست.
                            دوست عزیز اگه مفید بود روی تشکر بزن

                            دیدگاه


                              #15
                              پاسخ : ذخـیـره مـقـادیـر وارد شـده تـوسـط USART &am

                              دوست عزیز من فقط واحد MIN رو اینجا به عنوان مثال گذاشتم که قبل تر پیش این راه رو رفته بودم طبق اون روشی رو که بالا عرض کرده بودین منتها تو این یک واحد یه واحد کم یا زیاد میشه با دوتا کلید و ذخیره میشد !
                              حالا روش شما هم که عرض کردم مثل روش بالایی من بود اما من موندم که چطوری از اون روش شما یا خودم استفاده کنم در جهت عدد وارد شده از طریق یوزارت / من کد خودمو قرار دادم بخاطر اینکه شما یه مثالی رو خودتون انجام بدین و یا اینکه اصلا میخوایین کد منو نادیده بگیرین و خودتون اون قسمت از کدی رو که از یوزارت عدد میگیره و ذخیره میکنه تو ایپرام و بعد نمایشش میده رو ال سی دی رو به من اینجا بگین یا برام ارسالش کنین ! ممنونم باز هم از اینکه وقتتون رو میزارین برای کمک به من / / تشکر

                              اضافه شده در تاریخ :
                              من منتظر کمک شما هستم ؟؟؟؟

                              اضافه شده در تاریخ :
                              اقا چه خبر کسی نیست جواب بده به ان سوال بنده ؟؟؟؟؟

                              دیدگاه

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