What was your slowest microcontroller design? - Page 1
Forum section: electronics / projects

author: harerod
author_rank: Frequent Contributor
timestamp: March 19, 2021, 02:13:27 pm
content: It is Friday afternoon and for once I can't find the motivation to keep on working. Weather isn't that great either. So what about a bull session? Topic: "What was your slowest microcontroller design?"For my 50th post, here is a story about my slowest design. Pretty OK on power consumption as well.I keep reading about how people want to save power. Saving power obviously starts with the components selection. In 2015 a customer approached me, requiring a proof of concept and low overal initial cost to feel the waters for their new product idea. Their toy required a stopwatch with LC-display, which was to be controlled by normally open contacts. If the design proofed valid, the device was going to be remodeled with custom components (ASIC, custom display).We started from a glass-only display DE161, which is rated for 3V operation.That allowed for a CR2032 as power supply. As for a MCU that would work directly from a 2,8..3,3V supply, there were several choices. MSP430 came to mind. Being more experienced with PIC16, my choice fell on PIC16F57. That one accepts a 2^15Hz watch crystal as main clock source. One instruction cycle taking four clock cycles, this would yield an insane 8192Hz instruction clock.Frankly, I accepted that project as an excuse to write PIC assembly, which I hadn't done since the 20th century. The program structure was most simple. Initialization and then one long loop with exactly counted instruction cycles. Nothing fancy like subroutines or interrupts.Not unlike an old 8bit video game, the stopwatch logic was designed around the LCD multiplexing. The digits were to be multiplexed, while at the same time the segments were to be driven by a pure AC waveform. Getting the timing wrong would lead to DC bias and eventual deterioration of the LCD.As for multiplexing speed, there were two criteria. First the driving frequency from the datasheet (30..100Hz -> 240..80 instruction cycles), second the longest "atomic" block of stopwatch logic. Leftover cycles were simply padded with NOPs.The result was a toy stoppwatch with about 5000..14000h of runtime from a 220mA CR2032.Some actual pictures my be found here. And yes, I made my hobby into my trade:http://www.harerod.de/applications_eng.html#allTimerSo much for my slowest project. Has anybody gone lower on a microcontroller(*)?What were the clock sources?(*) relais operated Zuse Z1 don't count for obvious reasons

author: Hellmut1956
author_rank: Contributor
timestamp: March 19, 2021, 04:28:36 pm
content: The slowest one was an MC6809 running at 1MHz.

author: MikeK
author_rank: Super Contributor
timestamp: March 19, 2021, 06:28:47 pm
content: Not really fair to say that your microcontroller running from a 32,768 Hz watch crystal is running at 8,192 Hz. The micro *is* running at 32kHz, since there are four steps for every instruction clock.

author: Benta
author_rank: Super Contributor
timestamp: March 19, 2021, 07:57:37 pm
content: My absolutely slowest was a 1-bit design at 100 kHz using Motorola MC14500 as CPU.

author: peter-h
author_rank: Super Contributor
timestamp: March 19, 2021, 08:21:06 pm
content: A funny example from maybe 10 years ago was a bit-banged I2C port for talking to an ADS7828, on an H8/323. The exec time of the call was 600us, and compare that with the conversion time of the ADC of 20us. It was written in assembler, too, which I've been doing since 1980 so I know the tricks.An earlier one was an HPGL to "generic vector" converter, which was written in IAR C, on a Z180. The project involved virtualising one of the then expensive (~10k) A0 pen plotters so multiple CAD users could send HPGL to a big shared laser printer. We use an ICE for the Z180, of a Japanese make (can't recall the name but do remember masses of spelling mistakes in the error messages) and which cost about 10k (1980s money!). It could do real time trace and exec time profiling, all without slowing anything down, which was great. The code ran really slowly and could not keep up with 9600 baud input. We quickly found that something like 99% of the CPU time was spent in the sscanf() used to parse the decimals. These were of the form 123456.789, not scientific notation. The IAR implementation was internally using double floats (which would take tens of ms on a 16MHz Z180) and did an addition and multiplication on each digit. No optimisation at all. Obviously one could optimise for this form of data by separating the two parts either side of the DP and using strtoul() etc but I just wrote some code in asm which did some very simple operations and poked the data straight into the 32 bit float value, with a hack for the exponent. The resulting speedup was massive. Of course the experts here will say that sscanf() is for sissies and real men use the strto... stuffI am still learning C. The other day I found that something was running incredibly slowly and it turned out to be an array declaration with values specified; basically about 1000 bytes of test data declared with uint8_t arrayname[] = { ... }. The mistake was that the array wasinsidea function and each time the function got called (to return the next byte) the whole array was being initialised, quite possibly (Cube IDE) with 1000 load instructionsMoving the array to outside the function speeded it up ~1000 times because, presumably, it got inititialised at startup. Obvious, in hindsight, because that is how functions work: everything is on the stack, and all values get set up when you call the function.That is also why Z80 etc code ran much faster if everything used static storage instead of variables declared inside functions. The instruction set is poor for accessing stuff on the stack. The H8 is better and C code runs OK on it.A final funny one was my first bit of asm code on a Z80. Somebody else did the hardware for that one and he made a mistake on the /CS decoding for the EPROM. He brought in the M1 signal, which is generated only on opcode fetches. So I had the write the entire program using only instructions which generated M1 for each byte i.e. no data fields. So e.g.LD A, 4had to be done asXOR AINC AINC AINC AINC AorXOR ASET 2, AStuff like LD D, (IX+73) could not be used because the 73 is a data byte and doesn't generate an M1. Eventually I wrote macros for the common stuff. The resulting bloated code filled up a 2732But we sold thousands of the boxes (printer buffers).

author: harerod
author_rank: Frequent Contributor
timestamp: March 19, 2021, 08:31:54 pm
content: Quote from: Benta on March 19, 2021, 07:57:37 pmWhen was that?I am trying to figure out whether this would have been better or worse than 74181. The smallest word size I actually considered using was Atmel MARC4.Funny how the Wikipedia article onhttps://en.wikipedia.org/wiki/Motorola_MC14500Bhas a link tohttps://en.wikipedia.org/wiki/WDR_paper_computer.Any user of that device would be the winner of this thread. Photographic proof required.

author: MikeK
author_rank: Super Contributor
timestamp: March 19, 2021, 08:38:22 pm
content: I've run a Z80 processor while manually clocking it, probably 1Hz or less. Does that count?

author: harerod
author_rank: Frequent Contributor
timestamp: March 19, 2021, 09:01:47 pm
content: Quote from: peter-h on March 19, 2021, 08:21:06 pmFinally looked it up in Wikipedia. "based on PDP11 architecture". Sadly, I only ever saw those as standing in storage, waiting for the knacker.Quote from: peter-h on March 19, 2021, 08:21:06 pmThis is interesting. My general impression of IAR is "expensive, cumbersome UI, BUT awesome performance". I used IAR for 8051, AVR and ARM. With ARM the compiler performance used to be IAR, a bit behind KEIL and yeah, well, somewhere GCC. That has changed in recent years. To my knowledge the order of performance is KEIL/IAR pretty close and GCC not too far behind. Which makes GCC the obvious choice for projects that don't allow silly licensing shackles.Quote from: peter-h on March 19, 2021, 08:21:06 pmThere exists such a thing as astaticdeclaration even inside functions, doesn't it?Quote from: peter-h on March 19, 2021, 08:21:06 pmSome architectures are better suited to run C than others. Some are actually designed for C programs. Which is funny, since some people (not myself) suggest that C is nothing but a wrapper for assembly.Quote from: peter-h on March 19, 2021, 08:21:06 pmPrime example of PITN. Kudos. This is how I expect work on a fading Voyager probe would be. "Hey Chuck, take care, bits 2 and 3 in this register are broken".https://www.popularmechanics.com/space/a17991/voyager-1-voyager-2-retiring-engineer/I wonder if anybody fluent in that stuff roams this forum?

author: harerod
author_rank: Frequent Contributor
timestamp: March 19, 2021, 09:05:46 pm
content: Quote from: MikeK on March 19, 2021, 08:38:22 pmDepends - debugging or actual application?

author: globoy
author_rank: Frequent Contributor
timestamp: March 19, 2021, 09:09:23 pm
content: Harerod, I think you and I are brothers from a different mother. A long time ago I too designed a pair devices using the PIC16C57 running from a 32 khz crystal. The first - and a product - was a battery powered medical device that had to get some FDA approval for the code. It basically read a pressure sensor and generated an alarm if the pressure was too high but it had to run for months on a pair of AAA batteries. The code was assembly and without interrupts. It also had an extremely slow bit-banged I2C interface.http://danjuliodesigns.com/personal/impact_monitors.htmlThe second project was for fun and was a nixie tube clock, this time using an external precision Dallas 32 kHz oscillator. The PIC output BCD digits that drove Russian nixie tube decoder chips. I had only one pin left over for setting the time so I made a short/long press affair. If you quickly pressed the button you could advance the hours only for daylight savings time. Pressing and holding reset the seconds and starting incrementing the minutes. Once again it was assembly and no interrupts. I cycle counted every path so that it kept accurate time no matter what it was doing. I cannot understand now what I was thinking not using interrupts for it. But the clock ran for something like 20 years.I think those super primitive PICs were kinda fun - perhaps in a masochistic sense - to play with. Such a simple instruction set that you could memorize the whole thing and very few peripherals that were easy to use. One could create useful little embedded things with only a few tens of instructions.

author: harerod
author_rank: Frequent Contributor
timestamp: March 19, 2021, 09:25:22 pm
content: Quote from: globoy on March 19, 2021, 09:09:23 pmMmmh, my father traveled to the U.S. in 1981. How old did you say you are?Quote from: globoy on March 19, 2021, 09:09:23 pmGosh, how did you pass EM-emission tests for those devices?Yeah, the Funny Drugs Administration. I always thought that TÜV was bad, but then I spent half a year in L.A. helping some poor guys redesigning a control system for a respirator. I joined that show after the second rejection by the FDA. That was in 2002, best part of the whole affair was my rented Toyota Prius and hiking Yosemite NP ...And I learned a lot about the superiority of imperial units over SI.

author: peter-h
author_rank: Super Contributor
timestamp: March 19, 2021, 09:25:40 pm
content: "I've run a Z80 processor while manually clocking it, probably 1Hz or less. Does that count?"Had to be the rare CMOS version. The NMOS ones had dynamic structures and a minimm clock speed. Nat Semi made the first CMOS one, IIRC.IAR were always expensive. I think my then company paid nearly 1k in 1985. I think they were over-priced even back then, but they were quite good and supported, whereas the GNU stuff was crap.Re clocks, in 1982 I designed a multizone heating controller, on which you set the date and it worked out the day of week (different profiles for different days, etc). The code for this would break after 29 years (apparently the calendar repeats every 29 years) but I wasn't worried at the time. 1982+29=2011. I doubt any were still running in 2011... and it could have been made to work by setting an old date. I designed a product in 1991 which still sells, so you never know.Today, a significant challenge with a ~1MHz clock would be buying the crystal. Anything below about 4MHz is bulky and expensive. About 25 years ago I did a design, 6502 based, running at 2MHz, and we were paying a lot of money for special tuning fork based Swiss xtals. 1MHz is even worse and below that you can forget it. You have to use ceramic resonators but then you lose a lot of accuracy.The 32F4 can use a 32k watch xtal and still get 168MHz internally. I am not sure if there is any downside, apart from no way of doing USB or ethernet which need clocking at 25/50MHz and 48MHz respectively, IIRC. So we run it with a 25MHz xtal.On the H8/323, a load of fake ones appeared about 10 years ago on the US cowboy stock market, and we got a few k of them. At $6 each, it was a good piece of luck that we bought them on a credit account. The supplier was really angry and terminated our account; clearly hoping we would not discover it for a few years. But I always programmed some from each consignment right away. These ones were an empty package, the legs were a little too big (a tight fit into the programmer ZIF socket) and mis-marked H8/343 or some such

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 19, 2021, 09:50:04 pm
content: Real design? That was a PIC24 MCU, but running at different clock rates depending on state. IIRC, it was either in standby, or running at 250 kHz in some states for saving power, or running at 4 MHz for handling RF transmission.Otherwise, yes, I also ran some CPU, a long time ago, at very low clock speeds for learning/debugging purposes.A RCA 1802, if I'm not mistaken.

author: Benta
author_rank: Super Contributor
timestamp: March 19, 2021, 09:58:06 pm
content: Quote from: harerod on March 19, 2021, 08:31:54 pmMust have been 1982...1983. The "computer" no longer exists, but was built on a wire-wrap perf. board.

author: Someone
author_rank: Super Contributor
timestamp: March 19, 2021, 11:03:02 pm
content: Quote from: SiliconWizard on March 19, 2021, 09:50:04 pmSimilar, Atmel Watchdog Timer Clock -> Prescaler -> CPU ClockHandling some complex wakeup that need to do state tracking of the UI buttons in a battery device, 500Hz clock with wait loops after waking from pin change interrupt.

author: dmendesf
author_rank: Frequent Contributor
timestamp: March 20, 2021, 01:21:39 am
content: Quote from: peter-h on March 19, 2021, 09:25:40 pmPlease tell me how, i actually have a use for that. I'm staring at Clock Configuration and HSE is 4-26MHz and LSE is 0-100kHz but has no way to drive the PLL.

author: mck1117
author_rank: Contributor
timestamp: March 20, 2021, 08:47:55 am
content: Quote from: peter-h on March 19, 2021, 09:25:40 pmUh, no it can't. 32khz is too slow for the PLL's input, so there's no way to step it up. The reason the chip has a max of 168 is that the USB peripheral can only run at an integer fraction of the PLL'S VCO - and 48mhz is 1/7 of 336, which is double 168.

author: tszaboo
author_rank: Super Contributor
timestamp: March 20, 2021, 09:03:50 am
content: So your power consumption is about 15uA?I've made a smart sensor use about 5-6uA adjusted to the same voltage. It runs at 38.4MHz.For a short while, sleeping most of the time. 38.4 because that's the frequency for BLE and Zigbee, which it was communicating with, at the power level of +16dBm.Probably there is some gain in the code if you would sleep the micro while the measurement is happening. But the firmware programmers are like this: "It fulfills specification, so I can't be bothered making it more efficient"Slowest probably was an AtXmega at 1MHz.

author: mac.6
author_rank: Regular Contributor
timestamp: March 20, 2021, 09:16:00 am
content: My first microcontroller build, with a CDP1802, as low as you want!

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 11:50:19 am
content: Quote from: tszaboo onTodayat 10:03:50Seriously, 6uA while running at 38.4MHz? Where can I buy that device? Are you allowed to share details? Alright, I get you, we are talking average power consumption with looooong sleep periods. The misleading thing with average power consumption is that the power supply must be capable of providing the peak power. This way one sometimes ends up with a huge capacitor next to a button cell.Sleep and cyclic wake-up would be a different story . In battery (as in single cell LiIon) powered applications <2uA is no challenge for more recent MCUs, like tinyAVR1.I am curious about low instruction speeds in normal operation. Like a Z1, but based on static CPU implementation.

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 11:56:05 am
content: Quote from: dmendesf onTodayat 02:21:39>Quote from: peter-h onYesterdayat 22:25:40Please tell me how, i actually have a use for that. I'm staring at Clock Configuration and HSE is 4-26MHz and LSE is 0-100kHz but has no way to drive the PLL.. . .Check out RM0090 -> RCC -> HSI (High Speed Internal RC oscillator). On the F4 not stable enough for certain peripherals. RTM, thoroughly.There are STM32 devices (among other MCU types) available that implement stabilization techniques which allow USB operation from internal RC oscillators.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: March 20, 2021, 01:10:26 pm
content: Not a lot of direct examples as I'm more of a hardware guy. I do recall some MasterLock boards (like the kind with digital codes, NFC or Bluetooth) with 32kHz crystals, not sure if they were just using that for RTC though, might've been using internal RC timer or PLL.MasterLock is fond of MSP430s, and, as might be expected from their reputation for security in general -- are quite hackable I think. An opportunity anywhere you might want a dev board with those basic features, or with a solenoid/servo control, and with micropower capability, etc.*I've seen it from a bit closer than most, but this is all publicly available info.Tim

author: jfiresto
author_rank: Frequent Contributor
timestamp: March 20, 2021, 02:53:59 pm
content: Quote from: SiliconWizard on March 19, 2021, 09:50:04 pmThat one was fully static CMOS. I first debugged a (fully static) 1802 system by clocking it with a bounceless pushbutton at the rate of 16 or 24 presses per instruction.

author: SiliconWizard
author_rank: Super Contributor
timestamp: March 20, 2021, 05:19:59 pm
content: Quote from: mck1117 on March 20, 2021, 08:47:55 amI don't think it can either.What we can do, however - well, at least on the L4 series, not sure about the F4 - is the following: use a 32kHz crystal and enable the LSE oscillator, also enable the MSI (internal) oscillator, select it as the source for the PLL, and enable MSI Auto-calibration through LSE. This way, you get a much more accurate frequency from the PLL than you would without a crystal, and just with a 32 kHz crystal. This is useful to save a crystal if you're going to use a 32 kHz one anyway, for instance for the RTC.

author: dietert1
author_rank: Super Contributor
timestamp: March 20, 2021, 05:33:46 pm
content: Last year i made a relay multiplexer with a FT245 USB FIFO and a XILINX XC92XL72. The CPLDs RC oscillator starts as soon as the FIFO has data and then clocks them to the relay coils at 200 Hz. It's a low power design in order to keep thermal EMF in the relays small. Guess it doesn't count since it isn't a MCU and the USB interface involves MHz clocks.Regards, Dieter

author: Dave
author_rank: Super Contributor
timestamp: March 20, 2021, 06:11:42 pm
content: Quote from: MikeK on March 19, 2021, 08:38:22 pmYes, but very slowly.... I'll just show myself out.

author: ChristofferB
author_rank: Frequent Contributor
timestamp: March 20, 2021, 06:22:04 pm
content: My low speed record for automatic execution is probably but undeterminedly 50 hz.I was makinga big modular euro-card based 8085 system, and it worked perfectly, aside from UART output being close to one character per 5 seconds irregardless of baudrate.After an entire summer of debugging, it turned out clock generator had failed (or did I forget a wire-wrap connection? don't recall), so it was basically running off of noise picked up by buffers from the backplane!

author: dmendesf
author_rank: Frequent Contributor
timestamp: March 20, 2021, 08:04:13 pm
content: Thanks. That's enought to lock the PLL to a 32768Hz TCXO and opens a lot of possibilities for me.Quote from: SiliconWizard on March 20, 2021, 05:19:59 pm

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 09:49:09 pm
content: Quote from: jfiresto on March 20, 2021, 02:53:59 pmAnd here I am, getting annoyed when I have to resort to machine cycle single stepping while debugging STM32 peripherals...I am not familiar with the 1802 - do I read you correct: you needed 16/24 master clocks to go through one CPU cycle?That somehow brings me back to my first machine language programs on 68k, where home-brewed code sequences were often faster than single built-in microcode. That experience came as a shock for young me, but prepared me for playing RISC.

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 10:12:26 pm
content: Quote from: ChristofferB on March 20, 2021, 06:22:04 pmI guess we have found the winner of today's contest. I can't help but imagine you standing on the winner's podium, grasping a bunch of flowers and a bottle of champagne, wondering how you got there.When I saw the 50Hz, I kind of knew what was going to come. I guess every developer saw something of that kind during their career.Remember those flip dial alarm clocks controlled by mains frequency? Well, in West Germany (or western Europe, I guess) the line frequency was a sacred cow, so those clocks were super precise.Right after reunification many East Germans bought those clocks and were super disappointed.Imagine taking such a clock from Germany on an extended business trip to Japan, starting in Tokyo and then moving on to Nagasaki...In Japan line frequency is 50Hz in Eastern Japan, but 60Hz in Western Japan. It isn't such a big issue nowadays with small appliances, but it still bites people in the butt, every now and then...

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 10:17:47 pm
content: Quote from: dietert1 on March 20, 2021, 05:33:46 pmEMF in relais? Perhaps something voltnutty?And you are right, I'm afraid. To enter the contest you might have to cram a PicoBlaze into your CPLD.

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 10:23:39 pm
content: Quote from: ChristofferB on March 20, 2021, 06:22:04 pmOn a more serious note - that is what I like about asynchronous interfaces. When your new design squawks "Hello World" at the expected baudrate, you know that lots of things went well, so far.

author: tszaboo
author_rank: Super Contributor
timestamp: March 20, 2021, 10:38:23 pm
content: Quote from: harerod on March 20, 2021, 11:50:19 amWell, the large capacitor was design practice up until about 1-2 year ago. Now the newest trend is to use a buck-boost converter to power your device from a single cell. And torture that poor battery directly with the current peaks.My point was that you can reach much lower power consumption by using sleep and faster clock. Or something more modern. For example, I got a microcontroller eval board from Microchip. It was a PIC, some switched capacitor converter an LCD and a AAAA cell, worked as a clock. Wen I got it, It looked awesome, this is the future, great. Few months in, the battery is dead.Now I have a e-paper clock on my nightstand, with temperature and humidity measurement, and logging, with Bluetooth. Working for years on two 2032 battery. I honestly thought it is going to be terrible when I bought it.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: March 20, 2021, 10:40:09 pm
content: Quote from: harerod on March 20, 2021, 10:12:26 pmIt reminds me of this classic:http://catb.org/jargon/html/magic-story.htmlA better alternative explanation might be, that it changes the EMC environment around the wire. Sort of the same thing they're getting at, just more specifically "microsecond pulses" (or submicrosecond as the case may be).Tim

author: igendel
author_rank: Frequent Contributor
timestamp: March 20, 2021, 10:43:30 pm
content: 0.000011574Hz (i.e. one instruction every ~24 hours), with an ATtiny85. A fun maker's project, of course, not anything like a true, useful implementation:https://www.idogendel.com/en/archives/579

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 11:17:37 pm
content: Quote from: T3sl4co1l on March 20, 2021, 10:40:09 pmI have known that Jargon File since the late 1980s, albeit in a German translation. Every blue moon or so I have a peek at it. It reminds me of a great era that I only know second hand by other's reports. That magic switch did puzzle me for quite a while. For the sheer lack of information I came to a similar conclusion - something EMI or other.I remember how annoyed (you may insert another term here) we were in the late 1990s when we had to rework functioning designs for those new EMC tests. It took me a long time and lots of frustrations to finally really understand the necessity for all that stuff. By now it is not Black Magic (see Howard Johnson's or Ott's grimoires) anymore, but something you design for from the very beginning of your projects. I was lucky enough to have had some great teachers and enjoy passing that knowledge on.

author: tszaboo
author_rank: Super Contributor
timestamp: March 20, 2021, 11:27:54 pm
content: Quote from: igendel on March 20, 2021, 10:43:30 pmOk, that is cool. You asked:QuoteNo, but I can think of something quite theoretical and impractical. Here it is:Connect the microcontroller clock input to a Geiger-Müller tube's output...

author: harerod
author_rank: Frequent Contributor
timestamp: March 20, 2021, 11:28:34 pm
content: Quote from: igendel onYesterdayat 23:43:30Mazel Tov - I guess? See what you did there? Right after I put ChristofferB on the podium you shlep along a machine that runs barely faster than Stonehenge. Oy vey, you make me schvitz!

author: igendel
author_rank: Frequent Contributor
timestamp: March 20, 2021, 11:58:12 pm
content: Quote from: harerod on March 20, 2021, 11:28:34 pmThat's a lot of YiddishIn fact this isn't the first time this project steals someone's thunder - there was also a Sparkfun video about running an Arduino at 1Hz.I do like the Stonehenge direction. With one instruction per year, you could run a standard blinky to track Yuga cycles or something!Quote from: tszaboo on March 20, 2021, 11:27:54 pmIs that so slow? My cheapo Geiger counter clicks every couple of seconds. Maybe we can build an LED-based binary "death clock", that runs a lot faster when there's a lot of radiation around

author: jfiresto
author_rank: Frequent Contributor
timestamp: March 21, 2021, 06:55:19 am
content: Quote from: harerod on March 20, 2021, 09:49:09 pmIt needed 8 clocks for one machine cycle (4µs for a 2mhz crystal) and then two or three machine cycles for an instruction (mostly two). I am not sure why it used eight clocks and not more aggressively the leading and trailing edges of four. It was an early design that was shrunk from a box of TTL to two and finally a single CMOS IC.

author: harerod
author_rank: Frequent Contributor
timestamp: March 21, 2021, 09:37:12 am
content: Quote from: igendel on March 20, 2021, 11:58:12 pmWith many words in contemporary German and Yiddish you couldn't tell the origin: "schleppen", "oh weh", "schwitzen". Being a fan of Ephraim Kishon or Mel Brooks, among others, doesn't hurt either. You had me in stitches, with your "Schabbes Timer".Quote from: igendel on March 20, 2021, 11:58:12 pmThe Stonehenge reference was inspired by Pratchett, of course:https://wiki.lspace.org/mediawiki/DruidsDebugging might proof awful slow...

author: harerod
author_rank: Frequent Contributor
timestamp: March 21, 2021, 09:53:06 am
content: QuoteThanks for that update. I was going to write something like "that design could have really used a pipeline".I believe there are someingeniousdesigns out there, that use different levels on the slopes of the clock signal to trigger various stages in their logic. Those devices fail utterly when some young engineer designs a super slick PCB which uses a super fast rising rectangular clock (instead of a crystal) to feed the MCU. Old story, though. Those things wouldn't happen to anybody who actually understood the manual and designed towards EMC.

author: igendel
author_rank: Frequent Contributor
timestamp: March 21, 2021, 09:59:55 am
content: Quote from: harerod on March 21, 2021, 09:37:12 amKishon is a real favorite of mine. Certainly didn't expect to find his name on the EEVBlog forums!Part of his charm was in playing with, even innovating, the Hebrew language. I wonder how it translates to other languages.Quote from: harerod on March 21, 2021, 09:37:12 amMissed that reference. But the debugging issue isn't too bad if you charge by the hour!

author: harerod
author_rank: Frequent Contributor
timestamp: March 21, 2021, 11:06:32 am
content: QuoteHere we see the core reason why learning foreign languages still makes sense. There are universal concepts that don't suffer from translation. And then there are puns that only work within the work's original language and culture. Kishon was/is hugely popular in Germany, so he must have written stuff that his translator could convey.If you have multiple puns in a single sentence (see Shakespeare or Pratchett), sadly the translator often has to settle for something inferior to the original.Quote

author: tszaboo
author_rank: Super Contributor
timestamp: March 21, 2021, 11:33:37 am
content: Quote from: igendel on March 20, 2021, 11:58:12 pmIt's not that slow, but it turns every computational problem into an NP-hard problem.So you would have no idea how fast it goes and when it finishes.

author: igendel
author_rank: Frequent Contributor
timestamp: March 21, 2021, 12:35:41 pm
content: Quote from: tszaboo on March 21, 2021, 11:33:37 amNice, time complexity of O(?)

author: peter-h
author_rank: Super Contributor
timestamp: March 21, 2021, 02:53:39 pm
content: AFAIK designs which need more edges than they have coming in tend to generate extra edges with what are basically delay lines.Many years ago I was doing FPGA/ASIC design consultancy and used the same tactic to generate sequential clocks. The fun was to prevent the layout software optimising out the string of ten or twenty inverters all connected in series