Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


greeeg last won the day on September 26 2018

greeeg had the most liked content!

About greeeg

  • Rank
    Level 3

Contact Methods

  • Website URL

Profile Information

  • Gender
  • Location
  • Interests
    Electronics, CNC Machinig, PCB design and manufacture. Prototype assembly. C, C++ embedded firmware.
  • Sparkfun
  • Github

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @Peabody The MSP430F5514 does have a default USB based BSL. (It's located in FLASH and can be user modified) I wanted to create a firmware upgrade process that anyone could perform. Copying a single firmware.bin is easier for a non tech savy to grasp. Additionally to enter the integrated BSL extra hardware changes are required. the PUR pin must be held high while the RST pin is toggled. This has an advantage that even a bad firmware cannot brick the bootloader. I would have liked to add some additional circuitry to enable this feature. (Hold down button for ~15 seconds to enter bootloader mode). Because my hardware lacks an extra button I opted to roll my own. I'd say it works pretty well.
  2. Finally got around to coding a bootloader for this project. I'm posting version 0.1 here for reference. Lots of times people seem to have trouble with bootloaders (I put off writing one for ages) But this should show you can start simple, and optimise later. The code right now is very rough. But is written in a way that could allow updating of itself it the help of a bootstrap Application. ie: Load new application which when run loads a new bootloader. This bootloader isn't 100% fool proof, if a bad app is loaded that fails to perform as a USB MSC then the user cannot use the USB port to load a new firmware file. but the SD can always be removed and a file copied from a PC if required. Worst case a debugger is required (Which is how they run right now) Memory Map Here is the memory map I've adopted. The bootloader fits at the top of FLASH, the default reset vector always runs the bootloader. The bootloader uses petiet FatFS to read "firmware.bin" off an SD card. It checks the file integrity with a CRC16 integrated into the firmware.bin file on a PC after it was compiled (last word of file). If the file is valid it check the current apps CRC, if they match then app runs. (Application already loaded). If they do not match the Application flash is erased and the new app loaded. Running the Application When launching the app it's CRC is checked to ensure it has loaded correctly. (This shouldn't happen, but you never know...) The App's Interrupt vectors are copied to top of RAM, and SYSCTL.SYSRIVECT is set. The address at the apps reset vector (0xDFFC) is called. Application changes Due to the construction of this bootloader the app needs to have a few changes made, specifically to the linker script. Reduce FLASH boundaries to remove bootloader area Shift Interrupt Vectors to alternate location in flash. (the app doesn't need to know its vectors will be moved to RAM, they just need to be in a fixed location so the bootloader can do that) Remove top 128 bytes of RAM (This is where the new interrupt vectors go. but default this is where the stack is initialised. which will damage the interrupt vectors) Create .crc section (Ensure a fixed WORD is placed to hold our CRC value.) I set up a build setting to output a Binary file format which I run through a simple C program to compute and fill the CRC value. These are all run automatically when the app is built. Improvements Reduce code size (I have a feeling an SD bootloader could squeeze under 4kb, right now it's at ~6kb) Improve speed, I'm not using the DMA, which could be used to improve speed (Update takes ~10s) Utilise High memory (Right now I'm not enabling the use of high memory, the MSP430F5514 has 17kb in >0x10000 address range.) High memory could be utilised to hold the bootloader this would free up (~7.5kb ) that the Main app could use. gpsLoggerBootloader_0.1.zip
  3. This project was put on hold over the holidays. It's always a busy time, plus the club doesn't hold meets over summer. But I have just completed another 10 units. More of the same, but thought you guys might enjoy some more photos. I couldn't get the same batteries as the last batch, which were 650mAh, these have much smaller 220mAh. But this still provides about 4 hours of run time. The uBlox GPS modules are a huge improvement. Even without the SAW filter in the RF path and the sub-optimal PCB size compared to the antenna. These find more GPS satellites faster than the G.top modules, plus they also use glonass which doubles the visible satellites.
  4. I would say that for a typical application the cost COULD pay itself off VERY quickly with time saved debugging. Of course it does depend on what you do. Often hobbyist/small commercial projects that's not so true. I personally have a OpenBench Logic Sniffer. (Which is compatible with Sigrok) I've really only used it a handful of times, The best example from my use case was reverse engineering an old B/W LCD module that I wanted to use in my project. But typically I'm much more productive with a Scope. (But of course limited to 4 channels.)
  5. You should try some larger needle tips. My pickup tool is a small DC motor pump + PVC tubing and Luer-loc syringes, I've found switching to larger diameter tip enables me to pickup larger parts TSSOP and 32 pin TQFP.
  6. I personally Haven't used it on my router, but I've installed it and looked around, FlatCam might be a good choice, Takes PCB gerbers directly (Can use any EDA tool) And it generates isolation tracks around your copper in G-code. Cross platform too! http://flatcam.org/
  7. For typical 3d milling I've had great success with Fusion 360 (free for hobbyists and small <$100K/yr startups) (windows only) for creating G-code. You'll then need to feed that G-code into Mach-3 to actually run your machine. I doubt having the part submerged in water is a good idea. (also tub doesn't look big enough) From my understanding coolant's main purpose it to extract heat as-well as remove chips from the cutting area. A submersed part will not aid with the chip evacuation. Lastly I believe that the spindle will require water cooling, but that is a completely separate cooling loop from the part coolant. This is purely to cool the spindle motor itself.
  8. greeeg


    It's weird that they do that, given that I believe it all comes from digikey's warehouse. I just got a new (to me) air filter (a purex fumecube 2). and I bought a Hakko Fume extractor nozzle to pair with it. Hakko obviously wasn't designed for the Purex and didn't fit....so I had an excuse to 3d print an adapter + cap. Already love it, it's great being able to look right over your work and not have to worry about flux smoke. The Hakko arm moves around easily but stays pretty rigid as you can see. I'm sure future me will be grateful in avoiding smoke damage to my lungs.
  9. I have used sample programs in the past as a Hobbyist back in high school. I don't believe that it was strictly against their T&C back then. But given the growth of electronics over the past 5 years I can see a samples program getting out of hand. Pretty sure all the big companies require .com corporate emails. Personally I don't understand samples. Surely the couple of dollars worth of chips is almost a drip compared to the NRE costs of a typical commercial project?
  10. @@yyrkoon Double sided alignment - I believe that you can use some form of holes and pins to re-align the PCB. This may have gotten better, but I never had a good workflow. Your CNC probably needs a nice fixture plate to make this reliable. Plated Through holes - Fair, enough. (This is a show stopper for me) Small SMT parts - I haven't seen a milled PCB that went below 0.65mm pitch TTSOPs. You should be fine for SMT passives. Commercial solutions - I was talking about a commercial PCB prototype plotter. My only experience was with this (http://www.lpkf.com/products/rapid-pcb-prototyping/circuit-board-plotter/protomat-s63.htm) (From memory, roughly a $20K machine.) Prototype being different from final design increases the total time spent designing, and if you're using high speed signals (USB, LVDS, 50 Ohm transmission lines) Really depend on the design and board geometry. I feel like I'm in the same boat as @Fred, And my opinion is biased against cheap in-house prototyping. Personally fabricating PCBs is not fun for me, designing / assembling and testing are the parts I find fun. So I'm more than happy to pay for someone else to do it reliably and work on another aspect of the project while I wait. I really like the results from @terjeio's laser plotter, I think that's a much better solution than milling.
  11. My personal opinion is not worth it. Based on the following points Double sided boards are not easy No plated through holes Most of my designs are fully SMD (0603 or smaller) often with QFNs or TTSOPs DIY setups require ALOT of time to tune/setup Commercial solutions are VERY expensive (paying for the time to develop a reliable machine) Minimum space is size of cutting bit (typically >0.4mm) No soldermask Prototyped designs are significantly different to Fabbed designs This might seem like I'm complaining about things that don't matter. But if you compare a milled PCB and a professionally fabbed PCB from a batch Chinese service, they're worlds apart. I've played with Toner transfer, photosensitive ink transfer, and milled PCBs. Out of all photo-sensitive was the best most repeatable, but my lab space is not setup for making PCBs. It just takes me too long to setup and pack down all the equipment. Photo-sensitive has the advantage that the same process repeated will give you a solder mask. We have a LPRF ProMat S63 at uni, it's an amazing machine. But the upfront cost and cost for PCB blanks and operating costs (broken bits mostly) don't make it an attractive offer. I would much rather timeline a 5 day wait for PCBs from china into my projects. Just my thoughts, If your prototypes are primarily single side, with larger components. Or if you use alot of through hole parts. It should be a good fit.
  12. P1_7, P1_6, P2_4, P2_3 are all connected to LEDs as your schematic shows. If you are using pull-downs on these pins you will probably have a small current flowing through these LEDs. Likely not enough to light them, but larger than the power drawn by the MSP430.
  13. greeeg

    gpio interrupts

    Isn't this still producing the wrong result?? After negating , if you add you'll get an overflow.... (~BIT0) + (~BIT5) == (~0x01) + (~0x20) == (0xFE) + (0xDF) == (0x1DD) If you insist on negating within brackets then you should be using AND operations to receive the required result, not ADD. (~BIT0) & (~BIT5) == (~0x01) & (~0x20) == (0xFE) & (0xDF) == (0xDE)
  14. Achieving ultra-low power can sometimes take a bit of work. It might be helpful to see a circuit diagram. If you have a pull-down resistor with a logic HIGH applied you will have power loss through that resistor (for example your serial lines?) Are there any other parts fitted on your custom PCB? Just having the debugger connected adds additional power loss, even when the MSP is in LPM4.
  15. @@veryalive Yes. Take a look a little further down. The single user license can be installed on up to two PCs.
  • Create New...