Jump to content

greeeg

Members
  • Content Count

    561
  • Joined

  • Last visited

  • Days Won

    53

Reputation Activity

  1. Like
    greeeg got a reaction from bvandenbon in RGB 4x4 button thing   
    Built a second prototype to test out the smaller 0404 LEDs. I thought they might have better colour blending because the LED dies are closer. But the silicone buttons already do alot of that. They don't appear to make much difference.

    The LED dies are of similar sizes, so the 0606 size is the same brightness of the 0404.


    At the brightness I'm running at makes the TLC a little warm, but not too much. On the next PCB rev I'll add some thermal vias on the TLC's exposed thermal pad.

  2. Like
    greeeg got a reaction from timotet in GPS logger for a local Beagle club   
    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. Like
    greeeg got a reaction from zeke in GPS logger for a local Beagle club   
    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
  4. Like
    greeeg got a reaction from Fmilburn in GPS logger for a local Beagle club   
    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
  5. Like
    greeeg got a reaction from tripwire in GPS logger for a local Beagle club   
    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.
     
     
  6. Like
    greeeg got a reaction from PTB in GPS logger for a local Beagle club   
    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.
     
     
  7. Like
    greeeg got a reaction from zeke in GPS logger for a local Beagle club   
    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.
     
     
  8. Like
    greeeg got a reaction from timotet in GPS logger for a local Beagle club   
    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.
     
     
  9. Like
    greeeg got a reaction from Fmilburn in GPS logger for a local Beagle club   
    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.
     
     
  10. Like
    greeeg got a reaction from dubnet in GPS logger for a local Beagle club   
    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.
     
     
  11. Like
    greeeg got a reaction from bluehash in GPS logger for a local Beagle club   
    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.
     
     
  12. Like
    greeeg reacted to bluehash in MSP430 analog clock   
    Came across this while browsing.
    MSP430 Analog Gauge Clock

     
     
  13. Like
    greeeg got a reaction from yyrkoon in Logic Analyzers   
    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.)
  14. Like
    greeeg reacted to zeke in Logic Analyzers   
    @@yyrkoon
     
    Joe and his brother built the company from the ground up. Their software was written in house. Their product is top notch. They are good people.
     
    EEVBlog has done a teardown.
     
    And another one here.
     
    If the Saleae isn't your cup of tea then maybe you might like the Open bench Logic Sniffer instead?
  15. Like
    greeeg reacted to spirilis in XT2 / 3 frequency (50% duty cycle) on MSP430F5510 pin output   
    just curious what's the sample rate for your logic analyzer?
  16. Like
    greeeg got a reaction from chicken in [POTM] dAISy - A Simple AIS Receiver   
    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.
  17. Like
    greeeg reacted to chicken in [POTM] dAISy - A Simple AIS Receiver   
    More fun in the lab

     
  18. Like
    greeeg reacted to spirilis in edX course Real-Time bluetooth Networks - Shape the World   
    I'm doing Lab #2 right now, which is where you write your first RTOS scheduler and make the whole time-slicing scheduled thread concept work for the first time... and I just want to add, this is a ton of fun!!!
     
    Class is taking more time to go through than I thought it would, mostly the lectures, but I'm making time for it here and there.  There are 6 sections to the class and only 1-5 are up right now, #6 I think is the actual communication with the CC2650 Bluetooth Low Energy coprocessor (where you use either the TI CC2650 BoosterPack or the CC2650 LaunchPad in boosterpack mode).  The bulk of the code being run here is already written by the professors in the "BSP" library, e.g. for communicating with the LCD and drawing lines/text, reading the temperature sensor, accelerometer, etc.  Your job is just to learn the specific core facilities that an RTOS provides.
     
    The "magic" of an RTOS and simulating multiple threads on a single CPU wasn't as complicated as I thought, and while the particulars of this course only teach ARM's specific way of context switching I generally understand the analysis required to implement this on another chip:
     
    1. Understand exactly which registers get pushed onto the stack when an interrupt occurs and in which order
    2. Push the remaining registers
    3. Know exactly how to exit an ISR correctly - the actual context "switch" relies on this
  19. Like
    greeeg got a reaction from yyrkoon in Personal CNC PCB routers   
    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/
  20. Like
    greeeg got a reaction from zeke in Mailbag   
    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.
  21. Like
    greeeg reacted to RobG in MSP-EXP432P401R Pre-Production (black PCB) LaunchPad to be Phased Out   
    Black MSP432 LP used XMS silicon, so it was obvious that sooner or later the board will be updated and $4.32 sale was a signal of the coming change.
  22. Like
    greeeg reacted to Fred in Mailbag   
    I'm not sure if this quite counts as "mailbag" as it's a bit big, but this was delivered recently. A nice new workshop for the end of the garden that I'm currently busy kitting out with workbenches, power, ethernet, etc. It obviously also required the purchase of some more power tools to do the job.
     

  23. Like
    greeeg reacted to jazz in Personal CNC PCB routers   
    At the time when price for fabricated PCB's was high, I made complete standalone software for PC / micro side for G files with 2 mill / drill tools.
     

     
    At the time when I started building hardware for it, PCB's price go down, and I gave up. Didn't see any reason for it anymore. I agree with greeeg.
     
    For prototypes I use p2p.
     

  24. Like
    greeeg got a reaction from yyrkoon in Personal CNC PCB routers   
    @@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.
  25. Like
    greeeg reacted to Fred in Personal CNC PCB routers   
    I didn't find milling PCBs to be very effective. It was OK for through hole stuff but for anything finer it was too difficult to get good results. The only plus was the fact that the isolation routing and drilling always lined up perfectly.
     
    I got on much better with photoresist, with results similar to terjeio's above. It was fun but I realised it would often take me two weeks to find the few free hours I needed for etching, so no real time saving in the end. Do it if you enjoy it and like the challenge, not to save time or money.
     
    CNC milling is however great for making enclosures and random stuff like that.
×
×
  • Create New...