MC68HC12, MC9S12 Series Information =================================== 68HC12, MC9S12A, MC9S12B, MC9S12C, MC9S12D, MC9S12E Note: it has been incredibly difficult to track down consistant information about the 68HC12 series. Parts of this may be inaccurate, or just plain wrong. 68HC12 Memory map ----------------- 68HC12 6812A4 6812B 9S12C32 9S12Dx512 9S12Dx256 9S12Dx128 9S12Dx64 9S12XE 0000+---------+---------+---------+---------+---------+---------+---------+---------+---------+ |registers|registers|registers|registers|registers|registers|registers|registers|registers| 0200+ +---------+---------+ | | | | | | | | / / / / | / / / / | | | | | | | 0400+---------+/ / / / /|/ / / / /+---------+---------+---------+---------+---------+ | | I/O | / / / / | / / / / | | / / / / | EEPROM | / / / / | / / / / | | 0800+---------+---------+---------+ +---------+---------+---------+---------+---------+ | SRAM | SRAM | SRAM | RAM | | / / / / | | |paged EEP| 0C00+---------+---------+---------+ | |/ / / / /| | +---------+ | | / / / / | / / / / | | | / / / / | EEPROM | EEPROM | unpaged | 0D00+ EEPROM |/ / / / /+---------+ | RAM |/ / / / /| | | EEPROM | | | / / / / | EEPROM | | | / / / / | | | | 1000+---------+---------+---------+---------+ +---------+---------+---------+---------+ | | EEPROM | / / / / | / / / / | | | / / / / | / / / / | paged | 2000+ +---------+/ / / / /|/ / / / /| | RAM +---------+/ / / / /| RAM | | SRAM | / / / / | / / / / | / / / / | | | RAM +---RAM---+ | 4000+ +---------+---------+---------+---------+---------+---------+---------+---------+ | | / / / / | / / / / | / / / / |ext EEPRM|extension|extension|extension| unpaged | 7000+ |/ / / / /|/ / / / /|/ / / / /+---------+ EEPROM | EEPROM | EEPROM | RAM | | | / / / / | / / / / | / / / / | EEPROM | | | | | 8000+---------+---------+---------+---------+---------+---------+---------+---------+---------+ | paged FLASH | C000+---------+---------+---------+---------+---------+---------+---------+---------+---------+ | unpaged FLASH | FFFF+---------+---------+---------+---------+---------+---------+---------+---------+---------+ Vectors ------- VECBASE+$00 Reserved ... VECBASE+$0E Reserved VECBASE+$10 Spurious interrupt VECBASE+$12 System Call Interrupt (SYS) VECBASE+$14 CPU Access Error VECBASE+$16 GATE software error interrupt VECBASE+$18 Reserved ... VECBASE+$3A Reserved VECBASE+$3C ATD1 Compare Interrupt VECBASE+$3E ATD0 Compare Interrupt VECBASE+$40 TIM Pulse accumulator input edge VECBASE+$42 TIM Pulse accumulator A overflow VECBASE+$44 TIM timer overflow VECBASE+$46 TIM timer channel VECBASE+$48 TIM timer channel VECBASE+$4A TIM timer channel VECBASE+$4C TIM timer channel VECBASE+$4E TIM timer channel VECBASE+$50 TIM timer channel VECBASE+$52 TIM timer channel VECBASE+$54 TIM timer channel VECBASE+$56 SCI7 VECBASE+$58 Periodic interrupt timer channel 7 VECBASE+$5A Periodic interrupt timer channel 6 VECBASE+$5C Periodic interrupt timer channel 5 VECBASE+$5E Periodic interrupt timer channel 4 VECBASE+$60 Reserved VECBASE+$62 Reserved VECBASE+$64 XGATE software trigger 7 VECBASE+$66 XGATE software trigger 6 VECBASE+$68 XGATE software trigger 5 VECBASE+$6A XGATE software trigger 4 VECBASE+$6C XGATE software trigger 3 VECBASE+$6E XGATE software trigger 2 VECBASE+$70 XGATE software trigger 1 VECBASE+$72 XGATE software trigger 0 VECBASE+$74 Periodic interrupt timer channel 3 VECBASE+$76 Periodic interrupt timer channel 2 VECBASE+$78 Periodic interrupt timer channel 1 VECBASE+$7A Periodic interrupt timer channel 0 VECBASE+$7C High Temperature Interrupt VECBASE+$7E Autonomous periodical interrupt (API) VECBASE+$80 Low-voltage interrupt (LVI) VECBASE+$82 IIC1 Bus VECBASE+$84 SCI5 VECBASE+$86 SCI4 VECBASE+$88 SCI3 VECBASE+$8A SCI2 VECBASE+$8C PWM emergency shutdown VECBASE+$8E Port P Interrupt VECBASE+$90 CAN4 transmit VECBASE+$92 CAN4 receive VECBASE+$94 CAN4 errors VECBASE+$96 CAN4 wake-up VECBASE+$98 CAN3 transmit VECBASE+$9A CAN3 receive VECBASE+$9C CAN3 errors VECBASE+$9E CAN3 wake-up VECBASE+$A0 CAN2 transmit VECBASE+$A2 CAN2 receive VECBASE+$A4 CAN2 errors VECBASE+$A6 CAN2 wake-up VECBASE+$A8 CAN1 transmit VECBASE+$AA CAN1 receive VECBASE+$AC CAN1 errors VECBASE+$AE CAN1 wake-up VECBASE+$B0 CAN0 transmit VECBASE+$B2 CAN0 receive VECBASE+$B4 CAN0 errors VECBASE+$B6 CAN0 wake-up VECBASE+$B8 FLASH VECBASE+$BA FLASH Fault Detect VECBASE+$BC SPI2 VECBASE+$BE SPI1 VECBASE+$C0 IIC0 bus VECBASE+$C2 SCI6 VECBASE+$C4 MSCAN transmit/CRG self-clock mode VECBASE+$C6 MSCAN receive/CRG PLL lock VECBASE+$C8 MSCAN error/Pulse accumulator B overflow VECBASE+$CA Modulus down counter underflow VECBASE+$CC Port H VECBASE+$CE Port J VECBASE+$D0 ATD1/MSCAN wakeup VECBASE+$D2 ATD0 VECBASE+$D4 SCI1 VECBASE+$D6 SCI0 VECBASE+$D8 SPI0 serial transfer complete VECBASE+$DA Pulse accumulator input edge VECBASE+$DC Pulse accumulator A overflow VECBASE+$DE Timer overflow VECBASE+$E0 Timer channel 7 VECBASE+$E2 Timer channel 6 VECBASE+$E4 Timer channel 5 VECBASE+$E6 Timer channel 4 VECBASE+$E8 Timer channel 3 VECBASE+$EA Timer channel 2 VECBASE+$EC Timer channel 1 VECBASE+$EE Timer channel 0 VECBASE+$F0 Real time interrupt VECBASE+$F2 IRQ VECBASE+$F4 XIRQ VECBASE+$F6 SWI VECBASE+$F8 TRAP, Unimplemented instruction $FFFA COP failure reset \ Not remappable as $FFFC COP monitor fail reset } VECBASE set to $FF $FFFE Reset / on reset Programming notes ----------------- 68HC12 starts up with COP (Computer Operating Properly) timer enabled, so if there is no interupt service routine, main code needs to start with: CLR COPCTL ; Disable COP timer 68HC11 starts up with COP timer enabled. Device naming scheme -------------------- MC9S12[X][AAA][P][NNN][AAAA] | | | | | +----- package, eg temperature, voltage, etc | | | | +---------- flash size in K in power of two, or in M *100 | | | +-------------- P=??? | | +------------------ NE | +---------------------- X=Contains XGATE mmu/dma +-------------------------- CPU A B C D E eg MC68HC12 MC6812A4 MC6812B MC9S12 25MHz up to 512K flash MC9S12C32 MC9S12NE64 25MHz 64K flash 8K RAM ethernet MC9S12X 40MHz XGATE 1M flash MC9S12XEP100 50MHz XGATE MC9S12XE MC9S12DP256 MC9S12XDP512 XGATE 512K flash MC9S12Dx512 MC9S12Dx256 MC9S12Dx128 MC9S12Dx64