/* * Copyright (c) 2008 Swedish Institute of Computer Science * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name of the copyright holders nor the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /** * \file * * \brief * This controls the sleep operation for the LCD. * * \author * Mike Vidales mavida404@gmail.com * */ #include #include #include #include #include #include "main.h" #include "sleep.h" #include "uart.h" #include "key.h" #include "timer.h" #include "lcd.h" //temp /** * \addtogroup lcd * \{ */ /*---------------------------------------------------------------------------*/ /** * \brief Prepares for and executes sleep. This function sets up the * processor to enter sleep mode, and to wake up when the joystick * button (PE2/PCINT2) is pressed or after the specified interval. * * \param howlong Seconds to sleep, 0=until button pushed */ void sleep_now(int howlong) { /* Disable watchdog (not currently used elsewhere) */ wdt_disable(); /* Setup sleep mode */ if (howlong==0) { set_sleep_mode(SLEEP_MODE_PWR_DOWN); MCUCR |= (1<