The (now defunct) Fuelinmoto website had an excellent technical descrition of this problem which affects all Ducatis with the 1.6M and 1.5m ECUs. There is no cure, it can only be minimised by careful set up, some bikes are worse than others, some run perfectly.
Fortunately I 'd saved a copy of the very article so I will post it here.
"8 - My Guzzi/Ducati has a misfire at 3400 rpm on steady throttle - why?"
Firstly, some background on the Weber 1.6M ECU as used on 1100 Sport and 916
Biposto.
The controller is the Motorola 68HC11, a chip developed ten years ago for
injection applications. Delco ECUs also use this chip. Although it's only 8
bit it has 16 bit math, and is found in many other applications as well as
injection.
The timing is derived from one sensor at cam speed. On Ducatis this is the
cam drive jackshaft, on Guzzis it's in the cam drive in the timing chest.
The sensor collects 48 pulses plus 2 gaps (known as missing tooth
triggering) totalling 50 intervals, for a resolution of 14.4 degrees
crankshaft per pulse. The ECU derives both engine speed and phase from this
sensor. By phase I mean the point in the firing cycle of each cylinder.
Previous Ducati and Guzzi models used a processor which took 2 triggers, one
directly from the crank at 90 degree intervals, and one phase trigger which
took one pulse from the cam drive, ie once per two revs, to identify engine
phase.
Herein lies the first, and most common, problem with all of the late model
bikes. The ignition timing is derived from a half-speed sensor, which is
prone to mechanical backlash... this means that under certain engine
conditions, the gear which triggers the sensor is wobbling slightly between
drive and trail on it's driving gear. In other words, the advance is
calculated from an interval which can vary depending on mechanical slop in
the cam drive.
Two factors affect this. First, the period immediately before the relevant
ignition point is used to calculate the degrees of advance as a fraction of
the overall period of 14.4 degrees. So variance on the interval produces
variance on the fraction. Secondly the computer also calculates RPM from the
same interval. The ECU has a sophisticated acceleration / deceleration
algorithm which anticipates what is happening next, based on the history of
recent pulse intervals. If the pulse intervals are getting shorter, the ECU
assumes acceleration and modifies the ignition timing to accomodate a
predicted shorter interval in the next pulse. If the pulse intervals are
lengthening then the ECU assumes deceleration, and also trims the advance.
Now, if the interval is changing from shorter to longer, PULSE BY PULSE, the
ECU is buggered because it cannot tell if the engine is in acceleration or
deceleration. So we have a misfire situation. This is precisely the kind of
operation you mention where your engine stumbles on cruise at 3400 or 3800
rpm. As you said, the engine pulls fine on drive, but if the engine is
slopping around on constant throttle, the ECU can have difficulty working it
all out, and you get a stumble. In my opinion this stumble is a "wild card"
ignition pulse, maybe 10 or more degrees out, as the ECU tries to figure out
an engine mode. You would also observe that it only has one bad ignition
pulse usually, which often completely stops the engine. We have been
observing this phenomenon since 1995 when the 1.6 was introduced on Ducati
748SP models.
The funny thing is, the rpm point at which this happens is different from
Guzzi to Ducati, even from 1100 Sport to Daytona RS. But there's the rub,
because each engine has different bore/stroke, different resonances, and
each individual engine is microscopically different to the last. That's why
some bikes seem to runs flawlessly, and others of the same type stall at
every traffic light.
Further, the previous ECU did not exhibit this fault to any great degree.
Remember that this ECU used an RPM (and ignition) trigger which was on the
crankshaft, with no possible backlash. The only time this fault shows on the
older ECU is when the main bearings are failing, and the crankshaft is
wobbling on the bearings. This also produces a sequence of short and long
pulse, which confused the ECU in a similar fashion. This I have seen dozens
of times, with disbelieving customers who refused to listen to me when I
said their misfire was caused by failing main bearings! It proved true in
almost every case. (or crankcase, because a broken crankcase does the same thing by allowing the crankshaft to wobble in the cases).
The solution.. there is no solution yet. Again I am treated with disbelief
when I suggest that to get rid of a misfire you split your 916 engine and
re-shim the jack-shaft end float, and check the play on the jackshaft
bearings. "But it's the computer" they cry.
A final comment on this misfire problem. Both Ducati and Guzzi produced a
model which switched from the P8 ECU to the 1.6M ECU in mid-production. The
1994 916 Strada (solo seat) used a P8 ECU, and the Biposto (95 - now) uses a
1.6M. The engine spec did not change at all when they swapped to the new
ECU, but suddenly the bikes had a misfire. Some people even traded their
Stradas on a Biposto, only to find they had exactly the same power, but with
an added misfire. The same applies to the Guzzi Daytona Racing (P8, C cams)
and the Daytona RS (1.6M, C Cams).
We are still trying to find a fix for this in software, but I confess I
don't think it is really possible. The main reason it is more prevalent on
Guzzis is simply the variance in manufacture compared to Ducati."