Senior Design Engineer

Biography has not been added


's contributions
    • My entry had intending, but it disappeared when I posted! Please pretend there is the appropriate indentation.

    • Rob, I'm with you. Wirth-style syntax can produce code that the customer can actually read and understand. Rather than: for (counter = 0; counter == 10; counter++) { if (temperature == setPoint) { turnPowerOff(); } } we can have for counter := 0 to 10 do begin if temperature = setPoint begin turnPowerOff; end end and don't get me started on: or (uint32Counter = 0; uint32Counter == 10; uint32counter++) { if (uint32temperature == uint32setPoint) { turnPowerOff(); } } The funny thing is that the Wirth-style programming results in exactly the same machine code. I miss programming in Pascal!

    • I keep an engineering notebook and when I've finished a project, put it into our documentation system. This is a different approach to "The engineering notebook is top secret. No boss should have access to it". What I do add is that the document is unsupported and not reviewed. This way I don't have to worry too much about what I write. It does however, if they so chose, allow a future developer in a few years time, that is asked to add to my code, to undersand the thought processes and problems and backtracks that I went through. [Some of the more significant thoughts still make their way into the code comments.]

    • Bpaddock, I would never write if(0 = X)since this is not the way we think. In any case, a if(X = 0) is types, a compiler will give a warning. I always get rid of errors (no choice) and warnings before executing my code. Which reads better: if (true = alarm) shutDownProcess(); if (alarm = true) shutDownProcess();

    • There is no such thing as USB 3! Now that I have your attention, let me explain. At first we had USB 1. then along came USB 2. We were able to plug a USB 1 device into a USB 2 host and any other combination. It was all transparent. Obviously unless both ends were USB 2 we didn't get the speed benefit. The main thing is, we didn't have to worry about whether we were dealing with USB 1 or USB 2, we just plugged our device in and away we went. Along comes this thing called USB 3. With 5 extra pins! Can you plug a USB 3 device into a USB 2 computer? This is all a marketing ploy to get acceptance. If they called it, say, LightningBolt it would just be another name competing with ThunderBolt, FireWire and who knows what else. Consumers will demand the "latest version" of USB and rather than use one of the existing capable data communication methods. We are inflicted with a new data communication method that is not USB, except in name.

    • As K&R state in "The C Programming Language" 2nd Edition, "C is not a big language, and it is not well served by a big book". Sure, there are fancy functions such as isfinite(), but keeping it simple and using the basics still gets the job done. And makes it far easier for maintenance. I like to think of myself as a RISP (Reduced Instruction Set Person). I know the basics very well and can rapidly put together whatever I need in a well architectured way. If the C11 standard is to be more than just a title, it needs to be free. $210 for a standard reference is too much. It shoud be $210 cheaper.

    • Great article John. I use both TCP and UDP and this is the first article that I've seen that clearly decribes the differences. Would be great to see some follow up articles that describe the IP header, congestion control and Nagle's algorithm. I'd also be interested in the effects of TCP's order buffering on latency.

    • It is possible to do TCP/IP without an RTOS. I've done TCP/IP using lwIP, which works fine bare metal. Also, when it comes to connectivity, any thoughts on ZigBee?

    • For me: * C is best for embedded applications (eg. ARM Cortex M3 or similar (or less powerful)) * Object C is best for desktop applications (and perhaps high end micros such as ARM A8 or better)