اطلاعیه

Collapse
No announcement yet.

ذخیره eeeprom

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

    #16
    پاسخ : ذخیره eeeprom

    نوشته اصلی توسط saeiddiod
    برنامتو بذار ببینیم ایرادش کجاست.
    کد:
    #include <mega32.h>
    #include <delay.h>
    
    #define r1 PORTB.1
    #define r2 PORTA.1
    
    
    eeprom int i;
    eeprom int j;
    eeprom int h;
    eeprom int g;
    
    void main(void)
    {
    
    PORTA=0x00;
    DDRA=0xFF;
    
     
    PORTB=0x00;
    DDRB=0xFF;
    
    
    PORTC=0x00;
    DDRC=0xFF;
    
    PORTD=0x00;
    DDRD=0xFF;
    
    while (1)
       { 
         
        n:
        {
         j=0;
         g=0;
         PORTB.0=0;
         PORTA.0=0;
         PORTA.2=0;
         PORTB.2=1;
         r1=0;
         r2=0;
         delay_ms(3);
         r1=1;
         r2=1;
         delay_ms(3);
         i+=1;
         if (i==1000)
         {
         i=0;
         h+=1 ;
         delay_ms(10000);
         if (h==3)
          {
          goto m;
          }
         goto n;
         }
         else
         {
          goto n;
         }
        }
        
         m:
        {
         i=0;
         h=0;
         PORTB.0=1;
         PORTA.0=1;
         PORTA.2=0;
         PORTB.2=0;
         r1=0;
         r2=0;
         delay_ms(3);
         r1=1;
         r2=1;
         delay_ms(3);
         j+=1;
         if (j==1000)
         { 
          j=0;
          g+=1 ;
          delay_ms(10000);
          if (g==3)
           {
           goto n;
           }
          goto m;
         } 
         else
         { 
          goto m;
         }
       
        }
       
       
       }
    }
    من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

    دیدگاه


      #17
      پاسخ : ذخیره eeeprom

      این دستور چکار میکنه؟ ;i+=1

      دیدگاه


        #18
        پاسخ : ذخیره eeeprom

        نوشته اصلی توسط saeiddiod
        این دستور چکار میکنه؟ ;i+=1
        خب مقدار i افزایش میده مثل دستور i=i+1
        این ایراد نمیگیره مشکلی نداره برنامه درست کار میکنه فقط مشکل کار با ذخیره کردنش هستش
        من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

        دیدگاه


          #19
          پاسخ : ذخیره eeeprom

          مشکل اینه که میکرو بعداز روشن شدن میاد و دستور صفر شدن متغییر رو میخونه و اونو صفر میکنه.
          این حالت بعداز هر بار روشن شدن میکرو انجام میشه.باید اون 2تا دستور رو پاک کنی(i=0 g=0)

          دیدگاه


            #20
            پاسخ : ذخیره eeeprom

            نوشته اصلی توسط saeiddiod
            مشکل اینه که میکرو بعداز روشن شدن میاد و دستور صفر شدن متغییر رو میخونه و اونو صفر میکنه.
            این حالت بعداز هر بار روشن شدن میکرو انجام میشه.باید اون 2تا دستور رو پاک کنی(i=0 g=0)
            اخ پاکش کنم بعد اینکه تو لوپ افتاد برنامه بهم میریزه
            نمیشه اونا رو پاک کنم
            من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

            دیدگاه


              #21
              پاسخ : ذخیره eeeprom

              بیشتر توضیح بده تا برنامه رو تغییرش بدم برات

              دیدگاه


                #22
                پاسخ : ذخیره eeeprom

                نوشته اصلی توسط milad brave
                سلام
                من میخاستم تا مقدار تو eeeprom ذخیره کنم بطوری که هر تاشون جدا باشن و موقع قطع و وصل برق دستگاه از اونجا ک مونده شروع کنه بعدشمهر لحظه اونارو ذخیره کنه لطفا کمک کتید انجامش بدم تو بسکام اوکی هستش ولی تو سی نمیدونم اینکار چ جوری انجام بدم
                درضمن هر 4 متغییر هر ثانیه در حال تغییر هستن
                مراقب باش eeprom محدودیت نوشتن داره

                دیدگاه


                  #23
                  پاسخ : ذخیره eeeprom

                  نوشته اصلی توسط saeiddiod
                  بیشتر توضیح بده تا برنامه رو تغییرش بدم برات
                  من با این برنامه دوتا موتور استپ با درایور موجود در سایت(drv88) کنترل میکنم ک مثلا یکیش 1000پالس بگیره stop کنه باز 1000تا دیگه باز استپ بعد اون یکی شروع کنه این 3 مرحله رو انجام بده برنامه درست کار میکنه فقط نمیتونم تو eeeprom ذخیره کنم
                  من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                  دیدگاه


                    #24
                    پاسخ : ذخیره eeeprom

                    من واقعا دیگه نمیدونم چیکار کنم هرکاری میکنم جواب نمیده کلافم کرده
                    من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                    دیدگاه


                      #25
                      پاسخ : ذخیره eeeprom

                      نوشته اصلی توسط milad brave
                      مثلا یکیش 1000پالس بگیره stop کنه باز 1000تا دیگه باز استپ بعد اون یکی شروع کنه
                      مدت زمان توقف بین 1000پالس اول با 1000پالس دوم چقدره؟؟برای هر 2موتور یکیه؟؟

                      دیدگاه


                        #26
                        پاسخ : ذخیره eeeprom

                        نوشته اصلی توسط saeiddiod
                        مدت زمان توقف بین 1000پالس اول با 1000پالس دوم چقدره؟؟برای هر 2موتور یکیه؟؟
                        بله واسه هردوشون یکی هستش دقیقا 10 ثانیه
                        چرا نمیتونه دخیره کنه؟
                        من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                        دیدگاه


                          #27
                          پاسخ : ذخیره eeeprom

                          کد:
                          #include <mega32.h>
                          #include <delay.h>
                          
                          #define out1 PORTA.0
                          #define out2 PORTA.1
                          
                          eeprom unsigned int eep;
                          
                          void main(void)
                          {
                          
                          PORTA=0x00;
                          DDRA=0xFF;
                           
                          PORTB=0x00;
                          DDRB=0xFF;
                          
                          PORTC=0x00;
                          DDRC=0xFF;
                          
                          PORTD=0x00;
                          DDRD=0xFF;
                          
                          
                           while(1)
                             { 
                             while(eep<=1000)
                              {
                               out1=1;
                                delay_ms(2);
                               out1=0; 
                                eep++;  
                              }
                             while(eep<=2000)
                              { 
                                out1=0;
                                delay_ms(10);
                                eep++;  
                              }
                             while(eep<=3000)
                              {
                               out1=1;
                                delay_ms(2);
                               out1=0; 
                                eep++;  
                              }
                             out1=0; 
                             //////////////////////////// 
                             while(eep<=4000)
                              {
                               out2=1;
                                delay_ms(2);
                               out2=0; 
                                eep++;  
                              }
                             while(eep<=5000)
                              { 
                                out2=0;
                                delay_ms(10);
                                eep++;  
                              }
                             while(eep<=6000)
                              {
                               out2=1;
                                delay_ms(2);
                               out2=0; 
                                eep++;  
                              }
                            out2=0; 
                             if(eep>=6001)eep=0;   
                             }
                          }
                          این برنامه به PORTA.0 هزار پالس میفرسته بعد 10ثانیه صبر میکنه دوباره هزار پالس میفرسته.
                          بلافاصله به PORTA.1 هزار پالس میفرسته بعد 10ثانیه صبر میکنه دوباره هزار پالس میفرسته.
                          و این حالت مدام تکرار میشه.
                          اگه تغذیه مدار قطع بشه و دوباره وصل بشه از همونجایی که بوده دوباره شروع میکنه به ادامه برنامه.

                          دیدگاه


                            #28
                            پاسخ : ذخیره eeeprom

                            نوشته اصلی توسط saeiddiod
                            کد:
                            #include <mega32.h>
                            #include <delay.h>
                            
                            #define out1 PORTA.0
                            #define out2 PORTA.1
                            
                            eeprom unsigned int eep;
                            
                            void main(void)
                            {
                            
                            PORTA=0x00;
                            DDRA=0xFF;
                             
                            PORTB=0x00;
                            DDRB=0xFF;
                            
                            PORTC=0x00;
                            DDRC=0xFF;
                            
                            PORTD=0x00;
                            DDRD=0xFF;
                            
                            
                             while(1)
                               { 
                               while(eep<=1000)
                                {
                                 out1=1;
                                  delay_ms(2);
                                 out1=0; 
                                  eep++;  
                                }
                               while(eep<=2000)
                                { 
                                  out1=0;
                                  delay_ms(10);
                                  eep++;  
                                }
                               while(eep<=3000)
                                {
                                 out1=1;
                                  delay_ms(2);
                                 out1=0; 
                                  eep++;  
                                }
                               out1=0; 
                               //////////////////////////// 
                               while(eep<=4000)
                                {
                                 out2=1;
                                  delay_ms(2);
                                 out2=0; 
                                  eep++;  
                                }
                               while(eep<=5000)
                                { 
                                  out2=0;
                                  delay_ms(10);
                                  eep++;  
                                }
                               while(eep<=6000)
                                {
                                 out2=1;
                                  delay_ms(2);
                                 out2=0; 
                                  eep++;  
                                }
                              out2=0; 
                               if(eep>=6001)eep=0;   
                               }
                            }
                            این برنامه به PORTA.0 هزار پالس میفرسته بعد 10ثانیه صبر میکنه دوباره هزار پالس میفرسته.
                            بلافاصله به PORTA.1 هزار پالس میفرسته بعد 10ثانیه صبر میکنه دوباره هزار پالس میفرسته.
                            و این حالت مدام تکرار میشه.
                            اگه تغذیه مدار قطع بشه و دوباره وصل بشه از همونجایی که بوده دوباره شروع میکنه به ادامه برنامه.
                            مرسی از برنامه ات حتما امتحانش میکنم
                            پس واسه هر پورت 2بار تکرار میشه یا 3 بار این عمل؟؟
                            من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                            دیدگاه

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