Rickta59

Global Moderators
  • Content count

    1,090
  • Joined

  • Last visited

  • Days Won

    65

Everything posted by Rickta59

  1. They should have saved that for 4/30 16k of fram, 512bytes of info fram, 4k of real ram and a 32x32 hw multiplier. Not too shabby for $4.30. That is certainly a lot more flexible than the original G2 launchpad and it has the new FET so you can use it on linux. If nothing else you can use it as a programmer for your off chip msp430g2553. #define __MSP430_HAS_MSP430XV2_CPU__ /* Definition to show that it has MSP430XV2 CPU */ #define __MSP430_HAS_ADC__ /* Definition to show that Module is available */ #define __MSP430_HAS_ADC_CHANNELS_8__ #define __MSP430_HAS_BKMEM__ /* Definition to show that Module is available */ #define __MSP430_HAS_BACKUP_RAM__ /* Legacy module name */ #define __MSP430_HAS_CRC__ /* Definition to show that Module is available */ #define __MSP430_HAS_CS__ /* Definition to show that Module is available */ #define __MSP430_HAS_FRAM__ /* Definition to show that Module is available */ #define __MSP430_HAS_GC__ /* Definition to show that Module is available */ #define __MSP430_HAS_MPY32__ /* Definition to show that Module is available */ #define __MSP430_HAS_PMM_FRAM__ /* Definition to show that Module is available */ #define __MSP430_HAS_PORT1_R__ /* Definition to show that Module is available */ #define __MSP430_HAS_PORT2_R__ /* Definition to show that Module is available */ #define __MSP430_HAS_PORTA_R__ /* Definition to show that Module is available */ #define __MSP430_HAS_P1SEL0__ /* Define for DriverLib */ #define __MSP430_HAS_P2SEL0__ /* Define for DriverLib */ #define __MSP430_HAS_PASEL0__ /* Define for DriverLib */ #define __MSP430_HAS_P1SEL1__ /* Define for DriverLib */ #define __MSP430_HAS_P2SEL1__ /* Define for DriverLib */ #define __MSP430_HAS_PASEL1__ /* Define for DriverLib */ #define __MSP430_HAS_PORT3_R__ /* Definition to show that Module is available */ #define __MSP430_HAS_PORTB_R__ /* Definition to show that Module is available */ #define __MSP430_HAS_P3SEL0__ /* Define for DriverLib */ #define __MSP430_HAS_PBSEL0__ /* Define for DriverLib */ #define __MSP430_HAS_P3SEL1__ /* Define for DriverLib */ #define __MSP430_HAS_PBSEL1__ /* Define for DriverLib */ #define __MSP430_HAS_RTC__ /* Definition to show that Module is available */ #define __MSP430_HAS_SFR__ /* Definition to show that Module is available */ #define __MSP430_HAS_SYS__ /* Definition to show that Module is available */ #define __MSP430_HAS_FRWPPW__ /* Definition to show that Function is available */ #define __MSP430_HAS_DATA_FRWP__ /* Definition to show that Function is available */ #define __MSP430_HAS_ADC_PCTLSEL__ /* Definition to show that Function is available */ #define __MSP430_HAS_T0A3__ /* Definition to show that Module is available */ #define __MSP430_HAS_T1A3__ /* Definition to show that Module is available */ #define __MSP430_HAS_T2A2__ /* Definition to show that Module is available */ #define __MSP430_HAS_T3A2__ /* Definition to show that Module is available */ #define __MSP430_HAS_EUSCI_A0__ /* Definition to show that Module is available */ #define __MSP430_HAS_EUSCI_A1__ /* Definition to show that Module is available */ #define __MSP430_HAS_EUSCI_B0__ /* Definition to show that Module is available */ #define __MSP430_HAS_WDT_A__ /* Definition to show that Module is available */ #define __MSP430_HAS_TLV__ /* Definition to show that Module is available */
  2. nothing like a timely response
  3. I went to modify the code at the gist above, however github wouldn't allow me to update. The error message was complaining because I had directories in my gist. It seems directories are no longer allowed on gist.github.com. I fixed the code for the latest msp430-elf-gcc and created a new repo: https://gist.github.com/RickKimball/ead0b3b0f28f0dbf426c51f46ced59 BTW: iomacros.h is fixed now so I removed the custom version I had created.
  4. I've been trying out the new msp430-elf-gcc compiler. I like that we have a supported platform from TI that is part of the standard gcc distribution. However, it seems to have a few nits. If you try to compile a simple c++ program with msp430-elf-g++, it fails because of problems with iomacros.h. I've reported this on the e2e.ti.com forums. In the meantime I put together a fix that seems to work for me. I threw together a gist so you can see how I addressed it: gist.github.com/RickKimball/1303030#file-include-iomacros-h As a bonus you get some assembler code that uses interrupts with the new msp430-elf-gcc to blink an led. You will have to copy my iomacros.h and in430.h into the directory where you downloaded the headers from TI. I've tested this with .c, .cpp and .S files. [Links to e2e.ti.com discussions] e2e.ti.com/support/development_tools/compiler/f/343/t/356902.aspx -rick
  5. I had put neo430 down for almost a year and I'm coming back to it with renewed vigor. I came across this wiki that provides some useful information about getting started with the $15 altera ep2c5 board you find on ebay/aliexpress. http://land-boards.com/blwiki/index.php?title=Cyclone_II_EP2C5_Mini_Dev_Board The most useful info information there might be the tip about setting the default pin state to input with a weak pull up so you don't heat overload the 3.3 regulator. I had noticed the regulator getting hot and didn't realize it was because of some zero ohm resistors on the board that are only used if you are using an ep2c8 model. I cloned the neo430 github project and plan on adding a branch that has changes that are specific to the ep2c5 mini dev board. I plan to upload a Quartus II preconfigured project for neo430. I'll also add a minor change I made to the gpio peripheral which allows you to toggle a pin with a single set statement. No more XORin the existing GPIO value, just set it. This is something I always wished I had on real msp430 chips. Now I can add that stuff myself. Yay me! See my comments on the issue https://github.com/stnolting/neo430/issues/1 BTW: I can now toggle one or more pins with a single asm statement this yield a ~4MHz frequency when used in the tight toggle code below when running the ep2c5 at 100MHz. ... this code ... while (1) { GPIO_TOGGLE = 0b111; } ... becomes this ... <.L10>: be: 6c 4d mov.b @r13, r12 ; c0: 0c 93 cmp #0, r12 ;r3 As==00 c2: 1e 20 jnz $+62 ;abs 0x100 c4: b2 40 05 00 mov #5, &0xffb2 ; c8: b2 ff ca: 7c 40 07 00 mov.b #7, r12 ; initial value of the GPIO port 000000ce <.L15>: ce: 82 4c b4 ff mov r12, &0xffb4 ; this is the GPIO_TOGGLE=0b111; statement d2: 30 40 ce 00 br #0x00ce ; 000000d6 <.L3>: ... -rick
  6. For a long time, I have had an interest in FPGA development. You can find boards that come with a JTAG programmer on ebay for less than $20. The following ebay link shows a board similar to the one I had purchased http://www.ebay.com/itm/361568712810 I experimented with it a lot for a while and then I probably got distracted by some new TI toy Occasionally, I would pick it up and try different things with it. However, the cost and form factor of the chips discourages me from doing anything real with it. For me these things are more of an educational plaything. Yesterday, I noticed the neo430 project on opencores.org. It is an msp430 compatible processor implemented in VHDL. It didn't take me long to get it installed and it actually seems to work pretty well. There are some difference between the neo430 and the msp430. ( see list below for the details ) Using the Altera Cyclone II EP2C5 board I linked above I was able to use the example code to create an msp430 like device with 4K of ROM and 4K of RAM. It runs a serial bootloader over its UART peripheral and allows you to toggle the pins using its parallel port peripheral. It has a simple timer peripheral. It has its own custom peripherals and 'C' header files setup to access those. It comes all setup to use msp430-gcc as a development tool with the device you create. The instructions are pretty complete neo430 instructions , I just followed them to get started. For my Altera chip, I used the free web edition of quartus II 13.0.1 sp1 to convert the VHDL code into a loadable bitstream. Once you load that on to the FPGA chip using the USB-Blaster, a serial terminal is used to interact with the bootloader and upload msp430-gcc compiled files. The provided makefiles automate the msp430 code creation process. I'm using this on linux and I had to make a few changes to point at the directory where my msp430-gcc is installed. If you are windows user it will probably just work out of the box for you. I'll try and post more on my experiments. In the meantime, I thought others might find it interesting. Functional Diagram: Memory Layout:
  7. I thought CCS 7 was 64 bit only on linux, no? http://processors.wiki.ti.com/index.php/Download_CCS You have to go back to CCS 6.1.3 to get a 32 version.
  8. If you have 64bit virtualbox installed maybe you could use a linux guest install and just run the linux version of CCS.
  9. I was trying to port a sketch that used the Serial port with non standard UART parity and character length to Energia. I noticed that the UART port isn't setup to handle anything except 8-N-1. While the code below can't do all the combinations that are available to the atmega, it can do 7/8 bit, even/odd parity and 1/2 stop bits. I created a patch that will at least fix it for the chip I am using (msp430g2553). It will need some work for other chips. Apply the attached patch to the source of the latest Energia source tree. (as of 11/11/2015) -rick (See new optional second parameter https://www.arduino.cc/en/Serial/Begin ) parity.patch
  10. You should try http://dev.ti.com before you write off web apps. This one lets you develop and debug for the msp430s.
  11. Something is certainly wrong with your setup. In the picture you posted, I see it trying to compile using the -mcpu=cortex-m3 flag. That is wrong it would be -mcpu=cortex-m4. Looking at the stuff that is checked into github.com (those seem to be right) However, you can't really trust what is out on github. So who knows. You might look in the Energia15\package directory and find the platform.txt file and verify it has cortex-m4. Never mind ignore this post I read the topic title and it was msp432 .. I didn't look closely at your post. You are using a cc1350 which is a cortex-m3. I'm not sure what is wrong.
  12. Did you read the limitations of the Petit FS? ... Petit FatFs Limitations: Petitfs specifically uses as little flash and stack as possible. This, however, comes at the expense of some functionality. Files are not able be created or increased in size, and only one file can be accessed at a time. ... So if you create a zero length file (open a file in a text editor and save it without adding anything to it), it isn't going to do what you want. If you search the forum or google this is expressed in thousands of posts. The comment above comes from this document: http://www.atmel.com/Images/Atmel-42776-Using-the-Petit-FAT-File-System-Module-with-AVR_ApplicationNote_AVR42776.pdf http://elm-chan.org/fsw/ff/pf/write.html ... Description The write function has some restrictions listed below: Cannot create file. Only existing file can be written. Cannot expand file size. Cannot update time stamp of the file. Write operation can start/stop on the sector boundary only. Read-only attribute of the file cannot block write operation. File write operation must be done in following sequence. pf_lseek(ofs); read/write pointer must be moved to sector bundary prior to initiate the write operation, or it will be rounded-down to the sector boundary at first write operation. pf_write(buff, btw, &bw); Initiate write operation. Write first data to the file. pf_write(buff, btw, &bw); Write next data. Any other file function cannot be used while a write operation is in progress. pf_write(0, 0, &bw); Finalize the current write operation. If read/write pointer is not on the sector boundary, left bytes in the sector will be filled with zero. The read/write pointer in the file system object advances in number of bytes written. After the function succeeded, *bw should be checked to detect end of file. In case of *bw is less than btw, it means the read/write pointer reached end of file during the write operation. Once a write operation is initiated, it must be finalized properly, or the written data can be lost.
  13. "It's a poor craftsman that blames his tools" What are you trying to accomplish? Why are you using a severely under powered msp430g2553? With all the other options available to you why would you flog yourself with this approach?
  14. I had taken a quick glance at the feature list and had noticed that it is supposed to support that feature. I thought I read a further comment stating at some point it starts throwing away old versions to make room. I didn't dig deeper. I thought you might have. While it is all well and good to backup files as they change, it seems like it would make sense for some scenarios to only create a backup if the contents change. However, I can imagine other situations where it would be important to note file timestamp changes. I've noticed that simplistic approaches to backup schemes lead to data loss, while giving the user a false sense of safety that really isn't there. They only find out about an unrecoverable data loss after the fact. Write open source software, share it with all your friends. If you ever lose a file you just reach out for a little help from your friends.
  15. In the 37 years I've been writing code, I've only asked an admin to recover a file for me once. Turns out that file was on a disk that was being backed up by a SCSI tape drive that had been having problems and of course all the tapes were bad. However, it is always easier to write code the second time : )
  16. What happens when you do: $ for rev in $(seq 1000); do cat /dev/null >reallyimportant.c; echo $rev; sleep 1; done How many revisions does it save before it starts throwing out old copies and you end up with an empty c file?
  17. You can hack your gel script: $ diff tm4c1294ncpdt.gel rk1294ncpdt.gel 127a128,132 > OnRestart() > { > GEL_AdvancedReset("System Reset", 1); > } > $ pwd /home/kimballr/ti/ccsv7/ccs_base/emulation/gel
  18. So ... I just used the offline installer to load the lastest CCS 7.1 on ubuntu 16.04 64 bit. I didn't seem to have any issues debugging the blink.ino program. Maybe you could hop on IRC and explain further. [Edit 1] ... I take that back ... I switched to a TM4C1294 and I see it is faulting right away. [Edit 2] ... appears to be faulting in _init() [Edit 3] ... appears to be faulting in timerInit() ... seems to think I have a tm4c123gxl .. and is trying to set the 80MHz clock ... that is where it crashes ... looking at the properties, look at the GNU Compiler/Symbols I see ${ENERGIA_CORE_SYMBOLS} hovering over that it shows the wrong values [Edit 4] doh ... I had selected the wrong board type .. going back to recreate with proper board [Edit 5] ok .. went back selected proper board no fault, debugging works fine. Maybe you want to check which board you used to create your Energia project are you sure you picked the tm4c1294? It seems picking the wrong board TM4C board will allow you to create a file that is upload and then starts to debug but crashes right alway. Maybe this is your problem?
  19. well that intervention doesn't seem all that bad.That is your only issue?
  20. Looking back at your images, I'm not even sure how debugging with Energia and CCS works. My suggestion, is to use openocd and the arm-none-eabi-gdb that comes in the Energia package directory. In ubuntu, run energia and compile your sketch, note where the /tmp/buildxxxx/ files end up that is where you find the .elf file. Then open two xterms, in one run openocd and in the other run the gdb: [in xterm 1] ... $ openocd -f board/ek-tm4c1294xl.cfg [in xterm 2] .. $ $HOME/.energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-gdb -q -ex 'target remote :3333' /tmp/buildxxxx/yoursketch.ino.elf Reading symbols from /tmp/buildf952838f75b6bd4033bf414decbd1185.tmp/sketch_mar21a.ino.elf...done. Remote debugging using :3333 0x0000041a in delayMicroseconds (us=us@entry=500) at /home/kimballr/.energia15/packages/energia/hardware/tivac/1.0.2/cores/tivac/wiring.c:110 110 elapsedTime = (startTime-(HWREG(NVIC_ST_CURRENT) & NVIC_ST_CURRENT_M )) & NVIC_ST_CURRENT_M; (gdb) mon reset init adapter speed: RCLK - adaptive tm4c123gh6pm.cpu: target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x000002a8 msp: 0x20008000 (gdb) b ResetISR Breakpoint 1 at 0x2a8: file /home/kimballr/.energia15/packages/energia/hardware/tivac/1.0.2/cores/tivac/startup_gcc.c, line 432. (gdb) c Continuing. Note: automatically using hardware breakpoints for read-only addresses. Breakpoint 1, ResetISR () at /home/kimballr/.energia15/packages/energia/hardware/tivac/1.0.2/cores/tivac/startup_gcc.c:432 432 void ResetISR(void) { (gdb) -rick
  21. I don't have the arm compiler stuff installed in my CCS install, however I did install the tivac library into energia 1.6.10E18 and then tried to debug it with the arm-none-eabi-gcc tools I have installed on my linux setup. I have arm-none-eabi-gcc version 6.2.1 as my default. It won't debug the .elf file generated with the energia compiler which is arm-none-eabi-g++ version 4.8.4. If I use the arm-none-eabi-gdb in from the energia packages with openocd: $ /home/kimballr/.energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-gdb -ex 'target remote :3333' sketch_mar21a.ino.elf It works fine. I can set a break point on ResetISR without issue. $ /home/kimballr/.energia15/packages/energia/tools/arm-none-eabi-gcc/4.8.4-20140725/bin/arm-none-eabi-gdb -q -ex 'target remote :3333' sketch_mar21a.ino.elf Reading symbols from /tmp/buildf952838f75b6bd4033bf414decbd1185.tmp/sketch_mar21a.ino.elf...done. Remote debugging using :3333 0x0000041a in delayMicroseconds (us=us@entry=500) at /home/kimballr/.energia15/packages/energia/hardware/tivac/1.0.2/cores/tivac/wiring.c:110 110 elapsedTime = (startTime-(HWREG(NVIC_ST_CURRENT) & NVIC_ST_CURRENT_M )) & NVIC_ST_CURRENT_M; (gdb) mon reset init adapter speed: RCLK - adaptive tm4c123gh6pm.cpu: target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x000002a8 msp: 0x20008000 (gdb) b ResetISR Breakpoint 1 at 0x2a8: file /home/kimballr/.energia15/packages/energia/hardware/tivac/1.0.2/cores/tivac/startup_gcc.c, line 432. (gdb) c Continuing. Note: automatically using hardware breakpoints for read-only addresses. Breakpoint 1, ResetISR () at /home/kimballr/.energia15/packages/energia/hardware/tivac/1.0.2/cores/tivac/startup_gcc.c:432 432 void ResetISR(void) { (gdb) You might want to check that the gdb being used in CCS is the same version as the one being used in your energia install. -rick
  22. Also, are you using an msp430g2553? If so, you probably want to use the PUSH2 constant instead of 33.
  23. Don't you want to read the ButtonOne as INPUT?
  24. FWIW: using energia to program an msp430g2231 is an exercise in frustration. If you really want to use this chip, you would be better off using the TI C samples and the CCS IDE. Energia has been becoming less and less friendly to the smaller msp430g series for a long time. It is really focused on the higher end boards like the msp430f5529, msp430frxxxx boards, and msp432. Much of the msp430g support is broken in Energia 1.6.10E18.
  25. For a variety of reasons you can't use 16MHz on the msp430g2231 without a lot of hassle. The answer to your problem was given over in this thread recently: