/*
 * Copyright(C) Paul und Scherer (mct.de/mct.net)
 *
 * This example demonstrates how to...
 *
 *  ... enter powerdown mode.
 *
 *  ... use an external signal for wakeup.
 */

#include <stdio.h>
#include <target.h>

/*
 * When 'p' is read from stdin the device powers down.
 * To resume normal operation pull EINT0 (=P0.16) low.
 */
int
main(void)
{
	Intern_pinsel1 |= 1;			// enable EINT0
	Intern_extwake  = 1;			//  wakeup

	while (1) {
		puts("\nHit 'p' for power down mode... (EINT0 to wakeup)");
		if (getchar() == 'p') {
			puts("\nPower down...");
			while (!(Intern_u0lsr&0x40)) ;	// transmit last char
			Intern_extint = 1;		// clear pending int
			Intern_pcon   = 2;		// enter power down mode
			_pll_on();			// restart PLL on wakeup
		}
	}
}
