Anyone encountered a REALLY severe eZ80F91 Bug

G

Gavin Melville

Jan 1, 1970
0
Hi All,

Just a week into a eZ80 project we have encountered a severe bug,
severe enough to make the device useless for our use, and I wondered
if anyone else has come across this.

The device is a eZ80F91, and we are using all the timers. The
problem is that if your code is at an address with the low byte being
0,1,2 or 3(depending on which timer is in use), and the value on the
data bus is odd (bit zero set) then a timer event will be missed. This
doesn't happen often but when it does it really screws our system.

Zilog know about this, and have published the details in an errata
sheet. The suggested work around is to run timers in parallel, and
one of them will work when the other fails, which doesn't work for us,
or to move your code so there are nop's at addresses ending in 0,1,2
or 3.

This seems to apply to date codes 0317 or later -- our devices are
0539. Calling/emailing Zilog hasn't produced any response so far.

Has anyone used this device and encountered this, and does anyone know
if there has been a silicon update ?.
 
I

Ignoramus8946

Jan 1, 1970
0
With my Cubloc CPU, creating a function that takes a Single (like C's
32 bit real), and calling it creates awful havoc.

i
 
J

Joel Kolstad

Jan 1, 1970
0
Jamie said:
Zilog isn't the only one's that had strange problems.
i remember the 6502 where the jump indirect instruction
could not reference a jump table index that had the low
byte on the end of one page and high byte on the start of
the next page of the 256 byte pages.

This is true, but IMO is nowhere near as severe of a bug as what the OP
describes. (The 6502 bug is easily detectable with an assembler as you
point out and at worst costs one byte per occurrence to fix.)

I've heard that particular 6502 bug was used by some copy protection
routines to fool novice programmers!
 
J

Jamie

Jan 1, 1970
0
Gavin said:
Hi All,

Just a week into a eZ80 project we have encountered a severe bug,
severe enough to make the device useless for our use, and I wondered
if anyone else has come across this.

The device is a eZ80F91, and we are using all the timers. The
problem is that if your code is at an address with the low byte being
0,1,2 or 3(depending on which timer is in use), and the value on the
data bus is odd (bit zero set) then a timer event will be missed. This
doesn't happen often but when it does it really screws our system.

Zilog know about this, and have published the details in an errata
sheet. The suggested work around is to run timers in parallel, and
one of them will work when the other fails, which doesn't work for us,
or to move your code so there are nop's at addresses ending in 0,1,2
or 3.

This seems to apply to date codes 0317 or later -- our devices are
0539. Calling/emailing Zilog hasn't produced any response so far.

Has anyone used this device and encountered this, and does anyone know
if there has been a silicon update ?.


--

TIA,
Gavin Melville
[email protected]
Zilog isn't the only one's that had strange problems.
i remember the 6502 where the jump indirect instruction
could not reference a jump table index that had the low
byte on the end of one page and high byte on the start of
the next page of the 256 byte pages.
in which case, you could use a compiler magic switch
to test the current address value and insert a NOP
instruction to force the address to fall with in that page.
other wise, it would use the first byte of the same page
as the high byte address and send your code to where ever
land.
if you think its really a memory address problem then
try inserting a NOP at code before that maybe to move it
up or what ever.
 
Top