Beruflich Dokumente
Kultur Dokumente
Introduction
Over a number of years of reverse engineering ECUs I have determined that there are many Japanese ECUs that use a
processor/microcontroller family numbered 76xxxx, the evidence points to these processors being manufactured by Toshiba.
I have never found any documentation for these devices and this document has been prepared from information gleaned from
bench testing, code analysis and from the work carried out on the 76C75 (AKA MH6111) by Bill Sundahl and others on the,
now lost forever, DSM Yahoo group.
This is the nearest thing to a datasheet that there is on the internet but the information has been gleaned from reverse
engineering and not from the manufacturer's datasheet. Signal and register names are my own using Motorola/Hitachi
nomenclature. No claims are made for accuracy, use the data with caution and at your own risk, please do contact me if you
have any further information or corrections.
The 76xxx processor is an evolution of the Hitachi HD6301 processor core used in some earlier ECUs. The HD6301 core
has been extended with an additional index register (Y), extra timing functions have been added and the instruction set
greatly extended. The 40-pin DIL variants have a pinout compatible with the 6301 and the Motorola 6801 processor, indeed
an Aisin Warner TCM uses only 6801 instructions, ignoring the Y-indexing and additional op-codes completely; the larger
packages have unique pin outs. An interesting point to note is that although the lower part of the register set is backwardly
compatible with the 40-pin HD6301V the upper registers are not the same, nor are the timers compatible with those of the
larger 6301 packages.
For development and testing I am using MGTEK MiniIDE with the Telemark TASM assembler using a modified op-code
table, however it is possiblt to use any hc11 compiler if only 6801 instructions are used. I have a Windows based
disassembler in development and there are instructions on how to setup MiniIDE here.
Processor Variants
Below is a list of known variants please email me if you know of any others.
Package details
Processor pin-outs
This is very much a work in progress not all pin outs are known.
PORTS
Data Direction Registers - 1=output, 0=input
Ports shared with other functions, ie timers, are generally read only, unless this is selectable in another register which hasn't
yet been discovered (0Fh is unknown).
Timers
Timer 1
Timer 1H, Timer1L - 09h:0Ah
This is a 16-bit Free running counter at 09h and 0Ah and is driven by the E-clock (MH6211=4MHz). Its value can be set by
writing a 16-bit word to to 09h.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Timer1H Timer1L
7 6 5 4 3 2 1 0
T1ICF1 T1OCF1 T1OIF EICI1 EOCI1 T1OIE IEDG1 OLVL1
bit7 ICF1 - Input Capture Flag 1 Set when an Input Capture 1 Event occurs
bit6 OCF1 - Output Compare Flag 1 Set when an Output Compare 1 event occurs
bit5 OIF Timer 1 overflow Interrupt flag
bit4 EICIn - Enable Input Capture 1 Interrupt Input Capture Interrupt 1 Enable
bit3 EOC1I - Enable Output Compare 1 Interrupt Set to enable an interrupt on output compare event
bit2 OIE - Timer 1 Overflow Interrupt Enable Set to enable
This bit selects which edge causes an Input Capture event
bit1 IEDG1 - Input Edge Select 1
0=negative edge, 1=positive edge
bit0 OLVL1 - Output Level 1 This bit is transferred to P21/OC1 when an Output Compare 1 event occurs
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
T1OCR1H T1OCR1L
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
T1ICR1H T1ICR1L
7 6 5 4 3 2 1 0
ICF2 OCF2 OLVL4 EICI2 EOCI2 OLVL3 IEDG2 OLVL2
bit7 ICF2 - Input Capture Flag 2 Set when an Input Capture 2 Event occurs
bit6 OCF2 - Output Compare Flag 2 Set when an Output Compare 2 event occurs
bit5 OLVL4 - Output Level 4 This bit is transferred to P13/OC4 when an Output Compare event occurs
bit4 EICI2 - Enable Input Capture Interrupt n Input Capture Interrupt 2 Enable
bit3 EOCI2 - Enable Output Compare 2 Interrupt Set to enable an interrupt on output compare event
bit2 OLVL3 - Output Level 3 This bit is transferred to P12/OC3 when an Output Compare 2 event occurs
This bit selects which edge causes an Input Capture event
bit1 IEDG2 - Input Edge Select 2
0=negative edge, 1=positive edge
bit0 OLVL2 - Output Level 2 This bit is transferred to P11/OC2 when an Output Compare 2 event occurs
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
T1OCR2H T1OCR2L
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
T1ICR2H T1ICR2L
Timer 2
Timer 2H, Timer2L - 29h,2Ah
This is a 16-bit Free running counter at 29h and 2Ah and is driven by the E-clock (MH6211=4MHz). Its value can be set by
writing a 16-bit word to to 29h ????????
7 6 5 4 3 2 1 0
???? ???? ???? ???? ???? ???? ???? ????
Pulse Accumulator
L0024, PACTL - PA Control Register
L0026 - RTI_CTRL1
Timer control and status register used for real time interrupt? init to $64 = 1.25ms?
L0027 - RTI_CTRL2?
Real time interrupt frequency setting: Freq = 125000/(256-x) where x is the content of rti_freq
L0028 - Unknown
bit7 6 5 4 3 2 1 bit0
7 6 5 SS2 CC1 CC0 SS1 SS0
7 6 5 4 3 2 1 bit0
RDRF ORFE TDRE RIE RE TIE TE SWU
bit7 - ?
bit6 - ?
bit5 - Done - set to 1 when conversion complete
bit4 - Clock Control/Format Select
bit3 GO Start Bit set to 1 to start conversion
bit2-0 C(2:0) ADC channel number
Interrupt Vectors
Interrupt vectors are located at the top of the 64k address range:
FFD8h;
FFDAh SCI Serial Communications Interface RX or Tx
FFDCh
FFDEh
FFE0h
FFE2h
FFE4h RTI Real Time Interrupt
FFE6h
FFE8h;
FFEAh T1OF Timer 1 Overflow
FFECh OC3 Output Compare 3
FFEEh OC2 Output Compare 2
FFF0h OC1 Output Compare 1
FFF2h ???
FFF4h Input Capture 2
FFF6h Input Capture 1
FFF8h nIRQ External Masked Interrupt
FFFAh SWI Software Interrupt
FFFCh nNMI Not Masked External Interrupt
FFFEh nReset System Reset
There is no apparent trap for invalid op-codes, the processor ignores any code that it doesn't recognise.
Instruction Set
The instruction set (this needs verifying) is available as a word document and can be downloaded here:
I have a few test programmes that are available for download, these programmes demonstrate the use of various functions.
Note that these programmes were developed for use on Suzuki ECUs with a watchdog timer output on portx bitx. before
running any programmes on your hardware you should check the configuration settings for compatibility. These programmes
were compiled using the TASM assembler under MiniIDE.
Part Numbers
The 76xxx series appears to follows conventional Toshiba part numbering:
TMP = Toshiba MicroProcessor
76 = Processor series
C = Masked ROM, P = One Time programmable, E = EEPROM
75 = processor type
A = Enhanced
P = Plastic DIP, T = Plastic LCC, F = Plastic QFP
76xxx vs MC68HC11
It has been stated elsewhere that the 76xxx processor is a variant of the 68HC11, however this is clearly not
correct. These processors are an evolution of the 6301 as was the 68HC11 but they are a parallel development
with obvious differences. The instruction sets use different op-codes for many functions, primarily the
implementation of the Y index register, that means that HC11 software tools are unsuitable for use with the
76xxx.
The processor registers are also mapped differently, with the HC11 defaulting to address 1000h and the 76xxx
defaulting to or being fixed at address 0000h.
I have not seen any reference to an HC11 style bootloader implemented on the 76xxx although there is some
evidence that there may be one on processors fitted to ECUs using an external EPROM, however this would be
for loading firmware onto a pre-built board and there is no erase capability.