Forum: Mikrocontroller und Digitale Elektronik PIC in Sleep mode


von Virus (Gast)


Lesenswert?

Weiss jemand was für eine Header-Datei ich in C includen muss um für den 
PIC die Funktion sleep() aufzurufen?

von Christian J. (elektroniker1968)


Lesenswert?

???

Verstehe ich nicht. Beim CCS Compiler ist die Funktion so schon drin. 
Ansonsten einfach mit

#asm
   sleep
#endasm

einbinden. Und dran denken, dass Sleep nur ausgeführt wird, wenn 
bestimmte Bedingungen erfüllt sind (siehe Manual), sonst wird es als NOP 
interpretiert.

von Virus (Gast)


Lesenswert?

Ich hab den HI-TECH PICC C-Compiler. Finde da nichts.

sleep(); geht nicht :-(

von Virus (Gast)


Lesenswert?

>Und dran denken, dass Sleep nur ausgeführt wird, wenn
>bestimmte Bedingungen erfüllt sind (siehe Manual), sonst wird es als NOP
>interpretiert.

If the global interrupts are disabled (GIE is
cleared), but any interrupt source has both
its interrupt enable bit and the corresponding
interrupt flag bits set, the device will
immediately wake-up from SLEEP. The
SLEEP instruction is completely executed.


Meinst du das? Sonst finde ich keine bestimmten Bedingungen. Ausser beim 
aufwachen...

von Virus (Gast)


Lesenswert?

Hmm, der zieht jetzt etwa 1mA. Ist das Sleep Mode, oder wie viel Strom 
zieht der im Sleep Mode?

von Chris N. (lamda)


Lesenswert?

Also:

#include <pic.h>

SLEEP();

von Virus (Gast)


Lesenswert?

Danke!

Aber wie bringe ich den Stromverbrauch noch weiter runter?

Habe jetzt alle nichtverwendeten Pins als Output definiert, verbraucht 
aber immer noch 0.8 mA!

von Virus (Gast)


Lesenswert?

ADC ausschalten?

ANSEL = 0x00;

geht nicht -> undefined identifier "ANSEL"

WTF???

von Christian J. (elektroniker1968)


Lesenswert?

Hallo,

sind etwas wenig Infos, zB ist der PIC typ auch interessant. 0,8ma ist 
auf jeden Fall zuviel, da fliesst noch was über die Ports ab. Schalte 
die auf Hi-Z.

von Severino R. (severino)


Lesenswert?

Christian J. wrote:

> Schalte die auf Hi-Z.

Dann braucht der PIC erst recht Strom!

von Virus (Gast)


Lesenswert?

Ist ein pic12f629.

Wie schalte ich die auf HI-Z? Einfach als Output definieren reicht 
nicht?

wieso geht ANSEL = 0x00; nicht?

von Thomas M. (thomas1123) Benutzerseite


Lesenswert?

datenblatt s.43
1
ADON = 0;
oder
1
ADCON0  = 0x00;

von Virus (Gast)


Lesenswert?

ADCON0 = 0x00;

-> undefined identifier "ADCON0"

Obwohl ich die header-datei eingebunden hab.

CMCON = 0x07;

-> Kein Problem

von Thomas M. (thomas1123) Benutzerseite


Lesenswert?

ADCON"null" = 0; das 2te is nen null und kein O
an sonsten binde doch noch die htc.h ein

von Virus (Gast)


Lesenswert?

Ja, da war noch was an den Eingängen! Jetzt bin ich bei 0.3mA!

Aber ADCON0 = 0; (ja NULL!)

Keine Ahnung wieso.
pic.h
htc.h

sind eingebunden!!

Alles andere ging auch (Timer 0, Timer1, Eingäng konfigurieren usw.)!

von Εrnst B. (ernst)


Lesenswert?

Schau nochmal in das Datenblatt für den PIC, da sollte es unter 
"Electrical Specifications" eine Liste für den Stromverbrauch im 
SLEEP-Mode geben.

Hatte grad nur das PIC12F683er Datenblatt da:
Watchdog-Timer: 8.4µA
BrownOut Detector: 109µA
Analog Comparator: 60µA
Interne Vref: 138µA
Oszillator für Timer1 (Uhrenquarz): 10µA
A/D Converter: 0.0029µA

(alle Werte bei 5V)

Jetzt raussuchen was nicht gebraucht wird, das abschalten, und in den 
Sleep-Mode gehen.

von Virus (Gast)


Lesenswert?

Ja, mein Problem ist ja nur das ich den ADC nicht ausschalten kann!

Bringts dieser Brown Out Detector??

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.