Technical reference

Back to CPU registers To interrupt vectors



I/O registers

The following quick-reference table shows all control registers and bits. The addresses are those resulting from a hardware reset. The registers are generally grouped according to the device they are associated with. Some registers are input/output registers while other perform only control functions. Reference appropriate text material before using these registers.

w = write
r = read

1000 porta 1001 reserved 1002 pioc w 1....... staf: strobe a flag, set at active edge of stra pin/inactive w .1...... stai: hardware interrupt request when STAF=1 w ..1..... cwom: port c open-drain w ...1.... hnds: handshake/simple strobe mode w ....1... oin: output/input handshake select w .....1.. pls: STRB pulse/level active w ......1. ega: rising/falling edge select for STRA w .......1 invb: STRB active high/low 1003 portc 1004 portb 1005 portcl 1006 reserved 1007 ddrc: data direction register for port c (1=output) 1008 portd (b0..b5) rw 1....... mode0 or boot: strb rw 1....... mode1 or test: r/w rw .1...... mode0 or boot: stra rw .1...... mode1 or test: as rw ..1..... pd5/ss* rw ...1.... pd4/sck rw ....1... pd3/mosi rw .....1.. pd2/miso rw ......1. pd1/txd rw .......1 pd0/rxd 1009 ddrd: data direction register for port d (1=output) (b0..b5) 100A porte: port e data register 100B cforc: timer compare force register w 1....... foc1 w .1...... foc2 w ..1..... foc3 w ...1.... foc4 w ....1... foc5 w 11111111 force compare(s) w .....xxx reserved 100C oc1m: set bits to enable oc1 to control corresponding pin(s) of port a w 1....... oc1m7 w .1...... oc1m6 w ..1..... oc1m5 w ...1.... oc1m4 w ....1... oc1m3 w .....xxx reserved w 11111111 force compare(s) 100D oc1d: if oc1mx is set, data in oc1dx is output to port a bit-x on successful oc1 compares w 1....... oc1d7 w .1...... oc1d6 w ..1..... oc1d5 w ...1.... oc1d4 w ....1... oc1d3 w .....xxx reserved w 11111111 force compare(s) 100E tcnt: timer counter register 1010 tic1: timer input capture register 1012 tic2: timer input capture register 1014 tic3: timer input capture register 1016 toc1: timer output compare register 1018 toc2: timer output compare register 101A toc3: timer output compare register 101C toc4: timer output compare register 101E toc5: timer output compare register 1020 tctl1: timer control register 1 w 1....... om2 w .1...... ol2 w ..1..... om3 w ...1.... ol3 w ....1... om4 w .....1.. ol4 w ......1. om5 w .......1 ol5 for all pairs: w 00...... timer disconnected from output pin logic w 01...... ocx output line: toggle w 10...... ocx output line: 0 w 11...... ocx output line: 1 1021 tctl2: timer control register 2 w xx...... reserved w ..1..... edg1b w ...1.... edg1a w ....1... edg2b w .....1.. edg2a w ......1. edg3b w .......1 edg3a for all pairs: w ..00.... capture: disabled w ..01.... capture: on rising edge only w ..10.... capture: on falling edge only w ..11.... capture: on any edge 1022 tmsk1: main timer interrupt mask reg 1 w 1....... oc1l: output compare 1 interrupt enable w .1...... oc2l: output compare 2 interrupt enable w ..1..... oc3l: output compare 3 interrupt enable w ...1.... oc4l: output compare 4 interrupt enable w ....1... oc5l: output compare 5 interrupt enable w .....1.. ic1l: input compare 1 interrupt enable w ......1. ic2l: input compare 2 interrupt enable w .......1 ic3l: input compare 3 interrupt enable 1023 tflg1: main timer interrupt flag reg 1 w 1....... oc1f: clear output compare flag 1 w .1...... oc2f: clear output compare flag 2 w ..1..... oc3f: clear output compare flag 3 w ...1.... oc4f: clear output compare flag 4 w ....1... oc5f: clear output compare flag 5 w .....1.. ic1f: clear input capture flag 1 w ......1. ic2f: clear input capture flag 2 w .......1 ic3f: clear input capture flag 3 1024 tmsk2: misc timer interrupt mask reg 2 w 1....... toi: timer overflow interrupt enable w .1...... rtii: interrupt enable w ..1..... paovi: pulse accumulator overflow interrupt enable w ...1.... paii: pulse accumulator input interrupt enable/disable w ....xx.. reserved w ......00 pr1,pr0: timer prescale factor 1 w ......01 pr1,pr0: timer prescale factor 4 w ......10 pr1,pr0: timer prescale factor 8 w ......11 pr1,pr0: timer prescale factor 16 1025 tflg2: misc timer interrupt flag reg 2 w 1....... tof: clear timer overflow flag w .1...... rtif: clear real time (periodic) interrupt flag w ..1..... paovf: clear pulse accumulator overflow flag w ...1.... paif: clear paif pulse accumulator input edge flag w ....xxxx reserved 1026 pactl: pulse accumulator control register w 1....... ddra7: data direction for port a bit7 is output/input w .1...... paen: enable/disable pulse accumulator system enable w ..1..... pamod: pulse acc mode: gated time accumulation/event counter w ...1.... pedge: pulse acc edge ctrl: rising/falling edges w ....xx.. reserved w ......00 rtr1,rtr0: interrupt rate divide by 2^13 w ......01 rtr1,rtr0: interrupt rate divide by 2^14 w ......10 rtr1,rtr0: interrupt rate divide by 2^15 w ......11 rtr1,rtr0: interrupt rate divide by 2^16 1027 pacnt: pulse accumulator count register 1028 spcr: spi control register w 1....... spie: spi interrupt enable w .1...... spe: spi system enable w ..1..... dwom: port d: open-drain/normal w ...1.... mstr: master/slave mode w ....1... cpol: clock polarity w .....1.. cpha: clock phase w ......00 spr1,spr0: spi e-clock divided by 2 w ......01 spr1,spr0: spi e-clock divided by 4 w ......10 spr1,spr0: spi e-clock divided by 8 w ......11 spr1,spr0: spi e-clock divided by 16 1029 spsr: spi status register r 1....... spif: spi interrupt request r .1...... wcol: write collision status flag r ...1.... modf: spi mode error interrupt status flag r ..x.xxxx reserved 102A spdr: spi data register 102B baud: sci baud rate control register w 1....... tclr: clear baud counter chain (test only) w .x...... reserved w ..00.... scp1,scp0: serial prescaler select: divide e-clock by 1 w ..01.... scp1,scp0: serial prescaler select: divide e-clock by 2 w ..10.... scp1,scp0: serial prescaler select: divide e-clock by 4 w ..11.... scp1,scp0: serial prescaler select: divide e-clock by 13 w ....1... rckb: sci baud rate clock test (test only) w .....000 scr2,scr1,scr0: prescaler output divide by 1 w .....001 scr2,scr1,scr0: prescaler output divide by 2 w .....010 scr2,scr1,scr0: prescaler output divide by 4 w .....011 scr2,scr1,scr0: prescaler output divide by 8 w .....100 scr2,scr1,scr0: prescaler output divide by 16 w .....101 scr2,scr1,scr0: prescaler output divide by 32 w .....110 scr2,scr1,scr0: prescaler output divide by 64 w .....111 scr2,scr1,scr0: prescaler output divide by 128 102C sccr1: sci control register 1 w 1....... r8: receive bit 8 w .1...... t8: transmit bit 8 w ...1.... m: ninth data bit w ....1... wake: wake up by address mark/idle line (msb/no low) w ..x..xxx reserved 102D sccr2: sci control register 2 w 1....... tie: transmit interrupt enable w .1...... tcie: transmit complete interrupt enable w ..1..... rie: receiver interrupt enable w ...1.... ilie: enable/disable idle line interrupts w ....1... te: transmitter enable (toggle to queue idle character) w .....1.. re: receiver enable on/off w ......1. rwu: receiver asleep/normal w .......1 sbk: send break 102E scsr: sci status register r 1....... tdre: transmit data register empty flag r .1...... tc: transmit complete flag r ..1..... rdrf: receive data register full flag r ...1.... idle: idle line detected flag r ....1... or: over-run error flag r .....1.. nf: noise error flag r ......1. fe: framing error flag r .......x reserved 102F scdr: sci data register 1030 adctl: a/d control/status register r 1....... ccf: conversions complete flag (sets after fourth conversion) rw .x...... reserved w ..1..... scan: convert continuously/4 conversions and stop w ...1.... mult: convert four channel group/single channel rw ....0000 cd,cc,cb,ca: ad0 port e bit0 rw ....0001 cd,cc,cb,ca: ad1 port e bit1 rw ....0010 cd,cc,cb,ca: ad2 port e bit2 rw ....0011 cd,cc,cb,ca: ad3 port e bit3 rw ....0100 cd,cc,cb,ca: ad4 port e bit4 rw ....0101 cd,cc,cb,ca: ad5 port e bit5 rw ....0110 cd,cc,cb,ca: ad6 port e bit6 rw ....0111 cd,cc,cb,ca: ad7 port e bit7 rw ....10xx cd,cc,cb,ca: reserved rw ....1100 cd,cc,cb,ca: Vref hi rw ....1101 cd,cc,cb,ca: Vref low rw ....1110 cd,cc,cb,ca: Vref hi/2 rw ....1111 cd,cc,cb,ca: test/reserved 1031 adr1 1032 adr2 1033 adr3 1034 adr4 1035 reserved 1036 reserved 1037 reserved 1038 reserved 1039 option: system configuration options w 1....... adpu: a->d system powered up/down w .1...... csel: a->d and ee use an internal-r-c/system-e clock w ..1..... irqe: irq configured for falling edges/low level w ...1.... dly: enable/disable oscillator start-up delay (from stop) w ....1... cme: slow or stopped clocks cause reset/disabled w .....x.. reserved w ......00 cr1,cr0: e/2^15 divided by 1 w ......01 cr1,cr0: e/2^15 divided by 4 w ......10 cr1,cr0: e/2^15 divided by 16 w ......11 cr1,cr0: e/2^15 divided by 64 103A coprst: arm/reset cop timer circuitry, write $55 and $aa to reset cop watchdog timer 103B pprog: eeprom programming register w 1....... odd: program odd rows in half of eeprom (test only) w .1...... even: program even rows in half of eeprom (test only) w ..x..... reserved w ...1.... byte: erase only one byte/row or all of eeprom w ....1... row: erase only one 16 byte row/all 512 bytes of eeprom w .....1.. erase: erase/normal read of program mode w ......1. eelat: eeprom busses configured for program or erase/read w .......1 eepgm: program or erase power switched on/off to program eeprom: * set eelat * write data to desired address * set eepgm for the required programming time to erase eeprom: * select row = 1/0 * select byte = 1/0 * set erase and eelat = 1 * write to an eeprom address to be erased * set eepgm for the required erase time period 103C hprio: highest priority interrupt and misc. w 1....... rboot: boot rom enabled/not in map (normal) w .00..... smod,mda: single chip mode w .01..... smod,mda: expanded multiplexed mode w .10..... smod,mda: special bootstrap w .11..... smod,mda: special test w ...1.... irv: data from internal reads visible/not on external bus reset to in test/boot mode: 1, in normal modes: 0 r ....0000 psel3,2,1,0: timer overflow r ....0001 psel3,2,1,0: pulse accum. overflow r ....0010 psel3,2,1,0: puls accum. input edge r ....0011 psel3,2,1,0: spi serial xfer complete r ....0100 psel3,2,1,0: sci serial system r ....0101 psel3,2,1,0: reserved (default to irq) r ....0110 psel3,2,1,0: irq (ext pin or parallel i/o r ....0111 psel3,2,1,0: real time interrupt r ....1000 psel3,2,1,0: timer input capture 1 r ....1001 psel3,2,1,0: timer input capture 2 r ....1010 psel3,2,1,0: timer input capture 3 r ....1011 psel3,2,1,0: timer output compare 1 r ....1100 psel3,2,1,0: timer output compare 2 r ....1101 psel3,2,1,0: timer output compare 3 r ....1110 psel3,2,1,0: timer output compare 4 r ....1111 psel3,2,1,0: timer output compare 5 103D init: ram and i/o mapping register w xxxx.... ram3,2,1,0: ram block position (x000..x0ff) w ....xxxx reg3,2,1,0: register block position (x000..x03f) 00000001 at reset 103E test1: factory test register w 1....... tilop: test illegal opcode w .x...... reserved w ..1..... occr: output condition code register status to timer port w ...1.... cbyp: timer divider chain bypass w ....1... disr: disable resets from cop and clock monitor w .....1.. fcm: force clock monitor failure w ......1. fcop: force cop watchdog failure w .......1 tcon: test configuration 103F config: configuration control register w ....1... nosec: dis/enable security mode (security only if mask option) w .....1.. nocop: dis/enable cop system w ......1. romon: en/disable rom at $e000..$ffff w .......1 eeon: en/disable eeprom at $b600..$b7ff note: The bits of this register are implemented with eeprom cells. programming and erasure follow normal eeprom procedures. The erased state of this location is $0f. A new value programmed into this register is not readable until after a subsequent reset sequence.







This site was made by the Rijswijk Institute of Technology (Technische Hogeschool Rijswijk)