Once more about atmega2560 WinAVR porting
Hello All!
I changed Timer1 interrupt routine to match it to atmega2560 register set and controlled with a scope that 1 ms interrupts really occur.
I modified the port.c file to solve the problem of 3-byte stack in following way:
usAddress = ( unsigned portSHORT ) pxCode;
*pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned portSHORT ) 0x00ff );
pxTopOfStack–;
usAddress >>= 8;
*pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned portSHORT ) 0x00ff );
pxTopOfStack–;
/* AND THE THIRD BYTE from Richard Barry for IAR*/
usAddress >>= 8;
*pxTopOfStack = ( portSTACK_TYPE ) ( usAddress & ( unsigned portSHORT ) 0x00ff );
pxTopOfStack–;
/* end of AND THE THIRD BYTE */
I wrote simple test program:
int main(void)
{
DDRL = 0xff;
vTaskStartScheduler();
}
void vApplicationIdleHook( void )
{
vTaskDelay( 500 );
PORTL = 0xff;
vTaskDelay( 500 );
PORTL = 0x00;
}
And still it resets while handling vTaskDelay(500).
Could somebody please tell what else I have missed?
Thanks
Alex.