Hallo,
ich verwende einen PIC 18F1320, der an einer 4V Quelle hängt. Bevor ich
den PIC in den Sleep-Modus schicke, setzte ich alle PIN als Ausgang und
ziehe diese auf Masse. Dennoch verbraucht der PIC ca 130µA im FULL SLEEP
Modus. Um ganz sicher zu gehen, dass es nicht an anderen Komponenten,
die am Port hängen liegt, habe ich diese von den Ports abgezogen. Nur
noch der MCLR hängt auf high. Dennoch bleibt der Stromverbrauch gleich
hoch nach einem sleep(SLEEP_FULL);.
ADC habe ich mit:
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
auch ausgeschaltet.
Jemand eine Ahnung woran es noch liegen könnte? Gibt es noch irgendwas
was ich ausschalten muss? Laut Datenblatt soll der Stromverbrauch nur
bei 0,1µA liegen.
hmm - ich hab auch schon an ein paar PICs rumkonfiguriert um den
Ruhestromverbrauch zu optimieren.
Die Ports hast Du ja schon richtig gesetzt und den ADC deaktiviert...
Ich glaube ohne BOR kann man auch noch ein paar uA einsparen, schau mal
ob der power-up timer was bringt.
Das stellst Du mit dem Config-word ein.
Ist mit dem Sleep_Full der watchdog deaktiviert?
OK...
hast Du schonmal das Datenblatt durchgeackert - da gibts oft so
Aufschlüsselungen des Stromverbrauchs der "internen Peripherie".
Vielleicht gibts da ja noch was das Du nicht deaktiviert hast.
...sehe gerade im Datenblatt, daß im Sleep Mode alle Peripherie
abgeschaltet wird.
Ich hab mal mit dem '1220 gearbeitet, allerdings nicht
verbrauchsorientiert...
130uA hört sich nicht wirklich nach Sleep Mode an, bist Du sicher, daß
der Befehl so funktioniert?
Du kannst Dir ja mal eine PWM erzeugen oder den Timer so konfigurieren,
daß ein periodisches Signal ausgegeben wird - dann siehst Du ja ob er
schlafen geht.
Der Strom kann auch wirklich nicht von der Außenbeschaltung verursacht
werden?
Mehr fällt mir jetzt auch nicht ein - da ist wohl intensives
Datenblattstudium oder Experimente fällig...
Viel Erfolg!
hcalex schrieb:> Dennoch verbraucht der PIC ca 130µA im FULL SLEEP> Modus.
Hmm, klingt nach pull-up Widerständen vom externen LCD-Modul. (4*33uA).
Gruß Anja
Anja schrieb:> hcalex schrieb:>> Dennoch verbraucht der PIC ca 130µA im FULL SLEEP>> Modus.>> Hmm, klingt nach pull-up Widerständen vom externen LCD-Modul. (4*33uA).>> Gruß Anja
...aber eigentlich hatte er vom Stromverbrauch des PICs geschrieben,
nicht der ganzen Schaltung...wir werden's (hoffentlich) sehen...
inse schrieb:> ...aber eigentlich hatte er vom Stromverbrauch des PICs geschrieben,> nicht der ganzen Schaltung...wir werden's (hoffentlich) sehen...
Der PIC kanns wohl nicht sein. Bei mir braucht ein PIC18F2520 im Mittel
ca 10uA und wird dabei alle 16 ms aufgeweckt um den LCD-Multiplex für
eine passive Anzeige durchzuführen. Alle Sekunde wird dabei auch noch
der ADC für 2 Meßwerte aktiviert.
Er hat ja auch nur geschrieben daß er die Daten-Leitungen zur Peripherie
unterbrochen hat...
Gruß Anja
Meine Schaltung sieht so aus, dass GND an Vss hängt und +4V and VDD.
Alle anderen Pins sind nicht verbunden. Auch sonst gibt es keine
weiteren Geräte mehr, die sonst noch dran hängen und Ströme verursachen
würden. Habe das ganz auf Lochraster gelötet.
Mein momentan minimierter Code sieht so aus:
1
voidsetupPIC()
2
{
3
setup_adc_ports(NO_ANALOGS);
4
setup_adc(ADC_OFF);
5
setup_wdt(WDT_OFF);
6
setup_timer_0(T0_INTERNAL|T0_DIV_64|T0_8_BIT);
7
setup_timer_1(T1_DISABLED);
8
setup_timer_2(T2_DISABLED,0,1);
9
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
10
setup_ccp1(CCP_OFF);
11
ext_int_edge(0,H_TO_L);
12
clear_interrupt(INT_EXT);
13
enable_interrupts(INT_EXT);
14
}
15
16
voidgoSleep()
17
{
18
//prepare for shutdown
19
disable_interrupts(GLOBAL);
20
SET_TRIS_B(0b00000000);
21
SET_TRIS_A(0b00000000);
22
23
output_a(0);
24
output_b(0);
25
sleep(SLEEP_FULL);
26
}
27
28
29
voidmain()
30
{
31
32
setupPIC();
33
goSleep();
34
while(TRUE);
35
}
Doch trotz der minimalen Schaltung und des minimalen Codes zeigt mein
Multimeter exakt 135µA an :(
>Doch trotz der minimalen Schaltung und des minimalen Codes zeigt mein>Multimeter exakt 135µA an :(
Dann nimmst du jetzt deinen Code und entfernst eine Zeile
nach der anderen. Irgendwann wird der Stromverbrauch sinken
oder dein Multimeter spinnt.
Der 18F1320 braucht laut Datenblatt (Page 240) eine Mindestspannung von
4.2 Volt, bei 4.1 Volt geht der teilweise schon in den brown-out.
Ich habe das mal mit einem 18F1220 nachgebaut, der zieht im SLEEP bei
Vdd von 4.9 Volt 114 bis 118 nA (gemessen mit
http://www.alternatezone.com/electronics/ucurrent/). Da stimmt was mit
Deinem Equipment nicht.
Also auf der ersten Seite im Datenblatt steht Wide Operating range: 2.0V
to 5.5V. Mag ja sein, dass er unter 4.1V schon in brown out geht, aber
das ist ja in der config ausgeschaltet.
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.