Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by zeke

  1. zeke

    Why Altium?

    Nah, don't hire an Autocad engineer. There are plenty of people out here who can drive Altium. The special people are the ones who can drive Protel, Altium, Orcad, Pcad, or PADS. They are CAD agnostic. I have met a few of them over the years. I have been using Altium/Protel since the 1990's. It was the easiest program to drive back then and I had access through work. In my neck of the woods, there are a lot of people who use Altium. We have a local guy who is pretty well known as a contract Altium guy. It takes coaching to bring someone up the learning curve. If that person is excited about learning it then it becomes a happy task to climb the learning curve.
  2. I was reading the latest Embedded Muse newsletter from Jack Ganssle when I spotted this link: Akin's Laws of Spacecraft Design They seem to be akin to Murphy's Law. I am chuckling at a few of them. I thought some of you might get a laugh from them as well. Enjoy!
  3. zeke

    Places we buy things...

    I am considering buying something from banggood.com. Is this a good idea or am I taking a risk?
  4. zeke

    PCB Standards

    For those who are looking for comprehensive PCB standards, take a look at the IPC Designer's Council Reference Materials webpage. I personally think that this pcb design guide is amazing.
  5. Howdy! While hunting for the ipc component identification desk reference, I stumbled across IPC's Media Training and Certification for Electronics Assembly. The webpage has a whole bunch of training info on electronics assembly. I think they are trying to show you what kind of training programs you can purchase from them. For example, this is a low res video on how to do lead-free hand soldering. Still, I think this stuff is cool.
  6. zeke

    IPC training information

    A ridiculously long time ago, I took PACE solder training. At the time, someone said it was the training program that NASA employees had to take to be one of their solder jockies. I’m count it as one of the best investments that I ever made in my career. I think of soldering as one of my superpowers now.
  7. zeke

    tiny msp430 preemptive multitasking system

    We have to unpack all that is going on in that get stack pointer statement. The function getstackpointer() returns a value. The (int*) transforms that into “the address of that return value” which will be 16 bits large. Then that 16 bit address is assigned to the multi stack variable. The author is asking us to modify the list of function names in the taskpnt function since (s)he doesn’t know what we will be doing. So that is up to us. So task1, task2, and so on, are functions that we write to do one specific thing. Something atomic, like SwitchOnLED(LED1) or SwitchGPIO(P1-7), etc. Does that make sense?
  8. zeke

    MSP432P401R SD card interface

    Maybe I am thinking of the PetiteFS way of using an SD card but doesn't that SD card need to be first formatted on a PC and have a file created as well? Then, the MSP430 would access the SD card, open up the pre-existing file, and then write to it? I would verify the SD card on a PC first by formatting it then creating an empty text file on it. Then, get the MSP430 to see it then open it. Double check the wiring of the card. And make sure that you have a really good +5V power source for that SD card. I have read that they want a bunch of current to operate properly. And, I suspect the dev board cannot supply that much current on the +5V line. Gotta verify that too.
  9. zeke

    tiny msp430 preemptive multitasking system

    First thing, the snippet you posted seems to be incomplete. I cannot see the closing parenthesis. Next, the code is initializing a data structure (called multistack) that will serve as The Stack. When this code runs, the author does several things with The Stack: Saves the SP register value (which is the present location/address of The Stack Pointer) Checks to make sure that there are no more than "tasks" numbers of tasks. Initializes the index of The Stack so it knows where it is in The Stack Stores a task pointer into the stack (he calls it the PC - probably Program Counter) Stores the state of the GIE register (Global Interupt Enable register) Then makes space for 26 bytes of information in The Stack (he calls them 16 bit Words + 2 for wastage[see his post above]) This is the kind of operations that an operating system will do when it wants to stop doing one thing, switch context, and start doing another thing, complete that, then come back and continue doing what it was doing before the interruption. Does that make sense?
  10. zeke

    tiny msp430 preemptive multitasking system

    @MadMayonnaise They are called Function Pointer Arrays. I love them. I have been using them extensively to create my CLI - Command Line Interpreter. I can add a new command just by defining a new entry into an array. They are an alternative to the Gigantic Switch Statement style of coding. To get you started, here is an article from 1999 by Nigel Jones: How to Create Jump Tables via Function Pointer Arrays in C and C++ I also found the book Programming Embedded Systems in C and C++ by Michael Barr to be exceptionally helpful. Chapter nine specifically.
  11. I thought we should have a post that we collect useful PCB guidelines, tips, tricks and calculators in. Here's some contributions: 1. UltraCad's PCB Calculators and Tools 2. Saturn PCB Design Toolkit 3. High Speed USB Platform Design Guidelines 4. Dave Jones' PCB Layout Tutorial 5. TI's PCB Design Guidelines For Reduced EMI 6. Altera's High-Speed Board Layout Guidelines 7. SMPS' Power Supply PCB Design Guidelines 8. Maxim's General Layout Guidelines for RF and Mixed-Signal PCBs 9. High Voltage PCB Design 10. Op Amps for Everyone - Chapter 17: Circuit Board Layout Techniques I think I touched on most of the important design topics. Low noise A2D pcb design is one I didn't track down yet.
  12. zeke

    PCB Calculator Programs

    You are welcome @radcliffkaty1
  13. Hi Everybody! I have eight or nine clock ring PCBs here that I am thinking of selling. This is what they look like with the LEDs installed: This is what they look like in operation: This is what they look like in operation when installed in the Ikea Clock: Purchase options: Bare board Bare board with LEDs and Ikea clock Populated board Populated board with Ikea clock Would anyone be interested in buying one of them?
  14. As mentioned in your other post, yes, it appears that the APA107 is a drop in replacement for the APA102 LED. APA107_RGB.pdf
  15. zeke

    APA102 - simple to drive RGB leds

    @pololu The communication scheme, the physical footprint, and the pinout all appear to be exactly like the APA102 so it looks like the APA107 is a drop in replacement. APA107_RGB.pdf
  16. zeke

    Bosch Sensortech BME280

    @mph Thank you for sharing this with us. 👍
  17. zeke

    MSP430G2553 Workshop

    @Markers Excellent! I am glad that you found a solution! Yes, putting the msp430 into low power mode is a great way to complete the processing of the infinite while loop in main(). Is this what your main() function looks like now?
  18. zeke

    MSP430G2553 Workshop

    @Markers Excellent! I am glad that you found a solution! Yes, putting the msp430 into low power mode is a great way to complete the processing of the infinite while loop in main(). Is this what your main() function looks like now?
  19. I just stumbled upon a program called SKiDL. Never use a lousy schematic editor again! SKiDL is a simple module that lets you describe electronic circuits using Python. The resulting Python program outputs a netlist that a PCB layout tool uses to create a finished circuit board. The author then uses KiCAD to massage the netlist information to complete the PCB layout. I can't say that I will be using this myself but I admit that it's a novel new way of creating circuits. YMMV.
  20. zeke

    MSP430G2553 Workshop

    @Markers I have taken a quick look at your code and the first thing that I can see is the many function calls inside of the interrupt routines. They will upset the accuracy of your timers. Especially, that FlashLED() function call. Yikes! What you can do is use two flags to keep track of servicing that interrupt. The first flag will indicate the interrupt has fired eg: "T1_Fired". The second flag will tell the main while loop that it has or hasn't been serviced eg: "T1_Serviced". Inside the ISR, set the T1_Fired flag instead of making a function call. Then, in the main while loop, test for each of those flags. If that flag is set and it hasn't been serviced then call that function to react. For example: main { ... while(1) { if( (TRUE == T1_Fired) && (FALSE == T1_Serviced) ) { FlashLED(); T1_Serviced = TRUE; } if( (TRUE == P2_Fired) && (FALSE == P2_Serviced) ) { StartTimer_Or_Whatever(); P2_Serviced = TRUE; } ... } } Make sure to get the printf's out of the ISR's as well. They can crash your program if you exhaust the stack inside of the ISR. Again, use a flag to tell the main while loop to print out stuff. Does that help?
  21. zeke

    Detect if bluetooth is paired or not

    @biza For us to help you, you have to provide a lot more information. What processor are you using? What programming environment are you using? What software tests have you performed? Can you show us some software that you are testing? What specific question(s) are you asking us?
  22. zeke

    MSP430FR6989: Serial port monitor is not working

    @Salibensuleiman Thank you for sharing your solution with us!
  23. Could this be a utf-8 font issue?
  24. My gut instinct would be to add an additional condition (a timer) to that while loop. I don't work with that processor so I am not sure of the implementation but here's my pseudo code: while ( (pcb != NULL) && (thisTimer <= ARBITRARY_MAX_WAIT_TIME) ) { ... } I don't know if that makes any sense to do it that way, but that is how I am thinking. Add in a second variable that *you* have control over. Then you can have a measure of sanity of something goes off the rails. YMMV
  25. zeke

    One Wire Controller booster

    Yeah, I built that. I was inspired by something similar a friend of mine created about ten years ago. I also found the book Programming Embedded Systems in C and C++ by Michael Barr to be exceptionally helpful. Chapter nine specifically. So, back when I discovered the loss of my marquee clock code, I went on a rampage to re-write the lost code. The first thing I did was figure out how to write a command line interface parser equal to or better than my friend's cli. Initially, for some reason, I wrote an AT command parser for the marquee clock. But, I found it to be unfriendly. So, I re-wrote it as a human friendly variant. I pulled that cli into this data logger when I decided to go on a sprint to develop this code. Now I am on a rampage learning how to program in PyQt5. I am hoping to have a proof of concept SCADA program. Hopefully, I will have something to demonstrate when I meet up with some friends at the end of the month.