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

MSP430FR2512: usage fields

$
0
0

Part Number:MSP430FR2512

In which usage fields (automotive, etc.) the CapTIvate MSP430 family is mostly used? Among these, are there also applications assigned to a safety integrity level (SIL)?


MSP430FR2512: Captivate User Configuration

$
0
0

Part Number:MSP430FR2512

As I understand it, the CapTIvate Touch library is user-configurable.
1. Is it correct that the application code comprises a tool generated user config which contains sensor conversion control and tuning parameters for initializing the Captivate hardware and configuring the CapTIvate Touch library functionality?
2. can any auto-tuning algorithm for sensor parameters (runtime recalibration, dynamic threshold adjustment, etc.) be completely deactivated? Is there detailed information about how these algorithms work?

MSP430FR2512: FRAM devices bootloader (BSL)

$
0
0

Part Number:MSP430FR2512

I have some questions regarding the MSP430 FRAM devices bootloader (BSL) functionality:

1. Can the BSL be bypassed and a custom bootloader be installed in FRAM? If so, how will the BSL be bypassed ?

2. Does the bootloader do any initialization of hardware which is mandatory for running an application, or does the application itself initialize the hardware (BSP initialization) ?

3. Is the bootloader using the MSP Peripheral Driver Library?

4. As I understand it, the bootloader is a resident software in ROM which can optionally be configured via a specific FRAM location. Is this config written by an external programmer or by the application code?

5. Who checks the BSL entry sequence on the RST/NMI and TEST pins which decides whether bootloader or application is started? Is there any other resident software on the device which implements the boot functionality? If yes, are there documentation and tests available?

6. Concerning certification, is there a Test Suite (testcases, test procedures, verification results) available for the bootloader software in ROM?

MSP430™ FRAM devices bootloader (BSL)

MSP430FR2512: Information FRAM

EVM430-F6736: Voltage and current reading problem on EVM430F6736 enery meter.

$
0
0

Part Number:EVM430-F6736

Hi all,

i'm working on EVM430F6736 development board. i given the AC supply as 230V to board. But in my energy meter reading, it shows 210V. How to adjust/ get the 230V reading on this board? is any adjustment happen on Vrms scaling factor? I'm facing this also in current measurement. Pease give me a solution for these problem.

Thanks & Regards,

Poovai Anitha.L

MSP430F4270: Audio Feedthru

$
0
0

Part Number:MSP430F4270

Dear all,

I'm trying to do some DSP with the 4270 since it has an A/D and D/A. I have two questions:

1. Is there a good way to synchronize the input and output sample rates?

2. What is the best way to achieve the fastest sampling? i.e., how can I increase the clock going to the A/D and D/A and should I use interrupts?

Here's my code so far:

//*****************************************************************************
//  Audio Feedthru
//
//                MSP430F4270
//            -----------------
//           |                 |
//           |        DAC0/P1.4|--> Analog Out
//           |                 |
//   Vin+ -->|A0+              |
//   Vin- -->|A0-              |
//           |                 |
//           |            VREF |---+
//           |                 |   |
//           |                 |  -+- 100nF
//           |                 |  -+-
//           |                 |   |
//           |            AVss |---+
//
//*****************************************************************************
#include <msp430.h> 
unsigned int result;

int main(void)
{
	WDTCTL = WDTPW | WDTHOLD;	              // stop watchdog timer
	FLL_CTL0 = DCOPLUS + XCAP14PF;            // DCO+ set so freq = xtal x D x N+1

	SD16CTL = SD16REFON+SD16SSEL0;            // 1.2V ref, SMCLK
	SD16CCTL0 |= SD16SNGL+SD16IE+SD16BUF_3 ;  // Single conv, enable interrupt, high impedance
	SD16INCTL0 |= SD16INTDLY_0;               // Interrupt on 4th sample

	unsigned int i;
    for (i = 0; i < 10000; i++);              // Delay for 32 kHz crystal

	__enable_interrupt();                     // Enable general interrupts

	SD16CTL = SD16REFON;                      // 1.2V ref
	DAC12_0CTL = DAC12OPS + DAC12SREF_2 + DAC12IR + DAC12AMP_5 + DAC12ENC;
	                                            // DAC o/p external, Ref Voltage = internal (SD16),
	                                            // O/p Voltage range = 1x ref, Enable conversion
	while(1){
	    DAC12_0DAT = result >> 1;               // Send A/D result to D/A
	    SD16CCTL0 |= SD16SC;                    // Set bit to start A/D conversion
	    __bis_SR_register(LPM0_bits);           // Enter LPM0
	}
}


#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(SD16_VECTOR))) SD16ISR (void)
#else
#error Compiler not supported!
#endif
{
  switch (SD16IV)
  {
  case 2:                                   // SD16MEM Overflow
    break;
  case 4:                                   // SD16MEM0 IFG
    result = SD16MEM0;                      // Save CH0 results (clears IFG)
    break;
  }
  __bic_SR_register_on_exit(LPM0_bits);     // Exit LPM0
}

thank you,

Scott

MSP430F5529: clock loop gets stuck

$
0
0

Part Number:MSP430F5529

Hi all,

We have some boards sporting a msp430f5529 (we needed USB) with a code snippet which, from time to time, gets stuck.

However, I do not understand how can this happen if no IRQ are allowed. Please let me share it in a summarized manner:

// Loop until XT1,XT2 & DCO stabilize
do
{
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
    SFRIFG1 &= ~OFIFG;
} while (SFRIFG1 & OFIFG);

We Hwi_disable() before this loop, we also have tried __bic_SR_register(GIE) and we hwi_enable(), that is __bis_SR_register(GIE) after this loop.

So, any idea why this could be getting stuck sometimes? Most of the times it just works fine and even you can provoke some loop iterations by physically interacting with the clock and, once you remove your interaction, it recovers itself. Instead, when this issue occurs on its own, the only way to recover the board is by power cycling it.

Any ideas?

Have a nice weekend.

MSP-EXP430FR2355: Trouble Interfacing with 4x4 Matrix Keypad

$
0
0

Part Number:MSP-EXP430FR2355

Hi,

I am trying to interface a 4x4 matrix keypad with the MSP430FR2355 keypad. I have the 4 columns set as inputs on P3.0-P3.3 and the 4 rows set as outputs on P3.4-P3.7. I have the inputs connected to internal pull-up resistors, so their default value should be 1 and I also set the outputs to be default high. To find the key pressed, I am going through one by one and setting a row low and checking to see if any of the buttons were pressed on that column (if a button was pressed, that input pin should read 0). However, P3IN isn't reading the correct values and always shows P3.0 (column 0) to be equal to zero. I commented that pin out to see if the other buttons were working, but P3IN doesn't register the right buttons being pressed. I've posted my code below.

#include <msp430.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>

#include "msp430fr2355.h"

#define COL0 (P3IN & BIT0)
#define COL1 (P3IN & BIT1)
#define COL2 (P3IN & BIT2)
#define COL3 (P3IN & BIT3)
#define PRESS 0

//Functions
char getKey(void);
void delay_ms(unsigned int ms);

int main(void){
WDTCTL = WDTPW | WDTHOLD; //Stop watch dog timer
char key[] = " ";

while(1){
key[0] = getKey();
}

}

char getKey(void){
P3SEL0 &= 0x00;
P3DIR = 0xF0;
P3OUT &= 0x00;
P3REN |= 0x0F; //Enable resistor
P3OUT |= 0xFF; //Set resistor to pull-up

delay_ms(100);

//Scan Row 0
P3OUT &= (~BIT4); //set P3.4 low
if(COL0 == PRESS){
//delay_ms(50);
return 0x31; //1
}

if(COL1 == PRESS){
//delay_ms(50);
return 0x32; //2
}

if(COL2 == PRESS){
//delay_ms(50);
return 0x33; //3
}

if(COL3 != PRESS){
//delay_ms(50);
return 0x41; //A
}
P3OUT |= (BIT4);

//Scan Row 1
P3OUT &= (~BIT5); //set P3.5 low
if(COL0 == PRESS){
//delay_ms(50);
return 0x34; //4
}

if(COL1 == PRESS){
//delay_ms(50);
return 0x35; //5
}

if(COL2 == PRESS){
//delay_ms(50);
return 0x36; //6
}

if(COL3 == PRESS){
//delay_ms(50);
return 0x42; //B
}
P3OUT |= (BIT5);

//Scan Row 2
P3OUT &= (~BIT6); //set P3.6 low
if(COL0 == PRESS){
//delay_ms(50);
return 0x37; //7
}

if(COL1 == PRESS){
//delay_ms(50);
return 0x38; //8
}

if(COL2 == PRESS){
//delay_ms(50);
return 0x39; //9
}

if(COL3 == PRESS){
//delay_ms(50);
return 0x43; //C
}
P3OUT |= (BIT6);

//Scan Row 3
P3OUT &= (~BIT7); //set P3.7 low
if(COL0 == PRESS){
//delay_ms(50);
return 0x2A; //star
}

if(COL1 == PRESS){
//delay_ms(50);
return 0x30; //0
}

if(COL2 == PRESS){
//delay_ms(50);
return 0x23; //#
}

if(COL3 == PRESS){
//delay_ms(50);
return 0x44; //D
}
P3OUT |= (BIT7);

return 0x00; //NULL
}

void delay_ms(unsigned int ms){
while(ms){
__delay_cycles(1000); //1000 for 1MHz (default clock setting)
ms--;
}
}


MSP430FR2000: Interrupt wake-up from LPMx.y

$
0
0

Part Number:MSP430FR2000

Hello,
for a 3.6V battery application, during the 99.99% of the time, my device will be in sleep (or other ultra low power) mode, but I need to have one output in high or low level, and I can not loss this state, because it drives a small mosfet.

I have 2 input to wake-up from sleep (or other ultra low power) mode by interrupt.

I don't use external crystal, and nor the RTC.

I need to use the ultra low power LPM4.5, but I have some questions:
1) can I use any pin with interrupt feature or do I use a specific pins to wake-up from LPM4.5?
2) I can't loss the output pin... can I do it using LPM4.5?
3) Do I need to use a BackupMem to store the state of output pin?

I await for any reply.
Thank You and Best Regards
Federico Battaglin

EVM430-F47197: EVM430-F47197 User guide

$
0
0

Part Number:EVM430-F47197

Hi.

My customer is asking for the user guide of EVM430-F47197. I have searched the website and I could not find one. Can you help me to obtain one?

Thank you.

RTOS/MSP432P401R: Global variables

$
0
0

Part Number:MSP432P401R

Tool/software: TI-RTOS

Hi all: I'm using serveral threads in my system. One of that threads is updating a set of global variables, and other threads are accessing to that variables to read the content and make some calculations... I'm using the POSIX API. The thread writing the variables has a code like:

...
res = ADC_convert(adc_pin1, &adc_pin1_value);
if (res == ADC_STATUS_SUCCESS && !(pthread_rwlock_wrlock(pin1_lock))) {
    pin1 = ADC_convertRawToMicroVolts(adc_pin1, adc_pin1_value);
    pthread_rwlock_unlock(pin1_lock);
}

Other threads reading that value:

uint32_t _pin1 = 0;

if (!pthread_rwlock_rdlock(pin1_lock)) {
    _pin1 = pin1;
    pthread_rwlock_unlock(pin1_lock);
}

It's the correct way? It's necessary synchronization mechanism with simple data types like uint32_t? (I've a lot of shared vars and I'm trying to simplify all the code)

CCS/TIDA-00637: TIDA-00637 Build Errors

$
0
0

Part Number:TIDA-00637

Tool/software: Code Composer Studio

Hello,

I've made the exact circuit described in TIDA-00637 EVSE charger. I loaded the program and I'm getting 20 errors and I can't figure out why. Below are my errors.

CCS/MSP430G2755: CCS and UniFlash unable to detect micro. Problems bring up new board.

$
0
0

Part Number:MSP430G2755

Tool/software: Code Composer Studio

I've got new board in and I cannot get it CodeComposer to detect it. I'm jumping 3.3V on to the board, so the only parts populated are the JTAG connector and the MSP430G2755 microcontroller. The current draw looks reasonable, 84uA @ 3.3V. At first pin 1, TEST, was not connected, but I've jumped that to 3.3V to enable the JTAG pins 35-38. 

I've double checked the following connections

PinConnection
1 - Testjumpedto 3.3V
2, 16 - Vcc3.3V
4, 15 - VssGND
35 - TCK
36 - TMS
37 - TDI
38 - TDO

I've hooked a scope up to the JTAG lines. TCK looks like a clock, and TDO has a burst of data.  

What am I doing wrong? I need help.

Thanks

MSP430G2744: Inquire larger RAM but similar function

$
0
0

Part Number:MSP430G2744

Hi Sir,

May I learn from you does MSP430G2x44 series have larger RAM? like 2KB or 4 KB.

If not, could you advice a solution which have similar function but larger RAM?

Thank you for your kindly help.

Edward Chen 

CCS/MSP432P4011: I2C DRIVERLIB - READ/WRITE BIT QUESTION

$
0
0

Part Number:MSP432P4011

Tool/software: Code Composer Studio

Hello everybody,

I'm using the DriverLib documentation to interface an IMU9255 with MSP432, but I don't know how I can send a "read/write" bit using the DriverLib functions. Figure 1 shows a print of all send functions in DriverLib, but neither of them has a "read/write" input. Figure 2 shows the i2c sending sequence, and it needs a "read/write" bit.

Could you guys know how I can find a solution for this?

FIGURE 1.

FIGURE 2.


MSP430FR2355: Font Library for use with a Graphic OLED Display

$
0
0

Part Number:MSP430FR2355

Hello,

I am currently using the MSP430FR2355 to interface with a Graphic OLED Display: NHD-3.12-25664UCB2 with a SSD1322 Controller and was wondering if anyone has come across any font libraries written for the MSP430 family. Even font libraries written for a different, yet similar display would be very helpful.

Thanks in advance!

MSP430FR2433: Possible DriverLib bug in I2C set data rate

$
0
0

Part Number:MSP430FR2433

In DriverLib eusci_b_i2c.c in function EUSCI_B_I2C_initMaster() this code seems in error and doesn't seem to match the comment.

/*
* Compute the clock divider that achieves the fastest speed less than or
* equal to the desired speed. The numerator is biased to favor a larger
* clock divider so that the resulting clock is always less than or equal
* to the desired clock, never greater.
*/
preScalarValue = (uint16_t)(param->i2cClk / param->dataRate);
HWREG16(baseAddress + OFS_UCBxBRW) = preScalarValue;

The division is unsigned and fraction is truncated. Thus the preScalarValue (the clock divider) is smaller and the actual data rate (frequency) greater than desired.

For example for param->i2cClk of 1M and param->dataRate of 400k (the max I2C data rate), preScalarValue is 2 (2.5 with fraction truncated).
Thus the actual data rate will be 500kbps, which is FASTER than desired.

I don't see any code that "biased" the numerator.

CCS 8.02 and a fairly recent version of MSPWare DriverLib

BOOSTXL-SHARP128: BOOSTXL-SHARP128 with MSP430FR5969

$
0
0

Part Number:BOOSTXL-SHARP128

Hi,

I would like to get my BOOSTXL-SHARP128& MSP-EXP430FR5969 to work at the lowest possible power. Ideally I'd like to get it working with the MSP-EXP430F5529, as I need the extra GPIOs, but for now I'm using the 5969 to debug.

I've managed to get the current consumption down from ~900 uA to 140 uA by initialising all of the ports as outputs. The current consumption remains the same with the module disconnected. The only way I can get the current consumption down to LPM (sub-uA) levels is to comment out all of the myScreen functions. Can anyone help? I need to get the display module working with my Launchpad at lowest possible power asap.

Is there something I'm missing?

Thanks in advance.

#include "SPI.h"
#include "OneMsTaskTimer.h"
#include <LCD_SharpBoosterPack_SPI.h>
LCD_SharpBoosterPack_SPI myScreen(SHARP_128);
uint8_t myOrientation = 0;
uint16_t myCount = 0;
#define LCD_VERTICAL_MAX    myScreen.getSize()
#define LCD_HORIZONTAL_MAX  myScreen.getSize()


void setup() {
  Serial.begin(9600);

  myScreen.begin();
  myScreen.clearBuffer();

  pinMode(GREEN_LED, OUTPUT);
  pinMode(PUSH2, INPUT_PULLUP);
  attachInterrupt(PUSH2, interrupt, FALLING);
  digitalWrite(GREEN_LED, LOW);

  P1DIR |= BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
  P1OUT &= (~BIT1)+(~BIT2)+(~BIT3)+(~BIT4)+(~BIT5)+(~BIT6)+(~BIT7);
  P2DIR |= BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
  P2OUT &= (~BIT0)+(~BIT1)+(~BIT2)+(~BIT3)+(~BIT4)+(~BIT5)+(~BIT6)+(~BIT7);
  P3DIR |= BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
  P3OUT &= (~BIT0)+(~BIT1)+(~BIT2)+(~BIT3)+(~BIT4)+(~BIT5)+(~BIT6)+(~BIT7);
  P4DIR |= BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
  P4OUT &= (~BIT0)+(~BIT1)+(~BIT2)+(~BIT3)+(~BIT4)+(~BIT6)+(~BIT5)+(~BIT7);
  
}

void loop() {
            delay(10);
            Serial.print("loop");
            myScreen.setFont(1);
            myScreen.setCharXY(10, 10);
            myScreen.print("TEST");
            myScreen.flush();         
            sleep(1000);
            myScreen.clear();
            suspend();               
}

void interrupt(){
  //delay(10);
  wakeup();
}

MSP430F5328: MSP430F5328

$
0
0

Part Number:MSP430F5328

Hi ,

Iam trying to generate random number of 48 bits. 

I have an exiting serial number 

#define KNX_SERIAL_NR_INIT 0x00,0x72,0xff,0xff,0xC0,0x12

Which will be sinilar to all the device. Iam trying to implement random number and flash it in EEPROM 

MEMSEG_EEPROM DM_tDeviceConst DM_deviceConst =
{
{KNX_SERIAL_NR_INIT}, // serial number
{KNX_HW_TYPE}, // hardware type
{APP_ORDER_NR}, // order number
{0,0,0,0}, // manufData
};

i read the blog for serial number random number 

http://www.ti.com/mcu/docs/litabsmultiplefilelist.tsp?sectionId=96&tabId=1502&literatureNumber=slaa338&docCategoryId=1&familyId=912 

with 3 sample files fips_test.c, vlo_rand.h and vlo_rand.s43

But when i use it in my project iam getting error for undefined extern function TI_getRandomIntegerFromVLO

I have copied all tyhe files to my directory and changed header 

#include <msp430f5328.h>
#include "vlo_rand.h"

Kindly advice!

Thanks

Best regards

Raj

RTOS/MSP430G2553: MSP430G2553 measure frequency problem;

$
0
0

Part Number:MSP430G2553

Tool/software: TI-RTOS

Hello , I have a problem of measure frequency

I used timer capture mode with  P2.1(TA1.1) to get input singal (which is almost 0~266Hz function wave);

But the Precision is not accurate.

And I measure the same freq for 1HZ frequenct that i get a random value for my variable (timer_temp) value; It is random

so please help me to debug. 

1.The problem is timer is not 0.5us for clock;(I see that is almost equal 0.50766u s for one timer clock)

2.All the frequency range is not accurate.... assume the 255Hz , the code will get 240~266Hz....


I can't find the bug please help me thx.

This is my project.

(Please visit the site to view this file)

Viewing all 22212 articles
Browse latest View live


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