اطلاعیه

Collapse
No announcement yet.

power down mode in codevision

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

    power down mode in codevision

    سلام مهندسین،برای یک پروژه و صرفه جویی در مصرف باطری،نیاز به مد power down دارم،اصول کلیش (چجوری Wakeup بشه و ...)رو میدونم،ولی میخوام یه راه عملی و درست توی کدویژن بهم نشون بدین که جواب بگیرم
    رجیستراش و هدر فایلشو هم فعال کردم و توابعشم مینویسم اما نمیره توی power down و پین های I/O توی وضعیتشون باقی میمونن.
    ممنون میشم کمکم کنید

    #2
    پاسخ : power down mode in codevision

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

    دیدگاه


      #3
      پاسخ : power down mode in codevision

      مطمئنی مد پاور خودش outهارو صفر نمیکنه؟
      من با بسکام جواب گرفته بودم و استفاده کرده بودم،صفر میکرد
      چون توی تابع وقفم مثلا led رو set کرده بودم و توی برگشت به main اصلی فقط power down بودکه led ریست می شد.
      مهندس نمونه کد داری راهنمایی کنی؟

      دیدگاه


        #4
        پاسخ : power down mode in codevision

        نوشته اصلی توسط parvar
        مطمئنی مد پاور خودش outهارو صفر نمیکنه؟
        من با بسکام جواب گرفته بودم و استفاده کرده بودم،صفر میکرد
        چون توی تابع وقفم مثلا led رو set کرده بودم و توی برگشت به main اصلی فقط power down بودکه led ریست می شد.
        مهندس نمونه کد داری راهنمایی کنی؟
        منم با بسکام کد میزنم,در اخر خودم قبل از مد پاور پورت ها رو صفر میکردم,حتی adc میکرو تو مد پاور حدود 300میکرو امپر میکشه که با غرفعال کردنش قبل از مد عملا مصرف میکرو را به کمتراز100نانو رسوندم وبراش باطری سکه ای گذاشتم,اره کدش رو در اسرع وقت میزارم

        دیدگاه


          #5
          پاسخ : power down mode in codevision

          با عرض سلام خدمت کاربران.
          لطفا کدها رو قرار بدید.(لطفا به زبان codvision هم قرار بدید)
          ----
          یک سوال جداگانه،آیا راهی وجود داره که مد powerdown را به کمک وقفه های داخلی فعال کرد؟!
          باتشکر از هر دو شما.

          دیدگاه


            #6
            پاسخ : power down mode in codevision

            نوشته اصلی توسط SINASET
            با عرض سلام خدمت کاربران.
            لطفا کدها رو قرار بدید.(لطفا به زبان codvision هم قرار بدید)
            ----
            یک سوال جداگانه،آیا راهی وجود داره که مد powerdown را به کمک وقفه های داخلی فعال کرد؟!
            باتشکر از هر دو شما.
            سلام
            متاسفانه من فقط بیسکام کد میزنم
            در مورد مد powerdown نه فقط با خارجی،البته میتونید از مدهای دیگه استفاده کنید بهتره دیتاشیت میکرو مورد نظرتون رو مطالعه کنید

            دیدگاه


              #7
              پاسخ : power down mode in codevision

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

              دیدگاه


                #8
                پاسخ : power down mode in codevision

                تشکر از مهندس قاسمی نیا و مهندس SINASET
                بله دقیقا این موضوع power down در ظاهر قضیه خیلی راحت به نظر میرسه،ولی در عمل کم پیش اومده که جواب قطعی گرفته شده باشه و قرار داده باشه
                آقا میثم کدویژن و بسکام فرقی نداره،اگر بتونی با بسکام هم قرار بدی ممنون میشم و حل میشه

                من با این جواب گرفتم
                ولی دقیق نیست
                یعنی wake up و... دقیق انجام نمیشه

                [code=cpp]$regfile = "m8def.dat"
                $crystal = 8000000

                Config Portb.0 = Output
                Config Pind.2 = Input
                Config Int0 = Low Level
                Set Portd.2
                Reset Ddrd.2

                Dim I As Bit
                On Int0 Ii
                Enable Int0

                Enable Interrupts

                Main:

                Do

                Powerdown

                Loop


                Ii:
                Waitms 500
                Do

                Set Portb.0

                If Pind.2 = 0 Then Exit Do

                Loop
                Reset Portb.0
                Wait 1
                I = 0
                Return[/code]

                دیدگاه


                  #9
                  پاسخ : power down mode in codevision

                  ببخشید انگار یادم رفت کدها رو بزارم
                  کدها برای attiny 13a
                  کد:
                  $regfile = "attiny13a.dat"
                  $crystal = 1000000
                  $hwstack = 15
                  $swstack = 8
                  $framesize = 8
                   Dim A As Word
                   Dim P As Byte
                   Dim Over As Byte
                   Dim B As Word
                  Config Timer0 = Timer , Prescale = 1024
                  Config Adc = Single , Prescaler = Auto , Reference = Internal
                  Disable Adc
                  Stop Adc
                  Config Portb.0 = Output
                  Config Portb.2 = Output
                  Config Int0 = Low Level
                  Enable Interrupts
                  Enable Int0
                  Disable Timer0
                  Stop Timer0
                  
                   On Int0 Onmic1
                   On Timer0 Off1
                   Portb.2 = 0
                   Portb.0 = 0
                  P = 0
                  Over = 0
                  Power Powerdown
                  
                  Do
                  While P = 1
                  A = Getadc(3)
                  If A < 700 Then : P = 2 : Portb.0 = 1 : Waitms 100 : Else : Portb.2 = 0 : Portb.0 = 0 : P = 3 : End If
                  Wend
                  While P = 2
                  B = Getadc(2)
                  If B < 700 Then : Portb.2 = 1 : Waitms 2000 : Portb.0 = 0 : Portb.2 = 0 : P = 3
                  Stop Adc : Stop Timer0 : Disable Timer0 : Disable Adc : End If
                  Wend
                  While P = 3
                  Power Powerdown
                  Wend
                  Loop
                  End
                  
                  Onmic1:
                  
                    P = 1
                    Enable Adc
                    Start Adc
                    Enable Timer0
                    Start Timer0
                   Return
                  Off1:
                  Incr Over
                  If Over > 38 Then
                  Over = 0
                  Portb.2 = 0
                  Portb.0 = 0
                  P = 3
                  Stop Adc : Stop Timer0 : Disable Timer0 : Disable Adc
                  End If
                  Return

                  دیدگاه


                    #10
                    پاسخ : power down mode in codevision

                    نوشته اصلی توسط parvar
                    تشکر از مهندس قاسمی نیا و مهندس SINASET
                    بله دقیقا این موضوع power down در ظاهر قضیه خیلی راحت به نظر میرسه،ولی در عمل کم پیش اومده که جواب قطعی گرفته شده باشه و قرار داده باشه
                    آقا میثم کدویژن و بسکام فرقی نداره،اگر بتونی با بسکام هم قرار بدی ممنون میشم و حل میشه

                    من با این جواب گرفتم
                    ولی دقیق نیست
                    یعنی wake up و... دقیق انجام نمیشه

                    $regfile = "m8def.dat"
                    $crystal = 8000000

                    Config Portb.0 = Output
                    Config Pind.2 = Input
                    Config Int0 = Low Level
                    Set Portd.2
                    Reset Ddrd.2

                    Dim I As Bit
                    On Int0 Ii
                    Enable Int0

                    Enable Interrupts

                    Main:

                    Do

                    Powerdown

                    Loop


                    Ii:
                    Waitms 500
                    Do

                    Set Portb.0

                    If Pind.2 = 0 Then Exit Do

                    Loop
                    Reset Portb.0
                    Wait 1
                    I = 0
                    Return
                    سلام دوست عزیز
                    شما برنامه رو اصولی ننوشتی و به همین دلیل پاسخ قطعی ازش نمی گیرید...البته من نمی دونم میخواید چیکار کنید ولی یک تغییرات تو برنامتون می دهم،چک کنید وسپس بنا به نیازتون تغییر بدهید
                    کد:
                    $regfile = "m8def.dat"
                    $crystal = 8000000
                    
                    Config Portb.0 = Output
                    
                    Config Int0 = Low Level
                    
                    
                    On Int0 Ii
                    Enable Int0
                    
                    Enable Interrupts
                    
                    Main:
                    
                    Do
                    
                     Power Powerdown
                     Portb.0 = 1
                    Waitms 2000
                    Portb.0 = 0
                    Loop
                    End
                    
                    Ii:
                    
                    Return

                    دیدگاه


                      #11
                      پاسخ : power down mode in codevision

                      سلام ...
                      کاربر "میثم قاسمی نیا"برنامه که نوشتید رو به درون میکرو انتقال دادم..(میگا 8a) ولی باز حتا در ولتاژ 1.5 تا 2 ، حدود 1 میلی امپر جریان میکشید! با ولتاز 3 تا 4.5 هم حدود 5 میلی امپر ..
                      البته برای امتحان،فقط به پایه های vcc وgnd ولتاژ دادم و هیچ قطعه هم سر راه ولتاژ قرار ندادم(مثل رگولاتور مقاومت و...)
                      دقیقا اشکال در کجاست؟! شما واقعا 100 نانو خروجی گرفتید؟!
                      ممنون میشم کمی بیشتر توضیح بدید..

                      دیدگاه


                        #12
                        پاسخ : power down mode in codevision

                        نوشته اصلی توسط SINASET
                        سلام ...
                        کاربر "میثم قاسمی نیا"برنامه که نوشتید رو به درون میکرو انتقال دادم..(میگا 8a) ولی باز حتا در ولتاژ 1.5 تا 2 ، حدود 1 میلی امپر جریان میکشید! با ولتاز 3 تا 4.5 هم حدود 5 میلی امپر ..
                        البته برای امتحان،فقط به پایه های vcc وgnd ولتاژ دادم و هیچ قطعه هم سر راه ولتاژ قرار ندادم(مثل رگولاتور مقاومت و...)
                        دقیقا اشکال در کجاست؟! شما واقعا 100 نانو خروجی گرفتید؟!
                        ممنون میشم کمی بیشتر توضیح بدید..
                        سلام
                        من برای attiny13a و ولتاژ 3 ولت کمتراز 100 نانو جواب گرفتم
                        ولی برای مگا8 در ولتاژ 3 ولت بین 1تا 3 میکرو آمپر که با توجه به دیتاشیت این رنج استاندارد هستش
                        دوست عزیز اگر شما مقاومت پول پ پایه int0 رو نزارید میکرو سرگردون میشه واصلا تو پاور داوون نمیره...شما مطمءنید مقاومت این پایه رو گزاشتید؟



                        دیدگاه


                          #13
                          پاسخ : power down mode in codevision

                          سلام بر شما
                          ممنون از پاسختون ..
                          ---
                          مقاومت پول اپ هم گذاشتم،(10 کیلو اهم، یا حتا 33 کیلو اهمی !) بازم فرقی نمی کرد. و حدود 3.3 میلی میکشه .. فرکانس هم روی 1 مگاهرتز تنظیم کردم ...

                          ببینید من یه برنامه ساده مثل این نوشتم
                          [code=cpp]/**************************************
                          name : 'Temp lm355'
                          date : 1394/2/1
                          **************************************/
                          #include <mega8.h>
                          #include <delay.h>
                          #include <sleep.h>
                          int i;
                          interrupt [EXT_INT0] void ext_int0_isr(void)
                          {
                          i++;
                          if(i>=1)PORTB=1;
                          }
                          void main(void)
                          {
                          DDRB=0xFF;
                          // External Interrupt(s) initialization
                          // INT0: On
                          // INT0 Mode: Any change
                          // INT1: Off
                          GICR|=(0<<INT1) | (1<<INT0);
                          MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (1<<ISC00);
                          GIFR=(0<<INTF1) | (1<<INTF0);

                          #asm("sei&quot
                          sleep_enable();
                          while(1)
                          {
                          powerdown();
                          }
                          }[/code]

                          اول کتابخانه ها رو معرفی کردم ، بعد وقفه خروجی رو تعریف کردم،بعدم خروجی و ورودی ها و .. در نهایت powerdown رو انداختم تویه یک چرخه بی نهایت بی کار. با پرتئوس که تست میکنم،میزان استفاده از سی پی و رو 0 میزنه (یعنی دستور رو میفهمه ) ولی نمی دونم چرا در عمل بازم همان میزان جریان میکشه !!!؟
                          -----
                          اگر لطف کنید، یک کد بسیار کوتاه بنویسید،که فقط میکرو رو واقعا به حالت powerdown ببرید (برای تست) (وبرگشت مهم نیست)و فایل هکزش رو به من بدید ممنون خواهم شد.(میکرو mega8a)
                          باتشکر.
                          باتشکر.

                          دیدگاه


                            #14
                            پاسخ : power down mode in codevision

                            سلام
                            این کد بسکامه و الان که تست کردم برای مگا 8 تو فرکانس 1 مگا و ولتاژ 3 ،تومد power down حدودا 4 میکرو مصرفش بود
                            http://s4.picofile.com/file/8185196050/ecatest.hex.html

                            دیدگاه


                              #15
                              پاسخ : power down mode in codevision

                              سلام دوباره
                              --
                              ممنون از پاسختون ..
                              من امتحان کردم،و چیزی حدود 3.5 میلی امپر خروجی گرفتم..نمیدونم دقیقا اشکال در کجاست...
                              فکر میکنم این از اون اشکالاتی که نمیشه به این راحتی ها پیداش کرد...
                              ممنون از وقت که گذاشتید.
                              باتشکر از شما.

                              دیدگاه

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