Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Намаляване на консумацията на контролер
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=12675
Страница 1 от 1

Автор:  amdatlon [ Съб Фев 08, 2014 10:06 pm ]
Заглавие:  Намаляване на консумацията на контролер

Привет,
От доста време се каня да чопля по една платка която правя, но днес от скоро ми остана време,
та проблема е:

не мога да сведа консумацията на PIC 18F6722 до приемливи за мен стойностти когато е в sleep режим.
Доста мъчих но, не съм много в час с тази посока и може да бъркам тотално нещата :(
Минимума който успях е 24 mA в приспано състояние.
Мислех че имам утечка някъде по платката, но сега разкачих процесора и има свързан само захранване и кварц. Но няма промяна.

Предната платка беше с PIC18F458 - там нямах проблем, в sleep си държеше 1-2 mA , ама тук нещо ме озадачава.

Ето кода който е за проба, ако може да дадете съвети как да действам че запецнах. :?
CCS compilator

Пробвах и двата варианта да задавам на изходящите портове и високо и ниско ниво, и съвсем малка е разликата в консумацията. Иначе си влиза в sleep режим, и си излиза ако е разрешено прекъсване.

Не гоня постижения , 2-3 mA ми е супер.

Код:
#include <18F6722.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOPUT
#FUSES hs
#FUSES NOXINST                  //Extended set extension and Indexed
#use delay(clock=10M )
//**************************************************
#byte pA   =0xF80   //port a   //
#byte pB   =0xF81   //b         //
#byte pC   =0xF82   //c         //
#byte pD   =0xF83   //d         // 
#byte pE   =0xF84   //port e   //
#byte pF   =0xF85   //port e   //
#byte pG   =0xF86   //port e   //
// *********************************
//*********  ************
#Define  SetConfigPortA     192
#Define  SetConfigPortB    0
#Define  SetConfigPortC   0
#Define  SetConfigPortD     0
#Define  SetConfigPortE     0
#Define  SetConfigPortF     0
#Define  SetConfigPortG     0

/*/*********   ************
#Define  SetConfigPortA     255
#Define  SetConfigPortB    255
#Define  SetConfigPortC    255
#Define  SetConfigPortD     255
#Define  SetConfigPortE     255
#Define  SetConfigPortF     255
#Define  SetConfigPortG     23
//**************************************************/

Void MAIN (){
     
     set_tris_b(SetConfigPortB);
     set_tris_a(SetConfigPortA)
     set_tris_c(SetConfigPortC);
     set_tris_d(SetConfigPortD);
     set_tris_e(SetConfigPortE);
     set_tris_f(SetConfigPortF);
     set_tris_g(SetConfigPortG);

      disable_interrupts(INT_RB);// turn on interrupts
      disable_interrupts(INT_RDA);// turn on interrupts 

      ext_int_edge(H_TO_L);
      disable_interrupts(INT_CCP1);
      disable_interrupts(INT_CCP2);
      disable_interrupts( INT_TIMER0);
      disable_interrupts( INT_TIMER1);
      disable_interrupts( INT_TIMER2);
      disable_interrupts( INT_TIMER3);
      disable_interrupts(GLOBAL);
            /********ADC SETUP*******************/       
     setup_adc(ADC_OFF); // Internal 2-6us
     setup_timer_0(RTCC_OFF );
     setup_ccp1(CCP_OFF);
     setup_timer_1( T1_DISABLED );
     setup_timer_2( T2_DISABLED, 0xc0, 2 );
     setup_timer_3( T3_DISABLED );
       
delay_ms(1000);

While(true)
   {
   sleep();
    }
}

   

Автор:  valioman [ Нед Фев 09, 2014 12:31 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Сигурен ли си че си откачил всички пинове . При тази ти конфигурация на трисовете почти всичко ти е изход и подозирам че има товар някъде .... Пробвай да сетнеш всичко като вход както ти е втората поредица #Define SetConfigPortХ 255.
Този пикльо е нановат така че и 1ма му е много в просъница.
Тествай и с вътрешния осцилатор дали ще има промяна ....
Но ми мирише на натоварен пин-изход.

Автор:  amdatlon [ Нед Фев 09, 2014 12:48 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Да всичко е откачено, от пиновете, сигурен съм защото, пик-а е на преходна платка и от нея със 'жици' към другата част от схемата. Та тия жици сега висят свободно. кварца съм го запоил директно на преходната платка, Напрежение (+5V ) подавам направо на една от 'жиците', и друго .... ми няма друго.
Точно за това ми е чудно и на мен, защо така става?!

Да и това което спомена съм го пробвал
#Define SetConfigPortХ 255. ( споменах го във поста си горе ) и промяната е минимална : 1-2 mA.
Почвам да се съмнявам вече: възможно ли е ПИК-а да е сдал багажа и нещо вътрешно късо да дърпа ток. Ама пък всичко по него си работи перфектно ?!
Преди да 'заспи' дърпа 40-50 mA и после пада на 24.
Ампермера е сравнително добър за любителски така че отпада като причина за грешка в меренето:
http://www.google.bg/url?q=http://www.l ... 1IUEIBz6NQ

Автор:  Cekins [ Нед Фев 09, 2014 10:21 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Значи 25ma му дават на 40MHz работещ. Това че ти пада с толкова горе долу, значи че ядрото явно си заспива обаче остават други неща дето да работят. Сега не ми се гледа дали тая серия имаха възможност за тотално изключване на периферии. Обаче не знам коя периферия може да дърпа толкова много ток... Напълно е възможно да имаш някаква неразбория с входове/изходи - обърни внимание на аналогови/цифрови периферии - по принцип по даташитовете пишат да се внимава аналоговите пинове как точно се ползват и че може при определени условия да се получи увеличена консумация.

Автор:  amdatlon [ Нед Фев 09, 2014 2:18 pm ]
Заглавие:  Re: Намаляване на консумацията на контролер

В реалната програма наистина работи на 40 МХз = PLL + 10 Mhz кварц.
Но сега за теста съм го сетнал на 10 Мхз.
Продължавам с опитите за сега, пробвам различни конфигурации за пиновете , но все още резултата е отрицателен от към намаляне на тока :)

Автор:  CarBeta [ Нед Фев 09, 2014 3:38 pm ]
Заглавие:  Re: Намаляване на консумацията на контролер

Тоя пик е много далече от нановат. За ниска консумация ти трябва ниско захранващо напрежение и ниска честота. С тия 10 мХз въобще не си в ниските граници. Свободните пинове ги направи входове и ги дай на маса!

Автор:  Cekins [ Нед Фев 09, 2014 5:20 pm ]
Заглавие:  Re: Намаляване на консумацията на контролер

То не е въпроса в нановата - въпроса е, че 50ма на 10MHz са му множко сякаш. Или нещо чипа е оакан или нещо тотално е омазано с конфигурацията на пиновете.

Автор:  amdatlon [ Съб Фев 15, 2014 9:32 pm ]
Заглавие:  Re: Намаляване на консумацията на контролер

Все още няма напредък, пробвах различни варианти: с вътрешен осцилатор, с външен, изходите на 0 , на '1' - ца.... ама пак дърпа ток.
Накрая викам да премеря съпротивлението м/у Захранващите пинове и ... опаа дава ми твърдо 220 Ома.
И като смятам
I=5V/220 = 22-23 mA.

Това м/у всички VDD и VSS пинове ,
На АVdd и AVss дава 7-8 kOм.
Честно казано не знам дали е нормално 220 ома, на мен ми се струва че НЕ, ?
Мерих на 'диод' с мултицета и дава 0.15V м/ у VDD и VSS, също и м/у VSS и VDD .
Не знам каква е вътрешната схема, но нормално ли е това?

Автор:  Cekins [ Съб Фев 15, 2014 11:57 pm ]
Заглавие:  Re: Намаляване на консумацията на контролер

Ми не е нормално - какво е преживяло пикчето?

Автор:  amdatlon [ Нед Фев 16, 2014 12:31 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Там е работата, че нищо не му се е случвало, поне не съм забелязал.
Пък си работи нормално: CCP, UART, Timer, ADC, управляава си дисплей 128х64, бутони - всичко на 40 mhz.
Май ще се търси нов :( , ако не открия някое странно късо, м/у пътечките на преходната платка ( самоделка е )

Автор:  rikotech [ Чет Мар 06, 2014 10:41 pm ]
Заглавие:  Re: Намаляване на консумацията на контролер

Ако държиш консумацията на пика да е ниска трябва да се съобразиш с няколко неща.

1. Вътрешен осцилатор 31kHz.
2. Sleep mode когато е възможно
3. Използвай ниско активно ниво на пиновете. Т.е. Ако захранваш светодиод, анода на +5V резистор и катода на изход на контролера. По този начин тока не към диода не преминава през Vdd на контролера.
4. Дефинирай всички пинове които не използваш на изходи с ниско ниво, а не входове. Човече висящите входове са си "антени" за смущения за контролера.

Успех!

Автор:  amdatlon [ Пон Мар 10, 2014 12:43 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Благодаря за съветите :)
Взех си нов процесор, и като го лепна за платката ще продължа с тестовете.

Автор:  bobihot [ Пон Мар 10, 2014 10:52 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Имам същият проблем с Атмелски процесор. И това ни е 2-ра платка. Първата я здадохме и нямаше проблеми, втората я налепих на бързо, понеже уж всичко трябваше да си тръгне- върви но консумацията не пада под 40мА. Сменихме процесора, откачихме ацп-то, не помогна. При резетиран процесор и с тристейтови входове качва над 50мА. Направо съм в ужас ;)

Автор:  amdatlon [ Пон Май 05, 2014 9:59 am ]
Заглавие:  Re: Намаляване на консумацията на контролер

Да завърша темета.

След като ми остана време и за тая платка, най после лепнах нов процесор за нова подложка и чудото стана, всичко си дойде на място.
Даже без някакво старание да изключвам периферии и неизползвани пинове ПИК-а си дърпа 60-70 uA , цялата схема заедно с стабилизатора 1.3 mA.
Явно предния ПИК беше заминал от към захранване.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/