PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Sleep-Instruction C-Code für ICCtiny 6.11A Compiler



Lalupa
01.06.2004, 08:46
Hallo Leute,

ich möchte einen ATtiny15l in den "Power-down"-Sleep-mode schalten. Nur klappt das irgendwie nicht? Im datasheet steht, dass der Sleep-Befehl ausgeführt werden muß. Nur wie geht das im C-Compiler ICCtiny 6.11A von imagecraft???? Wie sieht der sleep-Befehl aus im C-Code? Bitte helft mir.....

Danke Euch.

Gruß
Lalupa

trickTronic
02.06.2004, 12:29
Hei,

Ich kenn zwar den ICCtiny-Compiler nicht, aber lt. Datenblatt habe ich im MCUCR-Register folgendes gefunden:

Bit SM1 und SM0 : Hier kann man den Sleep-Mode einstellen.
Lt. Tabelle kann man zwischen folgenden wählen: Idle Mode (warten aber abarbeiten verschiedener Interrupts wie Timer...), ADC noise Reduction Mode (für Analogeingänge: Rauschfrei halten), Power-Down-Mode (abschalten bis zu einem ext. Interrupt).
Für den Power-Down-Mode muss man SM0 auf 0 und SM1 auf 1 setzen: Du musst also in diesem Register Bit 4 setzen und Bit 3 löschen.
Setzt man jetzt Bit 5 (Sleep Enable), so wird der Controller in den eingestellten sleep-Mode gehen.

char mcuReg = MCUCR;
mcuReg |= 0x10; //Bit 4 setzen
mcuReg &= ~0x08; // Bit 3 löschen
//einschalten des Sleep-Mode:
mcuReg |= 0x20; // Bit 5 setzen
MCUCR = mcureg; // ins Register eintragen

Schöne Grüße,
Alex

Lalupa
02.06.2004, 17:26
Hallo,

nach nervigen Probieren hab ich es dann so hingekriegt:

MCUCR = 0x30; // Enable Sleep-Mode (Power-down-Mode)
asm("sleep"); // Schalte in Power-down-Mode

Das Setzen der Bits im MCUCR-Register kann den Sleep-Mode nur "Enablen" aber nicht starten. Das macht dann der assembler-Befehl "sleep".
Am Ende dann doch ganz simpel, wenn man mal drauf gekommen ist ;-))

Trotzdem Danke für Deine Hilfe!!!!!!