Friday, July 22, 2011

    Known issues with MPLAB C Compiler for PIC32 MCUs v2.00

    Microchip TCP/IP Stack compatibility

    Older versions of the TCP/IP stack had references to macros referencing debug freeze bits such as _SPI2CON_FRZ_MASK. The macros for these freeze bits should never have appeared in the processor header files and application code should not have been using them. The definitions were removed for the C32 v2.00 release. The July 2011 release of the Microchip Application Library with TCP/IP Stack version 5.36.2 removes references to these macros to correct compatibility with MPLAB C32 v2.00. Download the update here: http://www.microchip.com/mal

    Peripheral Library - UART2

    The UART peripheral library functions do not work correctly for the UART2 module on the PIC32MX3 and PIC32MX4 devices. The device-support include files pic32mx/include/proc/p32mx3.h and pic32mx/include/proc/p32mx4*.h contain an incorrect base address for the UART2 peripheral.

    #define _UART2_BASE_ADDRESS 0xBF806800
    should be
    #define _UART2_BASE_ADDRESS 0xBF806200
    for the PICMX3 and PIC32MX4 devices.

    This causes the peripheral library functions for the UART2 to access unimplemented SFR addresses rather than the correct UART2 SFR addresses.

    One workaround is to correct the _UART2_BASE_ADDRESS address value in your pic32mx/include/proc/pic32mx*.h header file and add a copy of the [C:\Program Files\Microchip\mplabc32\v2.00\pic32-libs\peripheral\uart\source\uart_lib.c] source file to your project.

    Uninitialized data clearing

    Uninitialized global variables should be cleared to zero on startup. There is an issue with the v2.00 startup code where variables allocated in the "common" section are not correctly zeroed on startup. One workaround is to disable support for commons by adding the compiler option "-fno-common" to the alternate settings field for your project. Another workaround is to modify the C startup code as described in this web forum post. http://www.microchip.com/forums/fb.ashx?m=588408

    Exception when using a Custom Linker Script

    The default startup code is initializing the bus matrix as if ram functions exist in a project, even when no such ram functions exist. This causes a problem whenever the end address of the kseg1_data_mem region is not 2k aligned in a custom linker script, since the bus matrix registers must be 2k aligned. To workaround the issue for now, add the following line to your custom linker script: _ramfunc_begin = 0;
    This causes the startup code to skip over the bus-matrix initialization code.

    Getting Support

    For technical support, please visit either the community web forum or http://www.microchip.com/support. To report a bug, please visit this forum post for instructions. Thanks!

    Saturday, July 16, 2011

    chipKIT Videos

    The chipKIT boards from Digilent Inc have been available for a few months now and it looks like the community is starting to show off some impressive and fun projects. Take a look at the videos.