Quantcast
Channel: MSP low-power microcontroller forum - Recent Threads
Viewing all 21928 articles
Browse latest View live

MSP430FR5962: ADC Characteristics when using AVCC as ADC reference source

$
0
0

Part Number: MSP430FR5962

Dear All,

Is there any detailed information (characteristics) available when using AVCC as ADC reference source (ADC12VRSEL=0000b)?

Of interest are:

  • Integral linearity error (INL) for single-ended inputs
  • Offset error
  • Gain error
  • Total unadjusted error

AVCC test condition / Minimal AVCC for full ADC operation?

Thanks for your help,

Patrick


CCS/MSP430G2553: CCS/MSP430G2553

$
0
0

Part Number: MSP430G2553

Tool/software: Code Composer Studio

Hi, I have a macbookpro 2015 and am unable to debug or flash the code into the launchpad. It repeatedly gives the same error . USB FET not initiallized

MSP432E401Y: QSSI missing frame sync timing information and compatibility with McBSP

$
0
0

Part Number: MSP432E401Y

We are considering using the MSP432E401Y as a common controller for providing ethernet connectivity for several PCBAs  in a complex machine design.  It is critical in this role that the MSP432 be compatible with existing HW.   On several PCB's we use the Delfino (TMS320F28379D) for sampling and processing sensor inputs.  Specifically the Delfino'ss McBSP is used to communicate processed ADC sample information downstream for further processing.   If we select the MSP432, we will need the delfino to communicate with the MSP432E401Y microcontroller.

The current application has the Delfino using its McBSP as a transmit only port configured to drive its transmit clock, frame sync and data running at 50Mbps.   Is the MSP432's QSSI peripheral's receiver compatible with a McBsp transmitter and one running at 50Mhz?   Looking at the MSP432 data sheet, I see no timing information on the frame sync (its shown in diagrams but does not seem to specify any timing info in the tables).  Further both the data sheet and technical reference manual speak of "Legacy" modes where the max serial clock rate looks to be only 10MHz and appears to behave more like an async transfer with requirements that the SysClk must be 12X the SSI clock.

Can you speak to the McBSP compatibility as a slave receiver to a McBSP transmitter at preferably 50Mbps rates (minimum continuous speed of 24Mbps)?   If it is compatible, can you recommend mode of operation and configuration settings?

BTW:   We are aware of the new Delfino (F28388) with ethernet connectivity.  It is very possible that it could serve the role of a common ethernet interface and we will be posting some questions we have on it soon.   It NOT being production released  is a real concern for us and we are investing other avenues like the MSP432.   I did not want to confuse this particular post by encapsulating it inside a larger conversation (at least to start) but I wanted you to be aware and am glad to discuss the F28388 if it makes sense to you as well.

Thank you in advance for your support.

Mike

Compiler/MSP430F67641A: msp430f67641a

$
0
0

Part Number: MSP430F67641A

Tool/software: TI C/C++ Compiler

Dear sir,

when i read data form eeprom through i2c 4320 times having 24 bytes in each my some data going to be corrupted it shows FFFF if my data type is int

RTOS: MSP432E401Y | Get Task instance name in runtime

$
0
0

Tool/software: TI-RTOS

Hello,

I have a following code to get task name durning runtime:

///--------------------------------------------------------------------------
///
static char * getContext()
{

    BIOS_ThreadType type = BIOS_getThreadType();

    if(type == BIOS_ThreadType_Hwi){
        sprintf(context, " >> %-20s: ", "HWI" );

    } else if (type == BIOS_ThreadType_Swi){
        sprintf(context, " >> %-20s: ", "SWI" );

    } else if (type == BIOS_ThreadType_Task){
        sprintf(context, " >> [%d]%-17s: ", Task_getPri(Task_self()), Task_Handle_name(Task_self()));

    } else if (type == BIOS_ThreadType_Main){
        sprintf(context, " >> %-20s: ", "Main" );

    } else{
        sprintf(context, "UNDEFINED");
    }

    return context;
}

Unfortunately it is not working on MSP432 platfrom only with TM4C. I set the following code in cfg file without any success:

Task.common$.namedInstance = true;

Any idea?

CCS/MSP430FR5994: IDE and compiler for batteryless energy harvesting applications

$
0
0

Part Number: MSP430FR5994

Tool/software: Code Composer Studio

Hello,

I am the founder of the company, Integra ICT in Turkey. We have built an Integrated Development Environment on Eclipse platform for batteryless IoT devices. It has a domain specific language, a compiler, and a run time environment. We believe our product is a very unique and efficient solution. We would like to get your recommendations for the features of our product. May you give a contact name to talk and send the details?

Thanks in advance. Regards.

Caglar Durmaz

CCS/MSP430F6736: UART Receiver problem on EVM430F6736

$
0
0

Part Number: MSP430F6736

Tool/software: Code Composer Studio

Hi TI Team,

We have working with EVM430F6736 energy meter. In UART communication, Transmit the data to other device is working fine. but in receiver part, still not working. Receiver interrupt flag isn't enabling.

In which below mention our serial initialization, ( Baud rate = 115200 or 9600, 8bit data, mode = 1).


    /* We only need two modes for the serial characters in the work we have done to date.
       Just support those for the time being */
    if (mode == 0)
    {
        /* 7-bit character, even parity */
#if defined(__MSP430_HAS_UART0__)
        ctl0 = PENA | PEV | SWRST;
#else
        ctl0 = UC7BIT | UCPEN;
#endif
    }
    else
    {
        /* 8-bit character, no parity */
#if defined(__MSP430_HAS_UART0__)
        ctl0 = CHAR | SWRST;
#else
        ctl0 = 0;
#endif
    }
    /* Use ACLK for slow bit rates. Use SMCLK for higher bit rates */
    if (bit_rate <= 4800L)
    {
        bitrate_divider = (32768L*16L)/bit_rate;
#if defined(__MSP430_HAS_UART0__)
        ctl1 = SSEL0;               /* ACLK */
#else
        ctl1 = UCSSEL_1 | UCSWRST;  /* ACLK */
#endif
    }
    else
    {
#if defined(__MSP430F6736__)  ||  defined(__MSP430F6749__)  ||  defined(__MSP430F67491__)  ||  defined(__MSP430F6779__)  ||  defined(__MSP430F67791__)
        /* 24MHz clock */
        bitrate_divider = (32768L*768L*16L)/bit_rate;
#elif defined(__MSP430F4794__)  ||  defined(__MSP430F47197__)
        /* 16MHz clock */
        bitrate_divider = (32768L*512L*16L)/bit_rate;
#elif defined(__MSP430AFE251__)  ||  defined(__MSP430AFE252__)  ||  defined(__MSP430AFE253__)
        /* Exactly 8MHz clock */
        bitrate_divider = (8000000L*16L)/bit_rate;
#else
        /* 8MHz clock */
        bitrate_divider = (32768L*256L*16L)/bit_rate;
#endif
#if defined(__MSP430_HAS_UART0__)
        ctl1 = SSEL1;               /* SMCLK */
#else
        ctl1 = UCSSEL_2 | UCSWRST;  /* SMCLK */
#endif
    }
    bitrate_divider++;
#if defined(__MSP430_HAS_EUSCI_A0__)  ||  defined(__MSP430_HAS_UART0__)
    mctl = (bitrate_divider & 0x0E) >> 1;
    mctl = mod_patterns[mctl];
#else
    mctl = bitrate_divider & 0x0E;
#endif
    bitrate_divider >>= 4;
#if !defined(__MSP430_HAS_EUSCI_A0__)
    br1 = bitrate_divider >> 8;
    br0 = bitrate_divider;
#endif

    switch (port)
    {
#if defined(UART_0_SUPPORT)
    case 0:
    #if defined(__MSP430_HAS_USCI_AB0__)  ||  defined(__MSP430_HAS_USCI_A0__)  ||  defined(__MSP430_HAS_EUSCI_A0__)
        /* Configure the port with the reset bit held high */
        UCA0CTL1 |= UCSWRST;
        UCA0CTL0 = ctl0;
        UCA0CTL1 = ctl1;
        #if defined(__MSP430_HAS_EUSCI_A0__)
        UCA0BRW = bitrate_divider;
        UCA0MCTLW = ((uint16_t) mctl << 8);
        #else
        UCA0BR1 = br1;
        UCA0BR0 = br0;
        UCA0MCTL = mctl;
        UCA0STAT = 0;
        #endif
        UCA0TXBUF = 0;
        UCA0CTL1 &= ~UCSWRST;
        #if defined(UART_0_DMA_SUPPORT)
        //DMACTL0 |= (DMA1TSEL_3 | DMA2TSEL_4);
        #endif
        #if defined(__MSP430_HAS_USCI_AB0__)
        UC0IE |= UCA0RXIE;
        #else
        UCA0IE |= UCRXIE;
        #endif
    #elif defined(__MSP430_HAS_UART0__)
        UCTL0 = ctl0;
        UTCTL0 = ctl1;
        UBR10 = br1;
        UBR00 = br0;
        UMCTL0 = mctl;
        UCTL0 &= ~SWRST;
        /* Enable USART0 TXD/RXD */
        U0ME |= (UTXE0 | URXE0);
        U0IE |= URXIE0;
        /* If you do not initially kick the Tx port the TXEPT bit is not set. */
        TXBUF0 = 0;
    #endif
        return 0;

Kindly give any suggestion.

regards,

Anitha.L

MSP430FR6043: Issue with SPI CLK (UCA2) when mapped to port PJ

$
0
0

Part Number: MSP430FR6043

I am having an issue with the SPI functionality on the MSP430FR6043 when trying to map it to port PJ (pins PJ.0-PJ.3). The MOSI signal on PJ.2 works fine, but the clock does not appear on PJ.0 at all. When mapped to port P5 (P5.0 - P5.3) everything works as expected. I double check the electrical connection by setting the PJ.0 as a digital IO and sending out some pulses, which registered on the scope correctly. I repeated this test on three separate devices, with the same results. I tried both with an SPI device connected, and with the MCU pin floating. I don't think the pins on port PJ are entering JTAG mode, the SYSJTAGPIN is 0, and the device behaves the same when debugging with SPW, as well as when running off battery with the SPW programmer disconnected and the RESET pin pulled high at all times. Could there be something else preventing the PJ.0 pin from muxing into the SPI clock on the UCA2 module? Please advice. I would really appreciate having these pins specifically available for that feature, as I am working with a very tight PCB layout, and the position of the USS module and the LCD is fixed, leaving me very little wiggle room.

Attached: scope trace from pin P5.2 (working) and PJ.0 (not working), and the test code I ran. The tests were performed on a custom PCB, with either the PJ.0 pin floating (connected only to a scope probe), or connected to an SPI slave device thought a 22R resistor. Debugged with an MSP FET, over a SBW connection with only the SBWCLK and SBWTDO pins connected. Thanks for any input!

#include "driverlib.h"

uint8_t RXData = 0;
uint8_t TXData = 0;
int i=0;

void main(void){
    //Stop watchdog timer
    WDT_A_hold(WDT_A_BASE);
    PMM_unlockLPM5();

    //Set DCO frequency to max DCO setting
    CS_setDCOFreq(CS_DCORSEL_0, CS_DCOFSEL_3);
    CS_initClockSignal(CS_SMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1);

    //test CLK pins in output mode
    GPIO_setAsOutputPin(GPIO_PORT_PJ,BIT0);
    GPIO_setAsOutputPin(GPIO_PORT_P5,BIT2);

    //3 pulses
    for(i=0; i<6; i++){
        GPIO_toggleOutputOnPin(GPIO_PORT_PJ, BIT0);
        GPIO_toggleOutputOnPin(GPIO_PORT_P5, BIT2);
        __delay_cycles(1000);
    }


    //for PORT PJ (with CLK not working)
    GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_PJ, BIT0 | BIT1 | BIT2 | BIT3, GPIO_PRIMARY_MODULE_FUNCTION);

    //for PORT P5 (working fine)
    GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, BIT0 | BIT1 | BIT2 | BIT3, GPIO_SECONDARY_MODULE_FUNCTION);


    //Initialize Master
    EUSCI_A_SPI_initMasterParam param = {0};
    param.selectClockSource = EUSCI_A_SPI_CLOCKSOURCE_SMCLK;
    param.clockSourceFrequency = CS_getSMCLK();
    param.desiredSpiClock = 50000;
    param.msbFirst = EUSCI_A_SPI_MSB_FIRST;
    param.clockPhase = EUSCI_A_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT;
    param.clockPolarity = EUSCI_A_SPI_CLOCKPOLARITY_INACTIVITY_HIGH;
    param.spiMode = EUSCI_A_SPI_3PIN;
    EUSCI_A_SPI_initMaster(EUSCI_A2_BASE, &param);

    //Enable SPI module
    EUSCI_A_SPI_enable(EUSCI_A2_BASE);

    EUSCI_A_SPI_clearInterrupt(EUSCI_A2_BASE,EUSCI_A_SPI_RECEIVE_INTERRUPT);
    // Enable USCI_A0 RX interrupt
    EUSCI_A_SPI_enableInterrupt(EUSCI_A2_BASE,EUSCI_A_SPI_RECEIVE_INTERRUPT);

    //Wait for slave to initialize
    __delay_cycles(100);

    TXData = 0x1;                             // Holds TX data

    //USCI_A0 TX buffer ready?
    while (!EUSCI_A_SPI_getInterruptStatus(EUSCI_A2_BASE, EUSCI_A_SPI_TRANSMIT_INTERRUPT)) ;

    //Transmit Data to slave
    EUSCI_A_SPI_transmitData(EUSCI_A2_BASE, TXData);

    __bis_SR_register(LPM0_bits + GIE);      // CPU off, enable interrupts
    __no_operation();                       // Remain in LPM0
}

#pragma vector=USCI_A2_VECTOR
__interrupt
void USCI_A2_ISR(void){
    switch(__even_in_range(UCA2IV, USCI_SPI_UCTXIFG))
    {
        case USCI_SPI_UCRXIFG:      // UCRXIFG
            //USCI_A0 TX buffer ready?
            while (!EUSCI_A_SPI_getInterruptStatus(EUSCI_A2_BASE,EUSCI_A_SPI_TRANSMIT_INTERRUPT));

            RXData = EUSCI_A_SPI_receiveData(EUSCI_A2_BASE);

            //Increment data
            TXData++;

            //Send next value
            EUSCI_A_SPI_transmitData(EUSCI_A2_BASE,TXData);

            //Delay between transmissions for slave to process information
            __delay_cycles(40);
            break;
        default:
            break;
    }
}


CCS/MSP430FR5949: I2C Master can not send a device address higher then 0x3F

$
0
0

Part Number: MSP430FR5949

Tool/software: Code Composer Studio

I use the I2C sample (master code) from TI. It works with a slave devive with an address below 0x3F. If I send to an device with an address of 0x7F or higher than the I2C machine of the MSP430FR5949 set the highest bit to zero. The result is an address lower then 0x3F.

The problem is I have to communicate with an RFID-IC with a address for write of 0xA6 and an address for read of 0xA7. The controller send only 0x26 and 0x27 to the slave device. It is a 6-bit address room plus R/W-bit  only.

Could you help me? What have I to change in the initialisation? Could you send a sample of initialisation code with interrupt routine?

Best Regards
Hardy

CCS/MSP430F2013: Maximum IO Toggle Speed

$
0
0

Part Number: MSP430F2013

Tool/software: Code Composer Studio

I use the MSP430FG4618 / F2013 Experimenter Board and don't know how to toggle the IO at a maximum speed of 16 MHz. The DCO is at 16 MHz but the output pin toggles only at a speed of 1.1 MHz. How is this possible and how can I toggle the IO at a speed of 16MHz?

MSP432P401R: JTAG/SWD Lock firmware update

$
0
0

Part Number: MSP432P401R

Hi,


We are attempting to update application firmware by using the bootloader inJTAG/SWD lock mode. The reference document for our testing is: www.ti.com/.../slau690e.pdf

The unencrypted firmware binary is first transferred via custom firmware into the memory location: 0x0002.0000 (as shown on Figure 10 of the manual above)

JTAG/SWD lock parameters are set to their default state and flashmailbox is cleaned out prior to update.

Then we configure the flashmailbox as shown below:

/* Setup the flash mailbox */
uint8_t flashMailBox[0x290];
memset(flashMailBox, 0xFF, sizeof(flashMailBox));

/* Unprotecting Info Bank 0, Sector 0  */
FlashCtl_unprotectSector(FLASH_INFO_MEMORY_SPACE_BANK0, FLASH_SECTOR0);

/* Erase the flash mailbox */
FlashCtl_eraseSector((uint32_t) flashMailBox_ptr);

/* Set flash mailbox start */
* (uint32_t *) (&flashMailBox[0x0000]) = (uint32_t) 0x0115ACF6;

/* Set flash mailbox command to firmware update (SEC_ZONE0_UPDATE ) */
* (uint32_t *) (&flashMailBox[0x0004]) = COMMAND_JTAG_SWD_LOCK_ENC_UPDATE | COMMAND_JTAG_SWD_LOCK_SECEN;

/* Enable JTAG/SWD lock */
* (uint32_t *) (&flashMailBox[0x0010]) = (uint32_t) 0x00000000;

/* Set address of uploaded firmware */
* (uint32_t *) (&flashMailBox[0x01F8]) = (uint32_t) 0x00020000;

/* Set length of uploaded firmware */
* (uint32_t *) (&flashMailBox[0x01FC]) = (uint32_t) sector * D_OS2SAS_SYS_FLASH_SECTOR_LENGTH + 0x10;

/* Set the destination address after decryption */
* (uint32_t *) (&flashMailBox[0x0200]) = (uint32_t) 0x00001000;

/* Set flash mailbox end */
* (uint32_t *) (&flashMailBox[0x028C]) = (uint32_t) 0x0011E11D;

/* Program the flash mailbox */
FlashCtl_programMemory(&flashMailBox, flashMailBox_ptr, sizeof(flashMailBox));

/* Protecting Info Bank 0, Sector 0  */
FlashCtl_protectSector(FLASH_INFO_MEMORY_SPACE_BANK0, FLASH_SECTOR0);

Basically, the code above sets the flashmailbox configuration to exactly what Figure 14 in the reference manual states.  We do not invoke any BSL hardware pin parameters since the firmware update is being done internally and not via JTAG/SWD or BSL.

Few questions:

Can it be assumed that the application firmware memory address destination is 0x0000.1000 as shown in the manual?

Is there an acknowledgement field for successful update via JTAG/SWD lock firmware update as there is in the Secure IP Zone Update (0xACE vs 0xDEAD)? How do we confirm it updated the firmware correctly? Is there maybe even a way to perform this update without JTAG/SWD lock since we are doing it internally (triggered by custom UART driver calling the update firmware) not by an external interface.

Regarding the GUI (MSP432P4xx Security and Update Tool) - www.ti.com/.../MSP432-SECURITY-AND-UPDATE-TOOL

On the JTAG/SWD Lock Update tab - Update Firmware within the program, How do we generate an output encrypted firmware image? Does the encrypted version of the firmware need to be the input binary to the update?

Last question, why has the tool been deprecated as of Rev D? Couldn't find the exact reference in the SLAA700A that pertains to this functionality.

Thank you,

Best,

Robert

Linux/MSP430F5338: Need to set bit at the end of firmware loading

$
0
0

Part Number: MSP430F5338

Tool/software: Linux

We are using MSP430.dll to load the firmware into our device. We want to burn the fuse/set bit to the device after loading the firmware. I am not the original developer of the code that calls the dll and I am not able to locate the header for the dll.

So first question can the dll be used to set the bit, and if so what is the parameter to pass to the dll to do so.

Thanks in advance

CCS/MSP430F47177: MSP430F47177 MSPBoot – Main Memory Bootloader for MSP430™ Flash Microcontroller SLAA600D Code Reset Problem

$
0
0

Part Number: MSP430F47177

Tool/software: Code Composer Studio

Dear Sir,

We want to add bootloader facility in our product that requires single image bootloader facility using UART.

As we have found some reference for the same by application note of  SLAA600D.
.
And we make some changes in the lnk_msp430f47177.cmd according to our uC MSP430F47177. 

Our problem with the code is it doesn't reset the code and go to main() during Debug mode.

Please suggest the changes in the below code attach if any we also attach the file folder for the same.(Please visit the site to view this file)

/* ============================================================================ */
/* Copyright (c) 2014, Texas Instruments Incorporated                           */
/*  All rights reserved.                                                        */
/*                                                                              */
/*  Redistribution and use in source and binary forms, with or without          */
/*  modification, are permitted provided that the following conditions          */
/*  are met:                                                                    */
/*                                                                              */
/*  *  Redistributions of source code must retain the above copyright           */
/*     notice, this list of conditions and the following disclaimer.            */
/*                                                                              */
/*  *  Redistributions in binary form must reproduce the above copyright        */
/*     notice, this list of conditions and the following disclaimer in the      */
/*     documentation and/or other materials provided with the distribution.     */
/*                                                                              */
/*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
/*     its contributors may be used to endorse or promote products derived      */
/*     from this software without specific prior written permission.            */
/*                                                                              */
/*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
/*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
/*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
/*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
/*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
/*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
/*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
/*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
/*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
/*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
/*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
/* ============================================================================ */

/******************************************************************************/
/* lnk_msp430f47177.cmd - LINKER COMMAND FILE FOR LINKING MSP430F47177 PROGRAMS     */
/*                                                                            */
/*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
/*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
/*                                                                            */
/*----------------------------------------------------------------------------*/
/* These linker options are for command line linking only.  For IDE linking,  */
/* you should set your linker options in Project Properties                   */
/* -c                                               LINK USING C CONVENTIONS  */
/* -stack  0x0100                                   SOFTWARE STACK SIZE       */
/* -heap   0x0100                                   HEAP AREA SIZE            */
/*                                                                            */
/*----------------------------------------------------------------------------*/
/* Version: 1.127                                                             */
/*----------------------------------------------------------------------------*/

/****************************************************************************/
/* SPECIFY THE SYSTEM MEMORY MAP                                            */
/****************************************************************************/
/* RAM Memory Addresses */
__RAM_Start = 0x1100;                 /* RAM Start */
__RAM_End = 0x30FF;                     /* RAM End */
    /* RAM shared between App and Bootloader, must be reserved */
    PassWd = 0x1100;                 /* Password sent by App to force boot  mode */
    StatCtrl = 0x1102;             /* Status and Control  byte used by Comm */
    CI_State_Machine = 0x1103;         /*  State machine variable used by Comm */
    CI_Callback_ptr = 0x1104;   /* Pointer to Comm callback structure */
    /* Unreserved RAM used for Bootloader or App purposes */
    _NonReserved_RAM_Start = 0x1108; /* Non-reserved RAM */

/* Flash memory addresses */
__Flash_Start = 0x3100;             /* Start of Application area */
   /* Reserved Flash locations for Bootloader Area */
    __Boot_Start = 0xF800;         /* Boot flash */
    __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
    __Boot_VectorTable = 0xFFC0;      /* Boot vector table */
    __Boot_SharedCallbacks_Len = 6; /* Length of shared callbacks (2 calls =4B(msp430) or 8B(msp430x) */
    __Boot_SharedCallbacks = 0xFFBA; /* Start of Shared callbacks */
     _BOOT_APPVECTOR = __Boot_SharedCallbacks;       /* Definition for application table             */
    _Appl_Proxy_Vector_Start = 0xF702; /* Proxy interrupt table */
    /* Reserved Flash locations for Application Area */
MEMORY
{
    SFR                     : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
    // RAM from _NonReserved_RAM_Start - __RAM_End
    RAM                     : origin = 0x1108, length = 0x1FF8
    USBRAM                  : origin = 0x0200, length = 0x800
	// Info Mem Sections
	INFOA                   : origin = 0x10C0, length = 0x40
    INFOB                   : origin = 0x1080, length = 0x40
    INFOC                   : origin = 0x1040, length = 0x40
    INFOD                   : origin = 0x1000, length = 0x40
    // Flash from _App_Start -> (APP_PROXY_VECTORS-1)
    FLASH                   : origin = 0x3102, length = 0xC600
    FLASH2                  : origin = 0x10000, length = 0xA000
    // Interrupt Proxy table from  _App_Proxy_Vector_Start->(RESET-1)
    APP_PROXY_VECTORS       : origin = 0xF702, length = 252
    // App reset from _App_Reset_Vector
    RESET                   : origin = 0xF7FE, length = 0x0002
}

/****************************************************************************/
/* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY                              */
/****************************************************************************/

SECTIONS
{
    .bss        : {} > RAM                /* GLOBAL & STATIC VARS              */
    .data       : {} > RAM                /* GLOBAL & STATIC VARS              */
    .sysmem     : {} > RAM                /* DYNAMIC MEMORY ALLOCATION AREA    */
    .stack      : {} > RAM (HIGH)         /* SOFTWARE SYSTEM STACK             */

    .text:_isr  : {}  > FLASH            /* Code ISRs                         */
    #ifndef __LARGE_CODE_MODEL__
        .text       : {} >> FLASH               /* CODE                 */
    #else
        .text       : {} >> FLASH | FLASH2      /* CODE                 */
    #endif

        .cinit      : {} > FLASH        /* INITIALIZATION TABLES*/
    #ifndef __LARGE_DATA_MODEL__
        .const      : {} >> FLASH       /* CONSTANT DATA        */
    #else
        .const      : {} >> FLASH2 | FLASH    /* CONSTANT DATA        */
    #endif

    .cio        : {} > RAM                /* C I/O BUFFER                      */

	.infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
    .infoB     : {} > INFOB
    .infoC     : {} > INFOC
    .infoD     : {} > INFOD

    .APP_PROXY_VECTORS : {} > APP_PROXY_VECTORS /* INTERRUPT PROXY TABLE            */
   /* .int00       : {}               > INT00
    .int01       : {}               > INT01
    .int02       : {}               > INT02
    .int03       : {}               > INT03
    .int04       : {}               > INT04
    .int05       : {}               > INT05
    .int06       : {}               > INT06
    .int07       : {}               > INT07
    .int08       : {}               > INT08
    .int09       : {}               > INT09
    .int10       : {}               > INT10
    .int11       : {}               > INT11
    .int12       : {}               > INT12
    .int13       : {}               > INT13
    .int14       : {}               > INT14
    DMA          : { * ( .int15 ) } > INT15 type = VECT_INIT
    BASICTIMER   : { * ( .int16 ) } > INT16 type = VECT_INIT
    PORT2        : { * ( .int17 ) } > INT17 type = VECT_INIT
    USCIAB1TX    : { * ( .int18 ) } > INT18 type = VECT_INIT
    USCIAB1RX    : { * ( .int19 ) } > INT19 type = VECT_INIT
    PORT1        : { * ( .int20 ) } > INT20 type = VECT_INIT
    TIMERA1      : { * ( .int21 ) } > INT21 type = VECT_INIT
    TIMERA0      : { * ( .int22 ) } > INT22 type = VECT_INIT
    SD16A        : { * ( .int23 ) } > INT23 type = VECT_INIT
    USCIAB0TX    : { * ( .int24 ) } > INT24 type = VECT_INIT
    USCIAB0RX    : { * ( .int25 ) } > INT25 type = VECT_INIT
    WDT          : { * ( .int26 ) } > INT26 type = VECT_INIT
    COMPARATORA   : { * ( .int27 ) } > INT27 type = VECT_INIT
    TIMERB1      : { * ( .int28 ) } > INT28 type = VECT_INIT
    TIMERB0      : { * ( .int29 ) } > INT29 type = VECT_INIT
    NMI          : { * ( .int30 ) } > INT30 type = VECT_INIT*/
    .reset       : {}               > RESET  /* MSP430 RESET VECTOR         */ 
}

/****************************************************************************/
/* INCLUDE PERIPHERALS MEMORY MAP                                           */
/****************************************************************************/

-l msp430f47177.cmd

MSP430FR5969: Reference Generator Module with ADC

$
0
0

Part Number: MSP430FR5969

Hello All,

what is Buffered Vref+ in Reference used by ADC12_B module

what is current consumption difference if Buffered reference is used?

Can anyone please me the difference between below Reference used for ADC

CCS/MSP430F5529: Problem in communication with UART while using timer with interrupt

$
0
0

Part Number: MSP430F5529

Tool/software: Code Composer Studio

Hello Sir/Mam,

I have two TI controllers one is MSP430f5529 and other is MSP430f5329.

I setup UART  interrupt communication protocol for communicating each other(full duplex communication).

Now the 5529 code part also have a timer setup with interrupt 

The problem is my timer is running in background and in the while part i send some data to other msp5329 for a certain condition.

when my program reaches to send part of uart its automatically goes to UART interrupt part. and after that return to send function

i dont know how to solve this strange problem because timer have different interrupt and uart has different.

Here is my code of MSP430F5529.  

void main()
{
Timer();
uartInit();
__enable_interrupt();
while(1)
{
//certain condition
send_uart("abcdef");
}
}

void Timer()
{
  TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA0CCR0 = 1850;
  TA0CTL = TASSEL_2 + MC_1 + TACLR;
}
/////////////////////timer interrupt part////////////////////////////////////////////////////////
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
 #elif defined(__GNUC__)
 void __attribute__ ((interrupt(TIMER1_A0_VECTOR))) TIMER1_A0_ISR (void)
 #else
 #error Compiler not supported!
 #endif
{
    count++;
    P2OUT |= 0x07;
    P1OUT |= 0xF8;
    AllCondition();
    __bis_SR_register_on_exit(GIE);
}

void uartInit()
{
    P4SEL |= (BIT4+BIT5);

    P4DIR |= BIT6;                     //clock for send data
    P4REN |= BIT6;
    P4OUT &=~ BIT6;

    UCA1CTL1|=UCSWRST;
    UCA1CTL1|=UCSSEL_2;
    UCA1BR0 =9;
    UCA1BR1 =0;
    UCA1CTL1 &=~UCSWRST;
    UCA1IE |=UCRXIE;
 //   __bis_SR_register(GIE);
    __no_operation();
}

void send_uart(char *addr)
{  P4OUT|=BIT6;
    unsigned int i;
    unsigned int size =strlen(addr);
    for(i=0;i<size;i++)
    {
    while(!(UCA0IFG & UCTXIFG));
    UCA0TXBUF = addr[i];
    }
    P4OUT&=~BIT6;
}

//////////////////////////////////UART INTERRUPT///////////////////////////////////////
#if defined(__TI_COMPILER_VERSION__)|| defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
#elif defined(__GNUC__)
void__attribute__((interrupt(USCI_A1_VECTOR))) USCI_A1_ISR (void)
#else
#error compiler not supported!
#endif
{

switch(__even_in_range(UCA1IV,4))
{
case 0:break;
case 2:
    //while(!(UCA1IFG & UCTXIFG));
    *received = UCA1RXBUF;
    *received++;

break;
case 4:break;
default:break;
}
}


MSP432P401R: MSP432P401R I2C BIT BANGING

$
0
0

Part Number: MSP432P401R

Hello

I am interested in developing an application for I2C communication with the bitbang method.
Are there any examples, or does anyone have any suggestions?

Hardware: 2x MSP432P401R Launchpad

Software: I 'm currently use the driverlib for MSP432.

Thank you in advance

Alessandro

MSP430FR4133: MSP430FR4133 LaunchPad out of box demo

$
0
0

Part Number: MSP430FR4133

Where MSP430FR4133 LaunchPad out of box demo software is located?

I was not able to find it in CCS V8 explorer or in "C:\ti\msp430ware_3_80_06_03" path.

Thank you,

MSP430I2040: Where to download the source code of EVM430-I2040S

$
0
0

Part Number: MSP430I2040

hi

i can't find where to download the source code of EVM34I2040S, need help, thank you.

RTOS: MSP432E example: httpserver_MSP_EXP432E401Y_tirtos_ccs_syscfg

$
0
0

Tool/software: TI-RTOS

Hello,

In the SimpleLink MSP432E4 SDK 3.20.00.10 v. - the httpserver example is not working to me. I have the following error message:

C:\ti\simplelink_msp432e4_sdk_3_20_00_10\tools\examples>python httpSampler.py 192.168.0.101
Caught exception -
HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /home.html (Caused by NewConnectionErr
or('<urllib3.connection.HTTPConnection object at 0x03D937F0>: Failed to establish a new connection: [WinError 10060] A c
onnection attempt failed because the connected party did not properly respond after a period of time, or established con
nection failed because connected host has failed to respond'))

Http or Https are not working. 

If I disable the https task starting code, the python example http part working. Can you please check it?

RTOS/MSP432E401Y: Receive I2C signal on port even when debugger is halted

$
0
0

Part Number: MSP432E401Y

Tool/software: TI-RTOS

Hello,

I am working on MSP432#401Y Launchpad. I have loaded i2c example program which reads the temperature from on board sensor.

The example code suppose to measure the temperature and display.

However, I observed that even when the program is halted at a specific break point and I try capturing the data on pins I2CMSP432E4_PN5_I2C2SCL and I2CMSP432E4_PN4_I2C2SDA.

It displays some data on the both the pins.

As per my understanding there should not be any data when its program is halted it could be at max either continue to be HIGH or LOW

Problem-1:

Should there be some data when debugger is halted?

Problem-2:

As I see the example code it calls the I2C_Transfer function for address and returns FALSE to enter in to while loop for ever. It seems to be the error where it is not able to resolve the sensor.

Any clue? why does it return false? Am I missing any config?

    if (!I2C_transfer(i2c, &i2cTransaction)) {
        /* Sensor error, Could not resolve a sensor, error */
        while(1);
    }

Question-1:

Also, I want to use I2C0 instead of I2C2 port used in example code.

Is that enough if I update the struct parameter in below struct for using I2C0 port or need to change some other code piece as well?

I could not trace any other place than the below struct where I2C port is been mentioned in example code

/* MSP_EXP432E401Y.c */
const I2CMSP432E4_HWAttrs i2cMSP432E4HWAttrs[MSP_EXP432E401Y_I2CCOUNT] = {
    {
#if 1		//This is what I want
        .baseAddr = I2C0_BASE,
        .intNum = INT_I2C0,
        .intPriority = (~0),
        .sclPin = I2CMSP432E4_PB2_I2C0SCL,
        .sdaPin = I2CMSP432E4_PB3_I2C0SDA,
        .masterCode = 0x08
#else		//Example code
        .baseAddr = I2C2_BASE,
        .intNum = INT_I2C2,
        .intPriority = (~0),
        .sclPin = I2CMSP432E4_PN5_I2C2SCL,
        .sdaPin = I2CMSP432E4_PN4_I2C2SDA,
        .masterCode = 0x08
#endif

    }
};

Thanks

/Hp

Viewing all 21928 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>