PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ILDE Mode erwachen



toter_fisch
02.06.2012, 12:14
Hi :D

Ich versuche gerade dem Stromverbrauch von meinem Bot zu senken. Dazu habe ich mir überlegt ihn in den IDLE Mode einschlafen zu lassen.
So weit ich das verstanden habe geht das doch so in Bascom oder?:




$regfile = "m16def.dat"
$crystal = 16000000
$baud = 19200

Print "jetzt schlafen"
Idle
Print "Das wird nach dem schlafen gesendet"



Kann ich den Controller jetzt wieder über Uart aufwecken und welchen Befehl benötige ich dazu?

Gruß toter_fisch

Kampi
02.06.2012, 12:29
Hi,

laut Bascom Hilfe solltest du den Befehl "Config Powermode" verwenden (sprich Config Powermode Idle).
Im Datenblatt zum Mega16 steht folgendes zum Idle:

When the SM2..0 bits are written to 000, the SLEEP instruction makes the MCU enter Idle
mode, stopping the CPU but allowing SPI, USART, Analog Comparator, ADC, Two-wire Serial
Interface, Timer/Counters, Watchdog, and the interrupt system to continue operating. This sleep
mode basically halts clkCPU and clkFLASH, while allowing the other clocks to run.
Idle mode enables the MCU to wake up from external triggered interrupts as well as internal
ones like the Timer Overflow and USART Transmit Complete interrupts. If wake-up from the
Analog Comparator interrupt is not required, the Analog Comparator can be powered down by
setting the ACD bit in the Analog Comparator Control and Status Register – ACSR. This will
reduce power consumption in Idle mode. If the ADC is enabled, a conversion starts automatically
when this mode is entered.

Und das hier sollte deine Frage beantworten:

Idle mode enables the MCU to wake up from external triggered interrupts as well as internal
ones like the Timer Overflow and USART Transmit Complete interrupts.

Da steht soviel wie das die MCU ebenso bei einem externen Interrupt wie auch interne Interrupts aufgeweckt wird.
Wenn du also den USART Interrupt verwendest (also kein "Input", "Waitkey", usw.) kannst du damit deinen Controller aus dem Idle-Mode rausholen.

toter_fisch
02.06.2012, 12:38
Hi, danke erstmal für die Antwort ;)
Aber was ist ein MCU und wie sieht das ganze jetzt in Bascom code aus?
Gruß toter_fisch

Kampi
02.06.2012, 12:47
MCU = Micro Controller Unit sprich Mikrocontroller. In den Datenblättern werden die aber oftmals MCU genannt.
Der Befehl für den Idle-Mode ist (aus der Bascom Hilfe):

CONFIG POWERMODE = IDLE

Und USART-Interrupt kannst du hier nachsehen

http://www.rowalt.de/mc/avr/avrboard/06/avrb06.htm