/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2007 by Karl Kurbjun * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "config.h" #include "cpu.h" #include "system.h" #include "timer.h" #include "logf.h" /* GPB0/TOUT0 should already have been configured as output so that pin should not be a functional pin and TIMER0 output unseen there */ void TIMER0(void) { if (pfn_timer != NULL) pfn_timer(); IO_INTC_IRQ0 |= 1< 1024; prescaler >>= 1, divider++); /* Setup the Prescalar */ IO_TIMER0_TMPRSCL = prescaler; /* Setup the Divisor */ IO_TIMER0_TMDIV = divider; set_irq_level(oldlevel); return true; } bool __timer_register(void) { bool retval = true; int oldstatus = set_interrupt_status(IRQ_FIQ_DISABLED, IRQ_FIQ_STATUS); stop_timer(); /* Turn Timer0 to Free Run mode */ IO_TIMER0_TMMD = CONFIG_TIMER0_TMMD_FREE_RUN; IO_INTC_EINT0 |= 1<