Author Topic: Worst "in production" microcontrollers  (Read 22331 times)

0 Members and 1 Guest are viewing this topic.

Offline benSTmaxTopic starter

  • Regular Contributor
  • *
  • Posts: 87
Worst "in production" microcontrollers
« on: July 29, 2022, 10:44:03 pm »
Nowadays, with all the shortage, we're sometimes forced to redesign due to unavailability of the original micro.

The choice is to use some alternate micro from the same manufacturer(as the original) or from a different silicon vendor because one can still buy maybe a few hundreds of them.
Some of the available micros(available in hundreds of pcs) have some really nasty silicon bugs, though they're still being manufactured.

Which are some of the worst (I mean serious bugs without real workarounds) microcontrollers you all encountered in the past 10 years or so and still in production?
 

Offline brucehoult

  • Super Contributor
  • ***
  • Posts: 4034
  • Country: nz
Re: Worst "in production" microcontrollers
« Reply #1 on: July 29, 2022, 11:48:43 pm »
Oh, you're talking about bugs.

PIC has to be the worst, by design, atrocity that is still in production. Let's include Padauk in that. Even 8051 is a lot better.
 
The following users thanked this post: Psi, nctnico, srb1954, Rudolph Riedel

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26906
  • Country: nl
    • NCT Developments
Re: Worst "in production" microcontrollers
« Reply #2 on: July 30, 2022, 12:04:25 am »
Add ST's STR700 series microcontrollers to the list. A complete joke.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline DavidAlfa

  • Super Contributor
  • ***
  • Posts: 5907
  • Country: es
Re: Worst "in production" microcontrollers
« Reply #3 on: July 30, 2022, 02:53:25 am »
Pic32 were a mess, specially the MZ series.
But stm32 have serious bugs too!
8/16bit pics weren't too bad, some weird peripheral sh** from time to time, in the end we just disabled/enabled the peripherals after a transfer was done instead fighting/figuring out the bugs.
Hantek DSO2x1x            Drive        FAQ          DON'T BUY HANTEK! (Aka HALF-MADE)
Stm32 Soldering FW      Forum      Github      Donate
 

Offline uer166

  • Frequent Contributor
  • **
  • Posts: 890
  • Country: us
Re: Worst "in production" microcontrollers
« Reply #4 on: July 30, 2022, 02:57:59 am »
Pic32 were a mess, specially the MZ series.

This might be a case-by-case basis. I've had pleasant experiences with the MX series, and some things were done better than your run-of-the-mill STM32. Can't speak for MZ though, except hearing about a lot of bugs in the early revisions.
 

Offline IDEngineer

  • Super Contributor
  • ***
  • Posts: 1926
  • Country: us
Re: Worst "in production" microcontrollers
« Reply #5 on: July 30, 2022, 04:29:13 am »
PIC has to be the worst, by design, atrocity that is still in production.
I don't think that's fair. The PIC processing core is atrocious, that's true, but unless you're writing Assembler the compiler will isolate you from the weirdness. I'm told the paid version(s) of the compilers are substantially better at optimization, but so far the free version(s) have been sufficient for my purposes.

The PIC peripherals are pretty good IMHO. They take a bit of study, and you should always write your own code to initialize and control them (as opposed to the various canned libraries), but many times I've found that something which appeared "weird" at first turned out to be surprisingly useful. Almost like the architecture Engineers had done some actual embedded development themselves! {gasp}

I give high marks to Microchip for their documentation. ESPECIALLY compared with other MCU's. What you need to know is in there. Occasionally it's arranged a little strangely, but you'll find it. And it reads like it was written by English-as-first-language authors and not some Google Translate beta test.
 
The following users thanked this post: tooki

Online jpanhalt

  • Super Contributor
  • ***
  • Posts: 3477
  • Country: us
Re: Worst "in production" microcontrollers
« Reply #6 on: July 30, 2022, 09:14:03 am »
In defense of PIC, I agree Microchip's documentation is quite complete and understandable.  There are a few typo's and/or cut and paste errors that don't seem to get fixed very timely.  Context with other chips in the same series usually helps.  As for the Harvard structure, I program in Assembly and don't have a problem with it at all.  It gets easier as core size increases.  Twelve-bit cores are tough.  Fourteen bit cores are significantly easier and are what I use almost exclusively. Sixteen bit or more are not much of a problem as the address range is quite large.

Silicon errata are inevitable.  Are other manufacturers perfect?  Do they publish easily accessible errata?  Usually, just being aware of them is all that's needed.  Some are surprising -- like not being able to reliably use an instruction like "bra" (relative branch) with a few revisions.  Very early on (1990's) there was a problem with clearing GIE and interrupts.  Microchip promptly added the work around to its datasheets for the affected chips.  That affected only 3 chips (16C71, 16C73, and 16C74), yet rumors spread that all 16F/C chips were affected.  Of course it was fixed with later silicon versions of the 16C73/74 and did not affect any other chip.   

What bothers me is not the errata per se, but the inability to easily order by revision number from DigiKey or Mouser and maybe every other supplier too.  One is left hoping you get sent a newer chip.  At least that's the way it worked earlier this year when I wanted a specific silicon version.  Maybe that only applies to small orders too.
« Last Edit: July 30, 2022, 10:53:14 am by jpanhalt »
 

Offline benSTmaxTopic starter

  • Regular Contributor
  • *
  • Posts: 87
Re: Worst "in production" microcontrollers
« Reply #7 on: July 30, 2022, 09:48:09 am »
The worst offenders in my case are the PIC32MZ EC and SAM V70
PIC32MZ EC's peripherals were riddled with serious bugs. Good thing this abomination is on NRND.
Don't get me wrong. I am not bashing Microchip. I had really good experiences with PIC32MX270 and I like a lot the PIC32MZ EF

SAM V70 was a bad experience for my company too. A few hundreds of 64 pin variant were ordered just to find out the USB wasn't working at all in the 64 pin packages. This teached everyone at my workplace to check the errata at the same time with the datasheet.
At least, the latest SAM V70 datasheet shows there's no USB on 64 pin variants (the errata still says the USB is not working on 64 pin variants)

We're trying to avoid SAMs with SERCOM which is another nightmare-ish peripheral. Plenty of issues with I2C and SPI, thus I am trying to avoid it like plague and the SAM micros using it. Microchip should either fix and improve this peripheral or scrap it.
I would add the SAM datasheets as probably the worst ones (at least in my view).

STM32F3xx series had some annoyances but nothing to seriously affect the designed board (in contrast with the V70 where USB wasn't working at all)

On a positive note, I absolutely loved the experience with NXP's Kinetis MKL27Z
« Last Edit: July 30, 2022, 09:49:56 am by benSTmax »
 

Offline voltsandjolts

  • Supporter
  • ****
  • Posts: 2300
  • Country: gb
Re: Worst "in production" microcontrollers
« Reply #8 on: July 30, 2022, 11:06:11 am »
Last time I used NXP parts they were Philips 8051 ;D
I've heard some good things about NXP and I need to try their modern stuff.
You say the KL27 was nice, what tool chain did you use and how was it?
 

Offline benSTmaxTopic starter

  • Regular Contributor
  • *
  • Posts: 87
Re: Worst "in production" microcontrollers
« Reply #9 on: July 30, 2022, 11:41:41 am »
Back in the day the Freescale IDE was called Kinetis Studio and it was Eclipse-based. The toolchain was GNU GCC
I played in the beginning with their FRDM-KL25Z board using both Kinetis Studio and Keil.
I think Freescale was one of the first micro companies to offer a code configurator(called Processor Expert) for most of their peripherals. In my case, this was helpful because I had no prior experience with Kinetis peripherals and it gave me a good head-start. Of course, later on I rewrote some of the drivers to be simpler and better aligned with my style.
After the successful experience with KL25(on the dev kit), the company I work for designed a custom board around KL27Z. When the custom board came from assembly, I just loaded a board test project I created using Kinetis Studio and Processor Expert and everything worked.
 

Offline JPortici

  • Super Contributor
  • ***
  • Posts: 3461
  • Country: it
Re: Worst "in production" microcontrollers
« Reply #10 on: July 30, 2022, 11:50:35 am »
I give high marks to Microchip for their documentation. ESPECIALLY compared with other MCU's. What you need to know is in there. Occasionally it's arranged a little strangely, but you'll find it. And it reads like it was written by English-as-first-language authors and not some Google Translate beta test.

Not since they acquired atmel. Atmel documentation was shit and microchip documentation since they acquired atmel has become shit. Written badly, lots of information missing, datasheet format changed so that a 300 page document has become 500+ page with zero added information, it's just the layout with nonsensical page breaks, unreadable graphs and so on. Wouldn't have minded if atmel doc style stayed with atmel parts

The worst in production microcontrollers.. I guess those which i find the worst to work with, so worst dev tools. That's going to be Silabs and STM for me
silabs make it so freaking hard to get docs, so many times i had to fill a request form for a freaking datasheet or demo code for their own dev boards. I wonder what would have happened if i didn't sign up with the work email. And their examples on 8051 parts use SDCC (which i hate) and 4-5 level deep macros with preprocessor tricks for everything (which i hate even more)
STM, never understood why they got the appeal. dsPIC and PIC32MX run laps over their cortex M0/M3/M4 (non F) and the peripherals were on par with a PIC18 of the time. I'll take 5V over 32bit thank you. Docs are so horrible and erratas for some parts are hard to find. I haven't programmed with them in a while but i remember that when i started with them setting up the toolchain with eclipse + gcc + plugins + openocd made me want to wildarize the discovery board. And openocd was so slow and prone to failure that i didn't understand how all those neckbeards could rant against the Pickit 3 when that was the alternative. It was several years before CUBE came out, we were using their first hal for which all the docs were some autogenerated doxygen crap. Now things are way better but i will still use any other ARM parts if i really have to use one (possibly Kinetis or ATSAM)
 

Offline rooppoorali

  • Regular Contributor
  • *
  • Posts: 100
  • Country: bd
Re: Worst "in production" microcontrollers
« Reply #11 on: July 30, 2022, 12:37:28 pm »
Original microcontrollers are rare where I live.....
 

Offline Kjelt

  • Super Contributor
  • ***
  • Posts: 6460
  • Country: nl
Re: Worst "in production" microcontrollers
« Reply #12 on: July 30, 2022, 12:38:37 pm »
Any fancy ARM based microcontroller from Broadcom, the reason being you can't get a decent datasheet/reference manual etc. unless you are a real big client, then the NDA's and lawyers visit you. At least that was our experience a couple of years back.
 

Offline hans

  • Super Contributor
  • ***
  • Posts: 1638
  • Country: nl
Re: Worst "in production" microcontrollers
« Reply #13 on: July 30, 2022, 09:29:08 pm »
PIC32MZ EC as mentioned. If you scroll through the errata, I would be amazed if anyone was able to get a working board out the door. Tons of pin mux issues, frequency sources/specifications not working, power management features that are buggy (and are a total PITA to track down) etc.


I've had some annoying quirks with SiLabs MCUs as well. IIRC on either the original Gecko or Happy Gecko's, the peripheral bus had to synchronize on the LFOSC domain to perform any writes to the RTC. This was problematic when you use the lowest power oscillator, that domain only runs at 1kHz... so the CPU running at dozens of MHz is stuck in a spinlock for 1ms. Bit of an oversight? :-//
I recall this being an issue because I was using the RTC for wireless time synchronisation (TDMA) and also as an alarm wakeup source for the kernel I had built. 



STM, never understood why they got the appeal. dsPIC and PIC32MX run laps over their cortex M0/M3/M4 (non F) and the peripherals were on par with a PIC18 of the time. I'll take 5V over 32bit thank you. Docs are so horrible and erratas for some parts are hard to find. I haven't programmed with them in a while but i remember that when i started with them setting up the toolchain with eclipse + gcc + plugins + openocd made me want to wildarize the discovery board. And openocd was so slow and prone to failure that i didn't understand how all those neckbeards could rant against the Pickit 3 when that was the alternative. It was several years before CUBE came out, we were using their first hal for which all the docs were some autogenerated doxygen crap. Now things are way better but i will still use any other ARM parts if i really have to use one (possibly Kinetis or ATSAM)
I've used some PIC32MX devices and quite the hardware simplicity and efffectivity. However I found the interrupt epilogue/prologue to be quite a mess, even with the shadow set registers is unnecessarily long. As it stands, a timebase IRQ on a MX250 project is taking in the order multiple microseconds @ 50MHz.
Also, if someone can dig up a working builtin atomic for the XC32 GCC build, then that would be great.

Concerning tools, my experience is the opposite. Openocd uploads with dozens kB/s to even the smallest chips (STM32L011), while on PICKIT3 and MX250 chip I've to wait almost a minute for a regular erase/program cycle of a 10kB binary (assuming the debugger connection is left open, because if not, that can also fail half the time -- and yes, I still use the original red USB cable with the PK3).
Datasheets and erratas for ST and SiLabs aren't that hard to find once the website navigation is learnt. Only recently I have figured out I don't have to go the specific ST part number page to get to the PDFs. Just lookup the series, e.g. F42x/F43x series and then goto 'Documentation' actually has a very brief and clean list of relevant documents.
« Last Edit: July 30, 2022, 09:31:25 pm by hans »
 

Online mikeselectricstuff

  • Super Contributor
  • ***
  • Posts: 13747
  • Country: gb
    • Mike's Electric Stuff
Re: Worst "in production" microcontrollers
« Reply #14 on: July 30, 2022, 10:21:30 pm »
there's no such thing as "best" or "worst", only more or less suitable to a particular application or situation.
Youtube channel:Taking wierd stuff apart. Very apart.
Mike's Electric Stuff: High voltage, vintage electronics etc.
Day Job: Mostly LEDs
 
The following users thanked this post: janoc

Offline benSTmaxTopic starter

  • Regular Contributor
  • *
  • Posts: 87
Re: Worst "in production" microcontrollers
« Reply #15 on: July 30, 2022, 11:34:15 pm »
there's no such thing as "best" or "worst", only more or less suitable to a particular application or situation.
When a micro has a few non-functional peripherals and there's no workaround for them (e.g. USB in V70 64 pin) that to me is a good candidate for "worst" parts that you can still find available in these chip shortage times.
Of course, you can still use it for non-USB based applications but in this case one might still be able to achieve the same with a micro which costs far less than the $10-$12 price tag of a V70
 
The following users thanked this post: nctnico

Offline T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 21681
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
Re: Worst "in production" microcontrollers
« Reply #16 on: July 31, 2022, 12:53:52 am »
Not since they acquired atmel. Atmel documentation was shit and microchip documentation since they acquired atmel has become shit. Written badly, lots of information missing, datasheet format changed so that a 300 page document has become 500+ page with zero added information, it's just the layout with nonsensical page breaks, unreadable graphs and so on. Wouldn't have minded if atmel doc style stayed with atmel parts

Eh?  I found, at least the classic MEGAs (32, 328, etc.) very well formatted.  The peripherals are simple, registers documented inline, and even example code is given in both ASM and C.

I found the XMEGA+ documentation more frustrating, that the naming conventions are all more opaque.  I've often found myself skimming through the io*.h header to find what the hell something is actually named.  They do seem to use it consistently, at least, so it's usually just a few guesses nowadays to find what something is named.  The most annoying recent example being AVR-Dx's bimorphic TCA (everything is TCAn_SINGLE_reg, etc.).

Other than that, I found most XMEGA prose to be usable, no particular problems getting something to work.  That the ADC is offset is...weird (single ended mode), but, it seems to do what it says on the tin, in any case.

What I take issue with -- and I also get the impression of a slow decay in quality here -- is the AVR-Dx descriptions of peripherals, TCD in particular, but also TCA (and TCB could still be clearer).  The organization is terrible, if you want to know some particular aspect you have no choice but to read the whole section front to back, hunting for any least bit relevant information.  The explanation is far, FAR more complex than it really is (TCB in particular is guilty of this, being actually an extremely simple device, but much more seems to be implied by the text!).

Whereas, original Atmel explanations were helpfully redundant: every section is self-contained, repeating anything in common with other devices, so that you don't have to jump around to get the full picture.  It's generalized just enough, so that you aren't left guessing about anything.  (For example: you might only have TC0 and TC1/TC2, but each is explained as if there could be multiple; on low end parts, it's true, while on bigger parts, you have many to choose from -- well, moreso with USARTs and such, than timers, but you get many more of both on XMEGAs for example.)

I think they've taken the same tack that a lot of other manufacturers have: outsourcing not just manufacturing, but service, and indeed now engineering as well.  Combined with the contraction/ongoing restructuring of labor forces these days, there's altogether less engineering support, less responsible management thereof, and less quality oversight, of these processes.

TI for another example, is headed full steam into this layout.  Of this, I am sure.  There are too many signs of dropped quality, and design, and service, that are outwardly visible.  I have no idea how much they still have in the west, but I can't recall ever seeing a non-Indian name on their e2e forum, so, that's service engineering outsourced at the least.  I actually had an online meeting with one the other day (about an unrelated chip), and he admitted he doesn't know what or why sales/marketing is doing what they're doing -- he tells me the chip in question is NRND, but you wouldn't know that based on its product page or lifecycle status(!!!).

So, for MCP, I suspect the problem is, not only has service and documentation been moved over to India or other low-cost countries, but there are poor oversight/management/quality processes in place to handle it.  Mind, their grammar is excellent -- I don't recall spotting a typo.  It's well written, at face value, as English goes.  Presumably, the techs/engineers they've hired, are near/at the top of their field; I have no problem with that at all.  But there is still so much missing, that a couple also-top-of-field editors or managers or QC crew could cover, and it's just... there's no connections there, it's all dropped on the floor and left to rot.  So we get documentation that is, despite being facially well-written, is just so poorly organized and non-descriptive.


Quote
The worst in production microcontrollers.. I guess those which i find the worst to work with, so worst dev tools. That's going to be Silabs and STM for me

Oh yeah, that reminds me of one I recall... FTDI Vinculum apparently is shite.

That was enough years ago (almost a decade actually, heh), so besides FTDI being lower market share nowadays(??), the whole line maybe is irrelevant?  But, as things go, that was what I heard...

Have also heard negative about Si, but no direct experience.

1st/2nd hand experience with STM: middling.  It's economy market: cheap parts, for everything that word entails.  They're good for what they are, low enough bugs/errata, and powerful enough libraries and tools, that you can do real work without having to spend infinite digression dealing with bugs -- you still will spend some time on them, sure, but not most of your time.  And the result will be bloated, sure, but not so badly that you're prohibited from making a thing.  They have ample Flash and RAM to handle their shitty libraries.  Optimization doesn't sell products, products sell products.  Make the thing first, cost reduce it later -- if it even makes sense to at all.

Analogous to other things that people complain about, but not so badly as to give them up (or drive them to make newer/better).  JS, Python, etc.; whether by themselves, or more particularly with the various libraries and ecosystems i.e. NPM, PyPI, etc. they're typically used with.  They might suck, but not so badly as to want to go and fix the problems yourself (rather than work around it), and you're still making productive* applications.

*Again, in the most basic and most important sense: i.e., it earns money on average.

Tim
« Last Edit: July 31, 2022, 12:58:23 am by T3sl4co1l »
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline brucehoult

  • Super Contributor
  • ***
  • Posts: 4034
  • Country: nz
Re: Worst "in production" microcontrollers
« Reply #17 on: July 31, 2022, 02:02:22 am »
Quote
The worst in production microcontrollers.. I guess those which i find the worst to work with, so worst dev tools. That's going to be Silabs and STM for me

Oh yeah, that reminds me of one I recall... FTDI Vinculum apparently is shite.

That was enough years ago (almost a decade actually, heh), so besides FTDI being lower market share nowadays(??), the whole line maybe is irrelevant?  But, as things go, that was what I heard...

Funnily enough I happened to look into that a week ago when I got curious what ISA FTDI uses. I don't know if their parts other than VNC2 use the same CPU core, but I assume so.

It's pretty awful.

https://www.reddit.com/r/RISCV/comments/w5nduu/comment/ih9o9e2/

It doesn't have any registers to speak of -- just program counter, stack pointer, status register, and a shadow status register.

The C compiler uses the first seven 32 bit words of RAM as pseudo registers, a bit like 6502 Zero Page, I guess. I didn't find instruction encoding docs only the assembly language but it looks as if probably the first 4k of RAM is directly addressable.

The real WTF thing is the names the compiler labels the seven pseudo registers as in the generated assembly language:

0x00: %eax
0x04: %ebx
0x08: %ecx
0x0C: %r0
0x10: %r1
0x14: %r2
0x18: %r3

« Last Edit: July 31, 2022, 02:11:58 am by brucehoult »
 
The following users thanked this post: hans, T3sl4co1l, bson, tellurium

Offline nigelwright7557

  • Frequent Contributor
  • **
  • Posts: 689
  • Country: gb
    • Electronic controls
Re: Worst "in production" microcontrollers
« Reply #18 on: July 31, 2022, 08:12:15 am »
I bought in an atsame 21nxx for a USB project.
RS components listing says it does USB and so does datasheet.
Result is USB failed to work.
Got in touch with Microchip who told me USB doesnt work on 64 pin version of chip and I should always read errata sheet first.
SO had to buy in 100 pin devices and redesign part of pcb.
 

Offline westfw

  • Super Contributor
  • ***
  • Posts: 4199
  • Country: us
Re: Worst "in production" microcontrollers
« Reply #19 on: July 31, 2022, 10:11:53 am »
I had hopes for the FTDI vnc2 (TWO USB host/device controllers!) but got put off by the lack of info on the cpu architecture.  “Just use our compiler and sdk and don’t worry about it.”  Hmmph.


I’m not sure that “using the low memory as registers” is so much different than “the low register are also addressable as memory” (avr, pdp10, etc.). Depends on timing, I guess.  But timing info was one of the things lacking.  Sigh.



 

Offline David Hess

  • Super Contributor
  • ***
  • Posts: 16615
  • Country: us
  • DavidH
Re: Worst "in production" microcontrollers
« Reply #20 on: July 31, 2022, 10:45:52 am »
PIC has to be the worst, by design, atrocity that is still in production. Let's include Padauk in that. Even 8051 is a lot better.

I do not think PIC is any worse than the 6502.  That is just how accumulator based processors work.
 

Offline brucehoult

  • Super Contributor
  • ***
  • Posts: 4034
  • Country: nz
Re: Worst "in production" microcontrollers
« Reply #21 on: July 31, 2022, 11:47:40 am »
I’m not sure that “using the low memory as registers” is so much different than “the low register are also addressable as memory” (avr, pdp10, etc.). Depends on timing, I guess.  But timing info was one of the things lacking.  Sigh.

It's logically the same thing, of course, but there are a number of performance and code size implications.

A nice thing about having 3 or 4 or 5 bit fields for register numbers is that you can fit several of them into a relatively small instruction.

If you look at that VNC2 code I deciphered ...

Code: [Select]
    f200 800c           PUSH32 %r0  # %r0 at 0x0c
    f200 8010           PUSH32 %r1  # %r1 at 0x10
    f200 8014           PUSH32 %r2  # %r2 at 0x14
    131b 8010           SP_RD32 %r1 $27 # 27 = 0x1b
    de00 0010 0002 0000 CMP32 %r1 $2
    4400 8010 000c      CPY32 %r0 %r1

... it is apparent that each "register" reference in an instruction is adding 16 bits to the instruction.  %r1 sometimes appears there as 0010 and sometimes as 8010. I'm not sure what the set hi bit does. I think that is some kind of part of the opcode, and there is some ability there to add indirection too. So the actual register address part is probably 12 bits.

So that is vastly less program size efficient than if you had, say, 16 registers and could use a single hex digit to name each of the source and destination registers.

Every single one of those instructions would be a single 16 bit MSP430 instruction, for example. Oh, except the "SP_RD32 %r1 $27". Everything except the compare would be a single 16 bit instruction on RISC-V.

It may or may not be that their hardware provides faster access to the first few dozen bytes of "RAM", akin to registers, like on AVR. We don't know.

If you ever want to make a fast implementation of an ISA then there is a big advantage to register references being effective names not numbers.  What I mean by that is a register can only be read or written by an instruction which has the actual register number visible in a field in the instruction (or implied by it, as PC and SP and LR often are). If any pointer in the program can potentially refer to a register then you can't do register dependency tracking in a pipeline. If every store instruction can potentially change the contents of any register then you can't just put stores in a store queue and let them complete at leisure. If every load instruction can potentially depend on the result of every previous instruction then you can never get one started early.  You can't even do a dual-issue in-order implementation like Cortex A7/M7/A8/A9/A53/A55 where arithmetic and load/store issue into parallel pipelines, because you can't tell whether there is a dependency between them until they get to the execute stage.
 

Offline brucehoult

  • Super Contributor
  • ***
  • Posts: 4034
  • Country: nz
Re: Worst "in production" microcontrollers
« Reply #22 on: July 31, 2022, 12:11:15 pm »
PIC has to be the worst, by design, atrocity that is still in production. Let's include Padauk in that. Even 8051 is a lot better.

I do not think PIC is any worse than the 6502.  That is just how accumulator based processors work.

It's not being accumulator-based that is the problem. That's just a simple engineering tradeoff between fewer long instructions or more short instructions, with the end result being much the same, and all options are usable.

The same goes for conditional skip instead of conditional branch. I really don't care.

Things I seriously object to:

- being too lazy to implement carry between low and high halves of addresses, even for the program counter. Sure, the 6502 adds a clock cycle if either a relative branch or indexed addressing crosses a page boundary, but at least it DOES it.

- the TEENSY stack, only 2 subroutine call levels on some devices and a maximum of 8 on most. And the complete inability to use it for anything except call/return. You can't push a register and pop it back later. You can't index into the stack. People complain about the stack on the 6502 being only 256 bytes, but that's 128 subroutine levels deep! And you can stash register contents there temporarily. And if you keep 0x01 in a Zero Page location N+1 and do "TSX;STX N" then you can use "LDY #m;LDA (N),Y" to index into the stack.

- the INDF support for pointers and structs and arrays in RAM is far worse than 6502.
 
The following users thanked this post: janoc, newbrain, srb1954

Offline JPortici

  • Super Contributor
  • ***
  • Posts: 3461
  • Country: it
Re: Worst "in production" microcontrollers
« Reply #23 on: August 01, 2022, 05:38:25 am »
Eh?

Try ATSAM
almost all new device datasheet and erratas are written in the ATSAM layout
 

Offline JPortici

  • Super Contributor
  • ***
  • Posts: 3461
  • Country: it
Re: Worst "in production" microcontrollers
« Reply #24 on: August 01, 2022, 05:51:41 am »
PIC has to be the worst, by design, atrocity that is still in production. Let's include Padauk in that. Even 8051 is a lot better.

I do not think PIC is any worse than the 6502.  That is just how accumulator based processors work.

It's not being accumulator-based that is the problem. That's just a simple engineering tradeoff between fewer long instructions or more short instructions, with the end result being much the same, and all options are usable.

The same goes for conditional skip instead of conditional branch. I really don't care.

Things I seriously object to:

- being too lazy to implement carry between low and high halves of addresses, even for the program counter. Sure, the 6502 adds a clock cycle if either a relative branch or indexed addressing crosses a page boundary, but at least it DOES it.

- the TEENSY stack, only 2 subroutine call levels on some devices and a maximum of 8 on most. And the complete inability to use it for anything except call/return. You can't push a register and pop it back later. You can't index into the stack. People complain about the stack on the 6502 being only 256 bytes, but that's 128 subroutine levels deep! And you can stash register contents there temporarily. And if you keep 0x01 in a Zero Page location N+1 and do "TSX;STX N" then you can use "LDY #m;LDA (N),Y" to index into the stack.

- the INDF support for pointers and structs and arrays in RAM is far worse than 6502.


bruce, you should try some parts from this century, I can't even recall a partnumber that has two level deep stack... the PIC10 that cost a couple of cents? the  PIC16F84A had 8 deep level stack. Current parts have a 31-255 level stack, multiple INDF sets that can access the whole memory linearly (no paging) and the compiler's actually using them, and Add to INDF instructions (but i'm not sure if they are used, probably in the paid "pro mode")
they have sort of evolved over time.. one of the parts i use the most is the PIC18 K42 series
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf