= Differences from stock 68HC11 =
This applies to the 1227730, 749:
From: Ludis Langens
Date: Mon, 15 Feb 1999 04:37:26 -0800
Subject: GMP4 MPU information
The architecture of the GMP4 processor chip (used in the GM P4 generation of ECMs) is almost the same as a Motorola 68HC11 with the following exceptions:
Bits 7 and 6 of the CCR (S and X in an 'HC11) always read as 1's. The STOP instruction ($CF) is missing. The XGDX instruction ($8F) is missing. The XGDY instruction ($18 8F) is missing.
The interrupt vector map is:$FFF0 SWI instruction $FFF2 Internal interrupt (UART & periodic interrupt) $FFF4 External interrupt $FFF6 Illegal instruction $FFF8 Bus reset (any read or write to $6000 through $6FFF) $FFFA Watchdog reset $FFFC Clock monitor reset $FFFE Power on and external reset
None of the 'HC11 I/O is present. The GMP4 has it's own I/O registers mapped to $4000 through $400F.
On-chip dynamic RAM exists from $0000 through $01FF. Data in RAM will be lost when the main power supply shuts off.
An MPU with the part number 16034980 was used to collect the above data. Several other part numbers are used interchangeably. They may have differences.
= Special Registers =
*$3FC0 - $3FFA
These are timers and counters. They get cleared in the bua_hac initialization.
*$4000 is the
SPI data register. Data to be sent is put here and received data is read from here.
This corresponds to $102A on a regular 68HC11 chip.
*$4001 is the
SPI status register.
Bit 7 is the done flag, bit 6 is write collision error, bit 4 is mode fault error.
This corresponds to $1029 on a regular 68HC11 chip.
*$4002 is an I/O port select register. This is for PORT2 on the 749 schematic. The source code selects peripheral chips by doing something like this:
LDX #$4002 ; GM Register BCLR 0,X,#$08 ; Select serial A/D chip - Clear Bit(s) in memory
*$4003 is the data direction register. For which register? It doesn't seem like $4002 because they're used as outputs.
This is set to $8F (1000 1111) at startup. 0 means input, 1 means output.
* Bit 7: 1 (Which external pin?) Bit 6: 0 (Which external pin?) Bit 5: 0 (Which external pin?) Bit 4: 0 (Which external pin?) Bit 3: 1 (Which external pin?) Bit 2: 1 (Which external pin?) Bit 1: 1 (Which external pin?) * Bit 0: 1 (Which external pin?)
*$4004 is an baud rate and I/O register.
* Bit 7: '''Unused''': Is this externally connected? Bit 6: Match enab bit Bit 5: SS1 * Bit 4: SS0
Bits 4 and 5 determine the serial port baud rate. I have a feeling this is a clock divider setting.
Baud: Bit4: Bit5: 256 1 1 1024 0 1 8192 1 0
* Bit 3: D03 1 = Enables SXR chip (bua_hac) Bit 2: D02 Bit 1: D01 or Timer 1 Control PW Mod * Bit 0: From serial rxd?
*$400B is the watchdog timer. COP, or Computer Operating Properly.
It needs to have $FF00 written to it periodically to ensure that the code hasn't gotten stuck somewhere.
During initialization it is generally done in subroutines (see the
68HC11Checksum|checksum tutorial? for details on how it is done.
During normal running it is done in the MODE Word #1 loop (does this make sense? I'm just guessing here...)
*$5000 is log RAM???
Initialization code sets it to $08.
= Peripherals =
According to
Ludis' schematic:
'''TODO''' Links to datasheets?
'''TODO''' Some notes on how to read from these peripherals.
*U5: P/N 16034988 Chip Select is called ~ADCCS, and is connected to PORT23. '''Note''' that this is negative logic.
Note that AN9 goes into an analog multiplexer U6, which allows it to select from several different analog inputs.
'''TODO''' Some notes on timing for reading analog voltages.
*U10: P/N 16045154 Chip Select is called ~GLUCS, and is connected to PORT27. '''Note''' that this is negative logic.
*U13: P/N 16034984 Chip Select is called
III1CS? , and is connected to PORT21.
*U15: P/N 16034984 Chip Select is called
III2CS? , and is connected to PORT26.
--
AlexHarford - 30 Jun 2006