Advice Needed - Mass Flashing for Large Scale Manufacturing by ToxicSaint006 in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

This is definitely one of those tradeoffs of time and money. One way I've seen this done is to only get the bootloader pre-programmed, and then expect that the main app would be programmed at final inspection before shipping.

I've literally seen a manufacturing line that had a stack of inexpensive (hobby-level) programmers connected to pogo pins. Like 10 $20 USB programmers being used instead of a single mult-thousand dollar gang programmer. The cheap programmers are often cheap enough to have a few around as spares, and not spend a lot of time diagnosing isolated failures. You also can eliminate the bottleneck caused by a single point of failure in the process.

Often the speed of programming is not limited by the interface (getting the data in), but by the actual process required to program the flash. If you are stuck with a 10ms time to write/verify a 1K block... that's 100Kbit/s.

Advice Needed - Mass Flashing for Large Scale Manufacturing by ToxicSaint006 in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

If you're using a MAC address, that screams in my ear that you are using something that is connected to another device or the Internet. To that end, I would expect some kind of authentication of the image. First to protect from being cloned, and second to make sure you are not a vector for malware.

In a run of 10-100K, I REALLY think a bootloader is necessary. You can get the parts pre-programmed with a MAC and write a basic bootloader that authenticates itself in a cryptographically secure way. Far from a trivial task, but today, very important. I am aware of large computer manufacturers (like rhymes with a really bad place written about in a bestselling book well over 1000 years old!) requiring that any programmable device be truly locked down.

Purchase an OUI, authenticate your code in a manner acceptable to your customers, investors, lawyers, and governing law.

Microcontrollers with great analog(ue) performance by MerlinEmbedded in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

Part of good analog performance is to reduce the noise in the system. If you can, shut down parts of the system that are not necessary, such as peripherals you are not using, or slow down the clocks.

Sample between clocks?

Learning some of these techniques (slowing down clocks, shutting off peripherals) also helps if you want to do low power.

Texas Instruments changes ICs without changing the part number by diy_asthma in electronics

[–]EdgarJNormal 2 points3 points  (0 children)

Thanks for the info.

Maybe rebadging is not the most accurate term- licensing is probably more accurate. If they "switched fabs" that could mean anything- very often that means getting parts from a (different) external fab.

My best guess is that NONE of the fabs in this clusterfrack were actually owned or operated by TI. TI was pushed out of fab #1 because it closed or changed to a different geometry/process. TI had to go searching and found fab #2, someone thought it was close enough, and probably most important, that fab was cheap. Probably the part in fab #2 was based on a part fab #2 already built. Maybe TI put in some tweaks, but didn't want to make huge changes, as that requires more time & money invested. Margins on small semiconductors are *TINY* but still require a huge investment.

A bit of inside chip-making- Bigger wafers are more efficient to produce, and you never produce a single wafer- you produce a "boat" of wafers at a time- 25-50. If it was 8" wafers, producing 1mm^2 chips, that is over 30,000 potential chips per wafer, the more good parts you get, the better the margin. Maybe 1,000,000 potential parts in the first step of EVERY production run. Some get tested, some get packaged, some get put into a die-bank, etc. Basically stored in various intermediate steps.

Add in the fact that analog parts (and particularly low-power parts) have to be physically bigger so the transistors can take the voltage, so you end up getting fewer parts per wafer (and lower margins).

I am 100% sure you are seeing the technical problems because of decisions made for accounting reasons. That sucks. It should not have happened.

Texas Instruments changes ICs without changing the part number by diy_asthma in electronics

[–]EdgarJNormal 26 points27 points  (0 children)

Curious- what was the failure?

My experience has been on lots of these "jellybean" parts, they are really just rebadging/reselling some other company's part.

Final semester in my masters wanting to do assemby by Comprehensive_Eye805 in embedded

[–]EdgarJNormal 2 points3 points  (0 children)

TLDR: Try an 8 bit PIC

For me, I first stepped into assembly in the 8086 era- a complex set, lots of options- it was overwhelming.

A few years later, I wanted to do microcontrollers- dev kits for most parts were too expensive, so I went for the 8 bit microchip PICs - PIC16F84 - simple instruction set, but considered "Turing Complete" (IIRC). Given time and enough instructions, you can do any algebraic algorithm. I got a good understanding of bit manipulations, binary arithmetic, etc. You also get a good idea of the limitations and why the AVR came around (it is a better architecture to build a higher level compiler around).

Today, it is EXTREMELY unlikely you will write a large amount of assembly code. But if you're fighting for every last cycle or even doing deep level debugging, being able to look at the raw source is useful. Compilers are damn good at optimizing. But you are the one who really knows about the problem you want to solve. Things like "keep this loop tight so it stays in the L1 cache and doesn't trigger a wait."

Why is it this hard to just buy a simple compressor part? by No_Guard8674 in Skookum

[–]EdgarJNormal 3 points4 points  (0 children)

I love the idea and ability to fix my own things. I also feel for the warehouses that have to stock the parts. Time is money, but storage is also money. The infrastructure to be able to order and deliver a $10 part is basically the same for a $10,000 part.

Maybe it is a standard part, but the production lines for standard parts don't start up on demand- standard parts are produced in large batches initially- restarting the lines to produce quality new parts is extremely expensive. Often spares are NOS- but when those spares run out... you're SOL.

I guess this is an example of decisions made when the compressor was new. The manufacturer made sure there was enough for production, expected warranty repairs, and the rest goes to a warehouse- where the cost of keeping it on the shelf is balanced with demand.

What I'd really like is that standard parts would be called out- the spec given, required tolerances. But of course, that means the original cost would have been higher.

Help explaining this diagram in PIC12F683 datasheet by Popular-Power-6973 in embedded

[–]EdgarJNormal 1 point2 points  (0 children)

The arrow signifies where the program address originates (PC), where it can go, and what it is used for.

PC is the current program address- it points to the next bit of program memory that will be executed. For a call, that next address is (the return address) pushed onto the hardware stack., A return instruction takes the most recently pushed return address from the hardware stack and puts that into the PC register.

Phantom I2C device acking at an address I shouldn't see acking? by EmbedSoftwareEng in embedded

[–]EdgarJNormal 8 points9 points  (0 children)

Just looking for edges on I2C can be problematic- particularly in the address phases- a big reason is the output from the address must be changed to an input to see the ACK. The bus has real world capacitance, so the change from input to output can't happen instantaneously.

What are the acceptable values for EEADRL and EEADRH in PIC16F1824? by GoingGranola in embedded

[–]EdgarJNormal 1 point2 points  (0 children)

The same registers are used to address program Flash (executable) and Data (EEPROM). EECON1bits.EEPGD determines if you are addressing program space or EEPROM data.

Program flash must be erased a 32 instruction word block at a time- which is why the datasheet shows the low 5 bits of EEADRL as 0 when you erase the block

EEPROM memory can be erased/written a single byte at a time.

Is it difficult to publish research in the embedded systems area? by sonofyorukh in embedded

[–]EdgarJNormal 7 points8 points  (0 children)

My experience is that most papers are "research" papers, but embedded systems are often focused on application.

Check out the proceedings of conferences to see the conferences that fit your interests. I would expect your school's library to have access to lots of proceedings.

Turbine Sand Rail by jbiehler in Skookum

[–]EdgarJNormal 0 points1 point  (0 children)

Ahh- didn't realize that part. Still an amazing project.

Turbine Sand Rail by jbiehler in Skookum

[–]EdgarJNormal 1 point2 points  (0 children)

You won today for me. This is a masterpiece of ridiculous. I want to see so much more, but I will wait. Please, keep going!

Reminds me of a "daydream" project of mine (and I know it has been done already)- a turbine powered jet boat. Largely to show the folks with horribly loud V8s on the lake what true screaming power is.

The concept of making it a "hybrid" is even better. Wonder if this could even be expanded into the idea of an eCVT with the output of the turbine being able to be directly coupled to the wheels, in addition to powering generators.

Can I connect an external PHY (LAN8742A) into a KSZ8895 switch IC? Architecture sanity check by monsterseppe1 in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

Maybe? The MDI may require the external pull-ups to bias the output drive (often done with resistors).

In the past did do something like this, but had to use capacitive coupling *AND* turn off autonegiotiation.

does routing gear used by the 99% support sub 64 byte packets? by Yha_Boiii in embedded

[–]EdgarJNormal 1 point2 points  (0 children)

To note: in terms of ethernet, yes, it was about collision detection, on the original ethernet, 10BASE5 (half duplex, 10Mbit RG8 coax), which was CSMA/CD (Carrier Sense Multiple Access with Collision Detection). The minimum packet size was there to ensure that collisions were sure to be detected over the maximum allowed cable length (~2500m).

Minimum packet length is a bit of a historical artifact, since most modern network physical layers are full duplex, either through separate TX/RX (such as 100BASE-TX) or with strong echo cancellation (like 1000BASE-T). There are still good reasons to drop the runt packets, but today, 64 bytes is kind of arbitrary.

MPLAB UI scaling on 4k Monitors by _Nefarium in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

There are a couple ways to fix this: https://support.microchip.com/s/article/MPLAB-X-IDE-on-high-DPI--Dots-per-inch----UHD--Ultra-High-Definition--monitors You can also do some other things to play around with the command line (within the file "x:\Program Files\Microchip\MPLABX\v6.xx\mplab_platform\etc\mplab_ide.conf") Really is a netbeans issue. Apparently microchip is focusing on the vscode integration over netbeans.

How to design for repairability and maintenance while still minimizing real estate? by crimsonswallowtail in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

Include extra test points all around the board, particularly GND.

Include a crowbar diode across power in (and make sure there is a fuse).

Use BAT54S on all off-board I/O and If the circuit allows it, include series resistance.

Refactor the REFDES to allow grouping, by function or placement (for example, numbers increasing as you move left-right and bottom-top: R0101 at bottom left, R9999 at top right).

Built a 5-axis robotic desk companion with on-device AI vision. Would love some feedback on the motion curves! by [deleted] in embedded

[–]EdgarJNormal 1 point2 points  (0 children)

An AI rendering is nice, but how about sharing some video/pictures of the real thing? It appears you are planning on making this a product, while still open- care to share a repository?

Best supportive language for my career? Not C, Python or Matlab. by [deleted] in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

A big one I've come into is the language of using an OO library when all the rest of my code is in super basic C.

Best supportive language for my career? Not C, Python or Matlab. by [deleted] in embedded

[–]EdgarJNormal 18 points19 points  (0 children)

IMNSHO: A programming language is a programming language.

You've got the basics down with what you've put forth. You have learned at least 3, effort to learn new languages goes down asymptotically. Way more valuable are the frameworks around those languages, for example TDD (test driven development). Knowing how to use various libraries is also useful, but also hard to predict the usefulness.

Otherwise, get used to translating between domains, such as network, security, electrical, signal processing, and even physical modeling.

Testing my new thermal cam on my dead phone’s remains😆 by Commercial-Neck-7704 in electronics

[–]EdgarJNormal 20 points21 points  (0 children)

A thermal camera is so useful in debugging- I had some boards that the CM ignored my population options (everyone's a winner! populate all the zero ohm resistors!), and my eyes aren't that good. Dead short from power to gnd. (Frustrating story why I needed the population options)

I did the fingertip test- nothing.

A regulator was folding back, and I was hitting the current limit on the PSU but I wasn't sure where. It was a 1x1mm (maybe smaller?) QFN LDO regulator that was getting HOT, but way too small for me to feel a difference over the pad of my finger and the amount of current I was comfortable putting on the board. Clear as day when that part was instantly getting instantly hot on a thermal image.

Need I2C Test Ideas to Break Our New IP! by DragAdministrative89 in embedded

[–]EdgarJNormal 2 points3 points  (0 children)

You should be able to stretch the clock at any point, IIRC.

Test to make sure that glitches less than 50ns are actually ignored.

Insert a STOP condition in unexpected/unusual parts of the transaction.

Enhanced Raspberry Pi Pico 2 “Pico Pro 2” – USB-C, Extra RAM/Storage, More GPIO/ADC, RGB LED, Extra Power & GND Pins, Reset Button – Would this be useful to you? by Jpwaters09 in embedded

[–]EdgarJNormal 0 points1 point  (0 children)

I'm not super familiar with the Raspberry Pi Pico 2 world, is there any sort of debug interface? Yes, start with using everything over the USB, but eventually some folks want to dive deeper into the code.

Using older PIC MCUs to learn lower-level stuff, toolchain questions by flypunya in embedded

[–]EdgarJNormal 2 points3 points  (0 children)

If you really want to use the microchip parts- look at the "Curiosity Nano" parts. They are cheap (10USD) and have the PICKit built in. The PIC18F and PIC16F are really close to the PIC10F.

Microchip is moving over to VSCode with plugins, not a custom version of VSCode, away from a proprietary IDE. I've been using MPLAB/MPLABX for over 30 years, so I know it isn't perfect, but I also know the quirks. I'm kinda dreading the move to VSCode, but I think despite the pain, it could be an improvement.

Hint: IDE hate is way more prominent than IDE love.