On Mon, 22 Mar 2010 19:01:14 +0000 (GMT)
ard at p850ug1.demon.co.uk (Tony Duell) wrote:
There are 2 reelated problems. With a modern-ish
microprocessor (external=
=20
program store, but things like instruction
pipelines, prefetch buffers,=20
etc), you can't know what the CPU is actually doing at any point. If you=
=20
have an internal cache, it is of course even
worse.
Well. If you need more compute power then a 8085 you have to apply
advanced technics such as caches and superscalar CPUs. Even if you can
For an awful lot of applications you don't need more power than an old 8
bit processor IMHO. Think of the large number of small PICs, 8051s, etc
thatare are in use.
get away with a small 8 bit controller you want a high
integrated
single chip solution. At least I do. A single Atmel AVR with ISP
programmer is so much more comfortable to use, cheaper and faster to
deploy then a whole board filled with CPU, RAM, ROM, IO, ... A single
chip solution will work out of the box. A discrete CPU, RAM, ROM,
No it doesn;t, you have to write the firmware :-). Amd that is the problem.
IO, ... solution needs lots of debuging in itself
before I can start to
address the real problem.
Eh? A simple microcprocessor + ROM + RAM + a couple of I/O chips will
work first time. It doesn't need to be debugged.
In any case, what I would prefer is a chip containing CPU + RAM + I/O +
clock generator _but not program store_, and an external EPROM for that
last function, That as I've said repeatedly makes firmware debugging a
lot easier.
Tony, I am afraid you have no clue what modern
microcontrolers do. E.g.
I beg to differ.
the controler in my washing machine can detect how
much dirty laundry
is in the machine. It does this by measuring the amount of soaked up
That statement is nonsense for the following reason. A microcontroller
_on its own_ can't possibly know anything about water of laundry. What it
can do is take inputs from sensors that measure physical quantiies in the
washing machine and control other devices (watere inlet valve, etc) based
on thase values.
The distinction ius importqant, because the first problem is 'what
physical quantiities need to be measured'. In the case of a washing
machine, the normal one is th water pressure at the bottom of the drum.
This, of coruse depends on the water level, rather than the actual volume
of water that's been let in. If your laundry absorbs a lot of water, you
need to let in more water for the same level.
Now you don';t need a microcontroller for that. Our old washing machine
had a water level sensor that consisted of a diaphragm linked by a tube
to the bottom of the druve. Operating on the outside of the diaphragm was
a spring, the tension of which could be adjusted by a user control. And
therew as a quick make break swtich attacehd to it. When there was enough
water in the drum, the swtich snapped over, turned off the water inlet
valve, started the motor, and enabled the circuit to the heater element
(so the heater couldn't run if there was no water in the machine).
FWIWM that machine ran for well over 35 years with no major failures. I
replaced rubber parts (hoses, seals) occasionally. I think I changed the
bearings for the drum once. And a very minor repair on the cam-timer.
The washing machine that replaced it has no more _useful_ features, it
doesn't get the laundry any cleaner. It doesn't sue significantly less
water (in fact it probably uses more, sicne there's no user control for
water level). And after 5 years I've already had to replace the motor
control module because the microcontroller on it haf failed (they
wouldn't sell just the chip :-(, and yes it was certainly the
microcontroller that had failed).
water. So the machine uses only as much water as is
needed. I.e. if the
machine isn't loaded to the max. it will use less water and thus less
energy for heating and less detregent.
Every washing machine I've ever seen or used uses the amount of detergent
that you put in it. I've never seen one where you put in an entire box of
poweder and lt uses what it thinks it beeds.
An other example. Modern car engine management systems
do a closed loop
simulation of the engine they control. (State observer a la Luenberger
or Kalman filter.) This way the management system can estimate e.g.
themperatures in various parts of the engine. This is needed to
optimize ignition and fuel injection timing, ... and thus minimize fuel
consumtion. A modern Disel common rail injection is a highly
I did say 'most' and not 'all' uses of microcntrollerss ;-)
Seriously, there are places where they are the right thing to use. And
there are places where they are not. However, all to often so-called
designmrs want to solcve every problem with a mircocontroller...
I've got a couple of almost indentcial (to the user) devices in front of
me. One uses an 8-pin PIC and a motor controller IC. The other uses 10
discrete transsitors (and no ICs at all). You can guess which one I prefer.
sophisticated mechatronical system. Not to talk about
anti-lock brake
system... This is somthing I definitely want as it saves my money and
enhances safety. But you can't do this with a 8085.
The total cost of a car is not primarily the cost of the fuel IMHO.
Considerign the fuel economy from electronic engine management doesn't
seem to be that great (based on the cars I've worked on -- I don't
drive), and considerign they are much more expensive for me to repair, I
am not at all convinced it will save me money in the end.
-tony