it looks that the problem was due to the checking of the busy flag
the loop (pseudo code)
check db7 -gobackthere if still high
was simply too long,shortening it seems enough to solve the problem
the strange thing is that checking the signal with my logic state
nalyzer( a vintage 8 bit tektronix 308) it looks that once the enable pin is
turned high the DB7 becames low noramlly,but because of the low depth of
the machine i can suppose that in some case it misses it,eventough i used
dummy pulses to trigger it in the zone most likely problematic
Thank you all again,once this Ng is very useful even for a not-so-skilled
guy as i am
i assure you that i post questions only after more than 3 hours of
depression about the problem
What you see reminds me of a bug I discovered several years ago. I do
not remember exactly all the details now, but I can tell you that if
you are using a PIC processor, and using the code that Microchip
suggested in an ap note about driving LCD numeric displays, it may be
wrong. It went something like, "enable reading status, disable
reading status, read the bit" instead of "enable reading status, read
the bit, disable reading status." Most of the time the first one
worked, because the tri-state bus had enough capacitance to hold the
correct value, but sometimes it failed, and the failure could be
consistent because of other things going on. It could be influenced
by the difference between 8 bit and 4 bit modes. The last time I
checked, quite some time ago, but also quite some time after I
reported the bug to Microchip, it was still in the ap note the same
way. I wonder how many people have used their code and not caught the
error. -- Yes, I think it's still there in AN587, at code lines
419-421. If this isn't the problem you're having, maybe someone else
will see it and be saved some agony. ;-)
Cheers,
Tom