Jump to content

LIJsselstein

Members
  • Content Count

    55
  • Joined

  • Last visited

  • Days Won

    1

LIJsselstein last won the day on September 20 2018

LIJsselstein had the most liked content!

About LIJsselstein

  • Rank
    Level 1
  1. LIJsselstein

    Sleep frequency - 999ms vs. 1000ms

    Might be related to this pull request: https://github.com/energia/Energia/pull/1032
  2. LIJsselstein

    MSP430FR2433 SleepSeconds 18ua

    I believe that the documentation in wiring.c is wrong so I suggested a fix for that in this PR. I didn’t know that VLO could not be chosen for ACLK on the FR2433...so thanks for that. This topic on E2E essentially mirrors this thread.
  3. LIJsselstein

    MSP430FR2433 SleepSeconds 18ua

    Energia on the msp430fr2xxx-4xxx range falls back to using the REFO 32kHz clock when the external 32kHz crystal is not populated. REFO is a nice stable/accurate clock, but when you look it up in the datasheet (e.g. p24 in FR2433) you’ll notice the consumption is 15uA. See also line 139 in wiring.c. So, to get really low power with Energia (~1uA in LPM3 with sleep/sleepSeconds), either customise wiring.c to use VLO clock instead of REFO (but you loose clock accuracy) or add external LF crystal. Using driverlib/CCS without ext. LF crystal is basically the same: lowest power=inaccurate clock, a bit less low power=accurate clock.
  4. LIJsselstein

    MSP30FR2433: SLEEP command not working correctly

    I think this is because, when there is no external XTAL connected, Energia (wiring) usually falls back to the VLO source (~12k Hz). But on the FR2433 the clock falls back to the REFO source which runs about 3x faster ( ~32768 Hz). However the code in wiring.h does not reflect this. Please look around line 144 in wiring.c (hardware/energia/msp430/cores/msp430/wiring.c): /* ACLK = VLO = ~ 12 KHz */ vlo_freq = 8000; /* Source ACLK from REFO */ CSCTL4 |= SELA__REFOCLK; Where I think it should be: /* ACLK = REFO = ~ 32 KHz */ vlo_freq = 32768; /* Source ACLK from REFO */ CSCTL4 |= SELA__REFOCLK; Since Sleep() uses the clock for timing and Delay() uses the CPU frequency for timing, this could explain your difference. Pinging @StefanSch
  5. LIJsselstein

    How do you program the G2553 on Linux nowadays?

    I'm using mspflasher and, indeed, another launchpad (5969 or 6989) to program my custom board. Haven't done any online debugging yet (not necessary so far). Some shell scrips help create the info sections and flash the info&program.
  6. LIJsselstein

    CCS import of Energia sketch

    @energia Below is the relevant section from boards.txt: LL-MSP430FR2433.vid.0=0x2341 LL-MSP430FR2433.pid.0=0x0c9f LL-MSP430FR2433.name=LoRa Logger w/ MSP430FR2433 LL-MSP430FR2433.build.mcu=msp430fr2433 LL-MSP430FR2433.build.f_cpu=8000000L LL-MSP430FR2433.build.core=msp430 LL-MSP430FR2433.build.variant=lora_logger_fr2433 LL-MSP430FR2433.build.board=lora_logger_fr2433 LL-MSP430FR2433.upload.tool=dslite LL-MSP430FR2433.upload.protocol=dslite LL-MSP430FR2433.upload.maximum_size=15360 LL-MSP430FR2433.upload.maximum_data_size=4096
  7. LIJsselstein

    CCS import of Energia sketch

    @energiaDo you know if the CCS team is planning to support importing Energia projects for non-launchpad boards? I have an Energia project with a custom MSP430FR2433 board and would like to use the CCS debugging features, but when trying to import the project CCS does not import the board definition as well, it only allows you to select Launchpads.
  8. LIJsselstein

    Telemetry for embedded systems

    Thanks, wat was your criteria for singling out these libraries/protocols? There are a gazillion protocols and software tools that could be used for remote communication, ranging from very simple to very complex, form propitiatory/manufacturer specific to modbus, mqtt and IEC 60870-5. An xkcd cartoon would be appropriate.
  9. LIJsselstein

    I2C - MSP430 to MSP430 problems

    If you see noise than that could be ringing caused by fast rise times of the digital I/O. You can try to add a ~50 Ohm resistor in series the SDA and SDL lines, place the resistor close to the transmitter.
  10. Yes, a collegue and I have been doing all of the above with a G2553 (and other chips like the 28 pin version and the FR2433) using sleep (LPM0), sleepSeconds (LPM3), interrupts, ADC and master/slave I2C. We found two bugs in the I2C implementations and made bugreports and pull-requests for them. At least one pull-request is over a year old and has not been pulled-in, not sure why. So, it depends a bit on your specific situation if you'll run into any problems or not. CCS we found especially useful to do register level debugging of our I2C problems after importing the Energia sketch (which does not work for our custom FR2433 board!) and using EnergyTrace++ (a very very cool tool when doing low power development).
  11. LIJsselstein

    [SOLVED] Assembler Error: odd operand: 6229

    To answer my own question: the error is triggered because, for 16 or 32 bit operations, the variable must be aligned on an even memory address, however the INFOMEM_CORRECTION_VALUE variable was defined on an odd address. Moving it from 0x1855 to 0x1856 solved the compiler error.
  12. I also often have problems with libraries in Energia where the compiler says 'No such file or directory' while the library is clearly installed correctly. In at least one instance I was able to fix this, perhaps this works for you as well: When the "#include <BlynkSimpleTI_CC3200_LaunchXL.h>" statement is in a header file but only the accompanying .cpp file is referencing anything in the Blynk library then you could try to move the #include to the .cpp instead.
  13. I ran into this error while developing a reasonably large application using Energia-1.6.10E18. The minimal code to producing this error is below: File: Someheader.h #ifndef __SOMEHEADER#define __SOMEHEADER// Infomem address for the correction factor. This factor is two bytes long.#define INFOMEM_CORRECTION_FACTOR 0x1855// Read a value from infomem. If not between min and max, return standard valuetemplate <typename T>T readInfomemValueLimit(T min, T max, T* address, T stdValue){ if (*address < min || *address > max ){ return stdValue; } return *address;}#endifSketch:#include <Wire.h>#include "someheader.h"// Calculate the measurement interval based on messages per day, and the time correctionuint32_t applyCorrection(uint16_t value){ uint16_t temp = 1; // Get the correction factor from information memory and make sure it is within specified bounds uint16_t correctionFactor = readInfomemValueLimit((uint16_t)0, (uint16_t)20000, (uint16_t *)(INFOMEM_CORRECTION_FACTOR), (uint16_t)10000); return (uint32_t)((uint16_t)temp * (uint16_t)correctionFactor);}void setup() { }void loop() { //uint16_t someValue = 1; //uint32_t correctedValue; //correctedValue = applyCorrection(someValue);}The compilation output is: The compiler error is is triggered in the line "return (uint32_t)((uint16_t)temp * (uint16_t)correctionFactor);", if you replace the variable correctionFactor with a constant (e.g. 1) then the sketch compiles successfully. The target doesn't seem to matter, the above is for the Launchpad but compiling for my own board with MSP430FR2433 gives the same error. Any ideas why this happens?
  14. LIJsselstein

    MCU recommendation

    Didnt look at the interrupt latency but the PIC24F04KA200-I/ST fits the rest of the requirements, at 100+ it's about $1.2
  15. LIJsselstein

    CCS 7.0 beta available

    I hope CCS7 will be able to import my custom board plus Energia stack. CCS6 doesn't even notice it's there...
×