Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by vladn

  1. Tiva-C. Tried switching modules with setModule() and also instantiating two SPIClass objects. Did not work. However I found a workaround at the HW level so the issue is resolved for me. (Problem was that the OLED display did not have CS input and I have other SPI devices)
  2. Is there a way to use multiple SPI modules simultaneously in Energia ? Switching modules on the fly with setModule() does not seem to work properly for me.
  3. I gave up for now. Switched back to Tiva-C and the serial monitor works as it should. Also the build is noticeably faster. I do like the MSP432 for many reasons, but will probably wait for better Energia support or use the CCS.
  4. I get this message 80% of attempts to start the serial monitor in Energia 16 on win10 using the MSP432 launchpad. Have to restart Energia few times to get it running. There are no confilcts in the ports section of the windows device manager. Drivers came with the latest CCS. Any ideas ?
  5. Thanks. Here is how the menu looks on my computer with font smoothin off
  6. Interesting. Adding "editor.laf=..." string to the preferences.txt (on Windows) did not change anything in my case. I do not have JRE installed, only what comes with the Energia. (BTW how to upload an image to this board ?)
  7. I know how to change the editor font - it is well documented. I am curious if it is possible to change the IDE menu font, and if not - the name of the font used for the IDE menu.
  8. Which font is used in the Energia IDE menu in Windows ? Asking because I normally disable OS font smoothing on large, medium DPI monitors and the menu font looks particularly ugly without smoothing. Is there a way to change the IDE menu font via the preferences.txt ? If not - I can do font substitution in the registry, but I need to know which font the IDE uses for menus.
  9. I think I should be able to build a "fuse blower" re-using some code from LowLevelFunc430.c (slau320q.zip). Then the emulator portion of a LP can be used as a programmer and the LP target as a dedicated fuse blower for external targets. I am not going to spend much time on this, if it works right away - I'll post the code, if not - I'll get the FET (old or new). Regarding the user firmware upgrade options. I want it to work with any generic USB UART with no dedicated pins (like cheap ebay dongles). Plus I want to add simple firmware encryption. Hence I think I'll avoid the built-in BSL alt
  10. I am also entering a "semi-production" phase and have few questions: 1. What is the least expensive gadget to blow the security fuse in G2 series ? Is there anything cheaper than TI MSP-FET ? 2. Do I need full JTAG access to blow the fuse ? (the PCB is small and fitting the standard 14pin connector is difficult) 3. User firmware upgrade via BSL seem to require toggling RST/TEST lines in a certain sequence. It seems that one needs more than a plain USB-UART thingy to trigger BSL ? edit- From reading slau320 it appears that it is possible to blow the poly fuse using only SBW pins (SBWTCK
  11. Are there any serial (I2C, SPI etc) graphics display with a built in 2D acceleration ? At a minimum I need very fast and flicker free BITBLT for smooth panning. Ideally the 2D engine should have line draw, rectangle fill and character draw primitives. I do not need color but it has to be fast (no ghosting). I guess this limits the choice to TFT or OLED.
  12. I have tested the scheduler library only with the Energia framework. I have CCSv5 but I used it solely for msp430 projects and do not have it configured for Tiva. I'll look into it when I get some spare time, could be memory allocation issues or unsupported pragmas, hard to say...
  13. The beauty of a coop task switcher for simple projects is that there is no true concurrency . If you are inside a loop or a task - nothing else executes, unless you call yield or exit the loop. Hence you can use simple flags and not worry about reentrant functions, atomic operations, mutexes and such... There is a more sophisticated task switcher code in the Arduino external libraries. I personally like the minimalistic approach of this simple switcher. The next step is too serious IMHO and somewhat specific to the chosen RT paradigm.
  14. It is technically possible, however since it is a cooperative scheduler such measurements can be easily done outside the scheduler library if required. Task scheduling, prioritization and time stamping in a serious RT system is a complex issue and IMHO is outside the scope of the simple cooperative context switcher. This is a realm of RTOS and system design.
  15. According to the "Procedure Call Standard for the ARM® Architecture" document the floating point registers S16-S31 should be saved by the callee. Hence to be fully compliant, the coop scheduler for the M4F core should have these saved in the task context. For efficiency reasons perhaps an explicit flag should be used during the loop/task spawn (so that S16-S31 saving occurs only if the loop/task uses the FPU). This is a fairly easy mod to the Scheduler library. I'll probably do that when I get some spare time.
  16. Is there a way to get an assembler listing using Energia (ideally a mixed c / assembler listing) ?
  17. @@energia One more question - does the Energia ARM compiler perform global/interprocedural register allocation ? The original scheduler code does not save the floating point registers in a task context (Arduino Duo is M3 core I think). Hence if global global/interprocedural register allocation is used I need to add floating point registers to the task context. On the other hand if it is not used in Energia I can do the opposite - reduce the task switching context to the stack pointer and link registers only :-).
  18. @@energia 1. Pull the latest wiring_analog.c and the TServo library from my Energia clone: https://github.com/vladn2/Energia 2. Build the TServo "three_async_servos" example. The .bin should come up normal (my latest version of wiring_analog.c uses float). 3. Change the "float" to "uint64_t" inside PWMWrite() inside wiring_analog.c (there is only one place). 4. Build the example and check the size of the .bin file. Let me know if you can reproduce the problem.
  19. Perhaps someone with more experience with GCC flow can look at these objdump -x outputs and get some idea. The only change between the two projects is "uint64_t" changed to "float" in one place inside the PWMWrite(). using uint64_t (.bin file 512Mb): 1.txt using float (.bin size 3876 bytes) 2.txt
  20. It is under "closed" issues on github: https://github.com/energia/Energia/issues/247 But the problem I described seems unrelated. The .elf looks normal (to my untrained eye) yet the .bin is huge. The problem seems to happen during the objcopy.
  21. The linker seems to have a sporadic problem (huge .bin files) with uint64_t that I used in the updated PWMWrite(). Changed the type to float and things seem to work OK now. Please use the updated version: wiring_analog.c Also added support for the floating point angle to the TServo TServo.zip Updated code also posted to github: https://github.com/vladn2/Energia/
  22. I think I found the culprit - uint64_t seem to confuse the linker in certain cases. Since it works sometimes perhaps the problem is related to the alignment ? I used uint64_t to avoid overload in the duty cycle computations in my variant of the PMWWrite(). I switched to float and so far everything is stable.
  23. Nothing abnormal in .elf (using objdump) as far as I can see, but the .bin is messed up (under XP x64 and 8.1 x64). I'll try this weekend to isolate the case.
  24. I have a strange problem with Energia. On certain simple projects it generates huge (512M) .bin file and hangs during the upload, although the binary sketch size reported in the shell is perfectly normal. It is reproduceable, but I can not find what in the code triggeres it. Has anyone noticed something similar ?
  • Create New...