Thanks for your time.
1&2]Am not using watchdog timer. And i didnot touched watch dog
timer.as am learning this LPC, my aim is to send bytes to
hyperterminal for every 10ms with a 9600 baud rate.
3]I forgot to reset the counter value.Its noted but its not help ful
in my problem. Thank you
4]I have checked the UART condtions, everything looks fine. Am able
to receive bytes before the timer is being initialised.
Thanks again.
--- In lpc2000@yahoogroups.com, "Andrew Berney" <amb@...> wrote:
>
> Ok... I spent a little more time and actually read through your code
> properly. I'm not actualy quite sure what you're trying to achieve
however
> there's a few obvious things.
>
> 1) are you trying to actually use the watchdog? I can't see any
reference to
> setting up WDTC or WDMOD so are you sure it's actually switched on?
> 2) if you are actively using it you don't have any form of kick for
it
> inside your main while loop (one of the reasons I decouple it to a
timer IRQ
> that acts as an internal system check to look at running statuses).
> 3) Can't remember off the top of my head, but don't you also have
to reset
> the count for the timer when you initialise it?
> ie:
> T0PR = 0x1; // set the prescaler to the pclk frequency
60MHz
> T0TCR = 0x2; // reset the counter to 0
> T0MCR = 0x3; // on match generate an IRQ
> T0MR0 = 0x600000; // count 0x600000 hex cycles per IRQ
> T0TCR = 0x1; // enable timer
>
> VICVectCntl0 = 0x24; // IRQ 4 + Enabled bit
> VICVectAddr0 = (unsigned)T0ISR; // address of IRQ handler
> VICIntEnable |= 0x10; // Turn on IRQ 4
>
> 4) Have you checked the UART parameters to ensure your clock and
divisors
> etc are giving you the correct baud rate?
>
> Andy
>
>
> -----Original Message-----
> From: lpc2000@yahoogroups.com [mailto:lpc2000@yahoogroups.com]On
Behalf
> Of poland459
> Sent: 10 May 2006 11:40
> To: lpc2000@yahoogroups.com
> Subject: [lpc2000] Re: Interrupt in LPC22XX
>
>
> Thanks for your reply..I have added the asm code and called
enableIRQ
> after the timer is enabled.. But the program is not jumping to
ISR...
>
> I forgot to mention in my first post that, iam using UART0 in
polling
> mode and TIMER0 in ISR..(ISR is not triggered even if I use only
> TIMER0 in ISR).
>
> here is the asm code..
>
> static __inline unsigned long asm_get_cpsr(void) __arm
> {
> unsigned long retval;
> __asm { mrs retval, CPSR };
> return retval;
> }
>
> static __inline void asm_set_cpsr(unsigned long value) __arm{
> value = value; // avoid warning: unused parameter
> __asm { msr CPSR_c, R0 }; // value passed in R0
> }
>
> unsigned long enableIRQ(void)
> {
> unsigned long _cpsr;
>
> _cpsr = asm_get_cpsr();
> asm_set_cpsr(_cpsr & ~IRQ_MASK);
> return _cpsr;
> }
>
> Thank you.
>
> --- In lpc2000@yahoogroups.com, "fordp2002" <SimonEllwood@> wrote:
>
> > I got it from the WinARM site a good place for examples.
> >
> > You may have other problems too, I did not read your code in
detail.
> >
> > Let us know how you get on ;)
> >
> > FordP
> >
> >
> > Good
> > --- In lpc2000@yahoogroups.com, "poland459" <poland459@> wrote:
> > >
> > > Hi am new to this forum.I am using "free" KEIL evalution
software
> as
> > > my IDE to work on LPCE2214 OLIMEX board. Am able to work on
TIMER
> and
> > > serial port in "polling" mode. But when I enable ISR functions
> using
> > > VIC,my program in not jumping to ISR.but in debug mode i could
> see
> > > the jump to ISR. also I have DefaultISR in my code.here am
> attaching
> > > my code with this mail.
> > > // This program is created for LPC-E2214 board
> > > #include "lpc22xx.h"
> > >
> > > #define OSCILLATOR_CLOCK_FREQUENCY 14745600 //in MHz
> > > #define PLOCK 0x400 //in MHz
> > >
> > >
> > > void Initialize(void);
> > > void feed(void);
> > > void UART0Initialize(unsigned int baud);
> > > void UART0WriteChar(unsigned char ch0);
> > > unsigned char UART0ReadChar(void);
> > > unsigned char UART0ReadChar_nostop(void);
> > > unsigned int processorClockFrequency(void);
> > > unsigned int peripheralClockFrequency(void);
> > >
> > > void tc0(void)__irq;
> > > static void DefDummyInterrupt(void)__irq;
> > >
> > > void init_timer(void);
> > > void InitVIC(void);
> > >
> > > long volatile timeval;
> > >
> > > void wait (void) /* wait function */
> > > {
> > > unsigned long i;
> > > i = timeval;
> > > while ((i + 10) != timeval); /* wait 100ms */
> > > }
> > >
> > >
> > >
> > > int main()
> > > {
> > > /**** VARIABLES ****/
> > > unsigned char ch0 = 0x0;
> > > unsigned char ch1 = 0x0;
> > > long i=0;
> > >
> > > /**** INITIALIZATION ****/
> > > // Frequency initialization
> > > Initialize();
> > > // UART initialization
> > > UART0Initialize(9600);
> > >
> > > init_timer();
> > > InitVIC();
> > >
> > >
> > > while(1)
> > > {
> > >
> > > UART0WriteChar('3');
> > > wait();
> > >
> > > UART0WriteChar('2');
> > > wait();
> > > }
> > >
> > > }
> > >
> > >
> > > void Initialize(void)
> > > {
> > >
> > > // Setting Multiplier and Divider values
> > > PLLCFG=0x23;
> > > feed();
> > >
> > > // Enabling the PLL */
> > > PLLCON=0x1;
> > > feed();
> > >
> > > // Wait for the PLL to lock to set frequency
> > > while(!(PLLSTAT & PLOCK)) ;
> > >
> > > // Connect the PLL as the clock source
> > > PLLCON=0x3;
> > > feed();
> > >
> > > // Enabling MAM and setting number of clocks used for Flash
> memory
> > > fetch (4 cclks in this case)
> > > MAMCR=0x2;
> > > MAMTIM=0x4;
> > >
> > > // Setting peripheral Clock (pclk) to System Clock (cclk)
> > > VPBDIV=0x1;
> > >
> > > }
> > >
> > >
> > > void feed(void)
> > > {
> > > PLLFEED=0xAA;
> > > PLLFEED=0x55;
> > > }
> > >
> > > /* Setup the Timer Counter 0 Interrupt */
> > > void init_timer (void) {
> > > T0MR0 = 149999; // 10mSec = 150000-1 counts
> > > T0MCR = 3; // Interrupt and Reset on MR0
> > > T0TCR = 1; // Timer0 Enable
> > > VICVectAddr0 = (unsigned long)tc0; // set interrupt vector in 0
> > > VICVectCntl0 = 0x20 | 4; // use it for Timer 0 Interrupt
> > > VICIntEnable = 0x00000010; // Enable Timer0 Interrupt // Timer0
> Enable
> > > }
> > >
> > > /* Timer0 Compare-Match Interrupt Handler (ISR) */
> > > /* Timer Counter 0 Interrupt executes each 10ms @ 60 MHz CPU
> Clock */
> > > /* Timer Counter 0 Interrupt executes each 10ms @ 60 MHz CPU
> Clock */
> > > void tc0 (void) __irq
> > > {
> > > ++timeval;
> > > T0IR = 1; // Clear interrupt flag
> > > VICVectAddr = 0; // Acknowledge Interrupt
> > > }
> > > void DefDummyInterrupt(void)__irq
> > > {
> > > ;
> > > }
> > > void InitVIC()
> > > {
> > > VICDefVectAddr = (unsigned long)DefDummyInterrupt;
> > > }
> > >
> > >
> > > /**** UART0 ****/
> > > void UART0Initialize(unsigned int baud)
> > > {
> > > unsigned int divisor = peripheralClockFrequency() / (16 * baud);
> > >
> > > U0LCR = 0x83;
> > >
> > >
> > > //devisor
> > > U0DLL = divisor & 0xFF;
> > > U0DLM = (divisor >> 8) & 0xFF;
> > > U0LCR &= ~0x80;
> > >
> > > //set functionalite to pins: port0.0 -> TX0, port0.1 -> RXD0
> > > PINSEL0 = PINSEL0 & ~0xF | 0x5;
> > > }
> > >
> > > void UART0WriteChar(unsigned char ch0)
> > > {
> > > //when U0LSR_bit.THRE is 0 - U0THR contains valid data.
> > > while ((U0LSR && 0x20) == 0);
> > > U0THR = ch0;
> > > }
> > >
> > > unsigned char UART0ReadChar(void)
> > > {
> > > //when U0LSR_bit.DR is 1 - U0RBR contains valid data
> > > while ((U0LSR && 0x01) == 0);
> > > return U0RBR;
> > > }
> > > unsigned int processorClockFrequency(void)
> > > {
> > > //return real processor clock speed
> > > return OSCILLATOR_CLOCK_FREQUENCY * (PLLCON & 1 ? (PLLCFG & 0xF)
> +
> > > 1 : 1);
> > > }
> > >
> > > unsigned int peripheralClockFrequency(void)
> > > {
> > > //VPBDIV - determines the relationship between the processor
> clock
> > > (cclk)
> > > //and the clock used by peripheral devices (pclk).
> > > unsigned int divider;
> > > switch (VPBDIV & 3)
> > > {
> > > case 0: divider = 4; break;
> > > case 1: divider = 1; break;
> > > case 2: divider = 2; break;
> > > }
> > > return processorClockFrequency() / divider;
> > > }
> > >
> > > Please look into this and It would be a great help for me as i
> have
> > > been trying for it from past 2 weeks.
> > > I think, abviously iam missing some things. I did not changed
anyShow quoted textHide quoted text
> > > things in startup.s file.I will post the start up code if any
> body
> > > wanted to look in
> > > please guide me.appreciate your help.
> > >
> > > Thanks
> > >
> >
>
>
>
>
>
>
>
>
> Yahoo! Groups Links
>