using VIC0 and VIC1 both
Company  
ST Home | Microcontrollers

Index  »  ARM9 STR9  »  using VIC0 and VIC1 both
     
   using VIC0 and VIC1 both
 Moderated by :   »  mirou  -  eris

Author
beginning argument    ( Replies received: 8 )
sr_shinde   Posted 02-12-2008 at 06:18   



Registered on :
06-20-2009

Messages : 23

 OFF-Line

Hi all
We are using FreeRTOS.
We have configured TIM0 interrupt,TIM1 interrupt,CAN interrupt those are in VIC0.Also we have configured UART0 receive interrupt,Wake up interrupt those are in VIC1.
We are getting interrupt of VIC0.But we are not getting interrupt of VIC1.

Is there any other configuration related to VIC1
Please Guide me through

Regards
Sai



 Profile   Quote  
dhoyen   Posted 04-12-2008 at 15:56   



Registered on :
08-08-2009

Messages : 24

 OFF-Line

Hi,

I was using both of VIC0 as VIC1, with FreeRTOS, with plenty of interrupt source (7 or 8). Both was working.

Are you able to fire (more than 1 time, to be sure the return works correctly) a unique interrupt source, located with the VIC1 ?


Regards

damien HOYEN



 Profile   Quote  
SJackson   Posted 05-12-2008 at 20:28   



Registered on :
02-26-2007

From USA

Messages : 41

 OFF-Line

I'm having a similar problem. Like dhoyen, I also use FreeRTOS and try to get receive interrupts on UART1 via VIC1. They work for awhile but eventually just seem to stop working altogether for no apparent reason. Oddly enough, an external interrupt that operates through the WIU interrupt channel (also on VIC1) continues to function normally.

I know that ST just released a new Errata sheet for the STR9 with an item that mentions an issue with daisy-chained interrupts, but the workaround description given isn't very helpful; whenever I try to implement it interrupts break entirely.

Does anyone know if this issue could be related and if so, what the proper ISR assembly routine should look like? Even if it isn't a FreeRTOS version of the routine, I'd still like to take a look.


[ This message was edited by: SJackson on 05-12-2008 20:39 ]



 Profile   Quote  
lakata   Posted 07-12-2008 at 01:12   



Registered on :
12-30-2006

From USA

Messages : 97

 OFF-Line

I had trouble with interrupts and FreeRTOS. There seemed to be 2 problems. One had something to with the watchdog timer -- if you used the JTAG debugger to halt the code, all interrupts would stop working after that. The second problem had to do with not enabling IRQ and FIQ interrupts for SYS mode in the init script. I thought I could enable interrupts are any point later in the code, but that did not seem to work. I didn't investigate.



 Profile   Quote  
dhoyen   Posted 08-12-2008 at 14:46   



Registered on :
08-08-2009

Messages : 24

 OFF-Line

@lakata : Hum, you should look at the end of your development to implement the watchdog functionnality... My point of view is: before is always a lack of time, and complexify deeply the debuging...

@sr_shinde: How do you acquit your VIC controler ? Could you insert your IRQ declaration in assembler.

Regards.

Damien hoyen



 Profile   Quote  
SJackson   Posted 08-12-2008 at 19:56   



Registered on :
02-26-2007

From USA

Messages : 41

 OFF-Line

Quote:

On 08-12-2008 at 14:46, Anonymous wrote:
@lakata : Hum, you should look at the end of your development to implement the watchdog functionnality... My point of view is: before is always a lack of time, and complexify deeply the debuging...

@sr_shinde: How do you acquit your VIC controler ? Could you insert your IRQ declaration in assembler.

Regards.

Damien hoyen




FreeRTOS uses the watchdog interrupt to generate a system tick so that it can perform scheduling duties, so its likely that lakata didn't do anything to the WDG interrupt specifically and was/is probably just experiencing the effects of some other issue.

Also, I'm guessing you meant to ask sr_shinde how his VIC init sequence goes.


[ This message was edited by: SJackson on 08-12-2008 19:57 ]



 Profile   Quote  
sr_shinde   Posted 09-12-2008 at 05:17   



Registered on :
06-20-2009

Messages : 23

 OFF-Line

Hi all
Now I have configured VIC by directly configuring its SFR,previously it was configured using library.And now its working.
But UART0 receive interrupt doesn't work with UART1(No interrupt just TX).
When I Disabled(commented) UART1 configuration it works.

Regards
Sai



 Profile   Quote  
SJackson   Posted 09-12-2008 at 14:18   



Registered on :
02-26-2007

From USA

Messages : 41

 OFF-Line

Can you post the code you use to initialize the UARTs and GPIO lines associated with them?

Edit:
Nevermind. I found it here: http://www.st.com/mcu/modules.php?mop=modload&name=Splatt_Forums&file=viewtopic&topic=7693&forum=21

[ This message was edited by: SJackson on 09-12-2008 14:19 ]



 Profile   Quote  
sr_shinde   Posted 10-12-2008 at 05:19   



Registered on :
06-20-2009

Messages : 23

 OFF-Line

Hi all
UART0 configuration is as follows:
void Init_UART0(unsigned long l_ulg_BaudRate)
{
GPIO_InitTypeDef GPIO_InitStructure;
UART_InitTypeDef UART_InitStructure;

SCU_APBPeriphClockConfig(__UART0, ENABLE);
SCU_APBPeriphReset(__UART0, DISABLE);
SCU_APBPeriphClockConfig(__GPIO6 , ENABLE);
SCU_APBPeriphReset(__GPIO6, DISABLE);

//UART0 Rx pin configuration
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1;
GPIO_Init (GPIO6, &GPIO_InitStructure);

//UART0 Tx pin configuration
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt3;
GPIO_Init (GPIO6, &GPIO_InitStructure);

//UART0 Configuration
UART_InitStructure.UART_WordLength = UART_WordLength_8D;
UART_InitStructure.UART_BaudRate = l_ulg_BaudRate;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No ;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
UART_InitStructure.UART_FIFO = UART_FIFO_Disable;
UART_Init(UART0, &UART_InitStructure);

VIC1->VAiR[1] = (u32)UART0_IRQHandler;
VIC1->VCiR[1] = 0x20 | 0;

VIC1->INTSR &= ~(1);
VIC1->INTER |= (1);

UART_ITConfig(UART0,UART_IT_Receive, ENABLE); //Enable Receive Interrupt
UART_Cmd(UART0, ENABLE); //Enable UART0

}

UART2 configuration is as follows:
void Init_UART2(unsigned long l_ulg_BaudRate)
{
GPIO_InitTypeDef GPIO_InitStructure;
UART_InitTypeDef UART_InitStructure;

SCU_APBPeriphClockConfig(__UART2, ENABLE);
SCU_APBPeriphReset(__UART2, DISABLE);
SCU_APBPeriphClockConfig(__GPIO3 , ENABLE);
SCU_APBPeriphReset(__GPIO3, DISABLE);

//UART0 Rx pin configuration
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1;
GPIO_Init (GPIO3, &GPIO_InitStructure);

GPIO_StructInit(&GPIO_InitStructure); //Reset GPIO initstructure
//UART0 Tx pin configuration
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull;
GPIO_InitStructure.GPIO_IPInputConnected = GPIO_IPInputConnected_Enable;
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2;
GPIO_Init (GPIO3, &GPIO_InitStructure);

//UART0 Configuration
UART_InitStructure.UART_WordLength = UART_WordLength_8D;
UART_InitStructure.UART_BaudRate = l_ulg_BaudRate;
UART_InitStructure.UART_StopBits = UART_StopBits_1;
UART_InitStructure.UART_Parity = UART_Parity_No ;
UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_None;
UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
UART_InitStructure.UART_FIFO = UART_FIFO_Disable;
UART_Init(UART2, &UART_InitStructure);

UART_Cmd(UART2, ENABLE); //Enable UART0
}

Let me know if I have done any mistake

Regards
Sai




 Profile   Quote  
On Top

Search in the forums
 
Jump To