Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT




Loading

LPC21xx to ADUC7026 how to setup Interups

Posted by Nobody/Anonymous on October 19, 2005
Hello,
i started yesterday porting FreeRTOS on ADUC7026, with KEIL LPC2129 Demo as startpoint. So i did the following changes in FreeRTOS\Demo\ARM7_LPC2129_Keil:

/********in FreeRTOSConfig.h **********/

change #include <lpc21xx.h>
to #include <aduc7026.h>
change #define configTOTAL_HEAP_SIZE((size_t) 14812 )
to #define configTOTAL_HEAP_SIZE8192

#define configCPU_CLOCK_HZ( ( unsigned portLONG ) 45000000 )

/***** In startup.s *******/

setup PLL Multiplier to 1 ;(No division of the core frequency)

/******* in PartTest.c*****************************/

change IOSET0 to GP4SET and IOCLR1 to GP4CLR
( GP4CLR is connected to a LEd on the Evaluation board)

/*** ******** in MAIn in setupHardware() ********************/

setting up the ADC and the DAC.
Setting up the GPIO Port 4 as Output.

/********** in Port.c ***************/

prvSetupTimerInterrupt() in Source/portable/Keil/ARM7/port.c
configures the ADUC7026 timer 0 to generate the RTOS tick.

--Generating RTOS TICK:
// timer0 configuration
T0LD = 0xB020;
// 45088/45088000Hz = 1ms
T0CON = 0xC0;// count down
// periodic mode enable time 0

Now My problem ist that ADUC7026 Doesnot use vectored Interrupt System. Please Could you have any idea, any reference , how i can setup my Interupts registers, so that FreeRTOS work in supervisor mode. Or simply suitably work?

ADUC7026 Interrupt System is described here at page 63

http://www.keil.com/dd/docs/datashts/adi/aduc702x_ds.pdf

Here is the current source code of the funktion
static void prvSetupTimerInterrupt( void )
{
unsigned portLONG ulCompareMatch;



// timer0 configuration
T0LD = 0xB020;// 45088/45088000Hz = 1ms
T0CON = 0xC0;// count down
// periodic mode enable time 0



/* Setup the VIC for the timer. */
VICIntSelect &= ~( portTIMER_VIC_CHANNEL_BIT );
VICIntEnable |= portTIMER_VIC_CHANNEL_BIT;

/* The ISR installed depends on whether the preemptive or cooperative
scheduler is being used. */
#if configUSE_PREEMPTION == 1
{
#ifdef KEIL_THUMB_INTERWORK
extern void ( vPreemptiveTick )( void ) __arm __task;
#else
extern void ( vPreemptiveTick )( void ) __task;
#endif

VICVectAddr0 = ( unsigned portLONG ) vPreemptiveTick;
}
#else
{
extern void ( vNonPreemptiveTick )( void ) __irq;

/########## I have not changed the following code from FreeRTOS Demo #########
VICVectAddr0 = ( portLONG ) vNonPreemptiveTick;
}
#endif

VICVectCntl0 = portTIMER_VIC_CHANNEL | portTIMER_VIC_ENABLE;

/* Start the timer - interrupts are disabled when this function is called
so it is okay to do this here. */
T0TCR = portENABLE_TIMER;
}

I will be very gratiffull for any Help.
Regards
-Emeric

RE: LPC21xx to ADUC7026 how to setup Interups

Posted by Nobody/Anonymous on October 20, 2005
I have never used an ADUC7026, but from a quick glance at the rather minimal datasheet (link in previous post), it appears that there is a very simple interrupt system. When you get an IRQ interrupt you just have to look at the interrupt bit mask to see the origin of the interrupt and branch to the correct handler. There must be example on the AD WEB site of efficient ways of doing this?

As far as FreeRTOS goes there is not going to be much difference between this type of interrupt and an automatically vectored interrupt once you are in the handler itself. The only difference is how you get to the handler.

I should try getting the periodic interrupt working first in the absence of FreeRTOS (the datasheet gives info on how to do this). Then just hook up the RTOS tick routine to the interrupt once you know it is working correctly. The syntax of how to write the routine will be the same as per the LPC Keil demo. Just make sure that the method of jumping the the handler leaves the registers (link register, stack pointer) in tact and unmodified between the interrupt occurring and the ISR entry.

Can the Keil IDE simulate the ADUC devices? If so this should make it simpler and Richard is normally quite good at having a look at your code.




[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS kernel V10 is available for immediate download. Now MIT licensed.


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS