Sorry Andy. I joined the group yesterday and did not read your reply until
after I sent mine!.
Bennett
_____
From: lpc2000@yahoogroups.com [mailto:lpc2000@yahoogroups.com] On Behalf Of
Andrew Berney
Sent: Wednesday, May 10, 2006 9:30 AM
To: lpc2000@yahoogroups.com
Subject: RE: [lpc2000] Interrupt in LPC22XX
If you'd care to read the reply I explained exactly what we use that for...
and yes, the original description was unfortunately misleading but has
already been explained so as to avoid any misinterpretation by people such
as yourself.
Andy
-----Original Message-----
From: lpc2000@yahoogroups.com [mailto:lpc2000@yahoogroups.com]On Behalf
Of Bennett Scharf
Sent: 10 May 2006 16:20
To: lpc2000@yahoogroups.com
Subject: RE: [lpc2000] Interrupt in LPC22XX
Kicking the watchdog in an interrupt routine is as bad an idea as I have
ever heard. The only thing that has to be healthy in the microprocessor at
the time is a valid stack pointer and the interrupt routine itself..
_____
From: lpc2000@yahoogroups.com [mailto:lpc2000@yahoogroups.com] On Behalf Of
Andrew Berney
Sent: Wednesday, May 10, 2006 2:42 AM
To: lpc2000@yahoogroups.com
Subject: RE: [lpc2000] Interrupt in LPC22XX
Errrm I've not looked at the data sheets for that particular part, but it
doesn't appear that you're turning on the serial IRQ...
on the 2129 I'm currently working on it'd be something like:
VICVectCntl1 = 0x00000026; // IRQ 6 enabled - the IRQ for UART0
VICVectAddr1 = (unsigned)UART0_Irq; // Function to run as IRQ
VICIntEnable |= 0x00000040; // flick its bit on to show we want this IRQ
firing...
likewise for UART1:
VICVectCntl2 = 0x00000027; // IRQ 7 enabled
VICVectAddr2 = (unsigned)UART1_Irq;
VICIntEnable |= 0x00000080;
I imagine it's probably the same for yours...
One other thing to note is that your watchdog feed is currently not an
atomic instruction - ie if you get interrupted between the two writes you're
doing the watchdog will trip... (better to disable the IRQ's when kicking
the dog then turn them back on). Personally I simply use one of the on chip
timers to give me an interrupt every so often and then kick the watchdog
inside it's IRQ handler...
Andy
-----Original Message-----
From: lpc2000@yahoogroups.com [mailto:lpc2000@yahoogroups.com]On Behalf
Of poland459
Sent: 10 May 2006 05:59
To: lpc2000@yahoogroups.com
Subject: [lpc2000] Interrupt in LPC22XX
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 any
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
SPONSORED LINKS
Microcontrollers
<http://groups.yahoo.com/gads?t=ms
<http://groups.yahoo.com/gads?t=ms&k=Microcontrollers&w1=Microcontrollers&w2
> &k=Microcontrollers&w1=Microcontrollers&w2
=Microprocessor&w3=Intel+microprocessors&c=3&s=69&.sig=c-HXthtbZy4TZbI3ib0PM
g>
Microprocessor
<http://groups.yahoo.com/gads?t=ms
<http://groups.yahoo.com/gads?t=ms&k=Microprocessor&w1=Microcontrollers&w2=M
> &k=Microprocessor&w1=Microcontrollers&w2=M
icroprocessor&w3=Intel+microprocessors&c=3&s=69&.sig=ijt0SspWtjogcHCuFD0lUQ>
Intel
<http://groups.yahoo.com/gads?t=ms
<http://groups.yahoo.com/gads?t=ms&k=Intel+microprocessors&w1=Microcontrolle
> &k=Intel+microprocessors&w1=Microcontrolle
rs&w2=Microprocessor&w3=Intel+microprocessors&c=3&s=69&.sig=WOZdpklkgHbXR5qu
Agrl5w> microprocessors
_____
YAHOO! GROUPS LINKS
* Visit your group "lpc2000 <http://groups.yahoo.com/group/lpc2000> "
on the web.
* To unsubscribe from this group, send an email to:
lpc2000-unsubscribe@yahoogroups.com
<mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
* Your use of Yahoo! Groups is subject to the Yahoo!
<http://docs.yahoo.com/info/terms/> Terms of Service.
_____
[Non-text portions of this message have been removed]
Yahoo! Groups Links
SPONSORED LINKS
Microcontrollers
<http://groups.yahoo.com/gads?t=ms&k=Microcontrollers&w1=Microcontrollers&w2
=Microprocessor&w3=Intel+microprocessors&c=3&s=69&.sig=c-HXthtbZy4TZbI3ib0PM
g>
Microprocessor
<http://groups.yahoo.com/gads?t=ms&k=Microprocessor&w1=Microcontrollers&w2=M
icroprocessor&w3=Intel+microprocessors&c=3&s=69&.sig=ijt0SspWtjogcHCuFD0lUQ>
Intel
<http://groups.yahoo.com/gads?t=ms&k=Intel+microprocessors&w1=Microcontrolle
rs&w2=Microprocessor&w3=Intel+microprocessors&c=3&s=69&.sig=WOZdpklkgHbXR5qu
Agrl5w> microprocessors
_____
YAHOO! GROUPS LINKS
* Visit your group "lpc2000 <http://groups.yahoo.com/group/lpc2000> "
on the web.
* To unsubscribe from this group, send an email to:
lpc2000-unsubscribe@yahoogroups.com
<mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
* Your use of Yahoo! Groups is subject to the Yahoo!
<http://docs.yahoo.com/info/terms/> Terms of Service.
_____
[Non-text portions of this message have been removed]Message
RE: [lpc2000] Interrupt in LPC22XX
2006-05-10 by Bennett Scharf
Attachments
- No local attachments were found for this message.