Restructure files
This commit is contained in:
parent
8c7b62dc2d
commit
b5f86d5972
13 changed files with 29 additions and 20 deletions
85
docs/pin_allocation.txt
Normal file
85
docs/pin_allocation.txt
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
Microcontroller:
|
||||
- ATmega16 (32 IO-Pins)
|
||||
- available IO pins:
|
||||
- PA0-7
|
||||
- PB0-7 (including PB5-7 for ISP)
|
||||
- PC0-7
|
||||
- PD2-7 (PD0 and PD1 are UART pins)
|
||||
|
||||
EEPROM:
|
||||
- Atmel AT28C256
|
||||
- IO and control pins:
|
||||
- 8 data lines (I/O) D0-7
|
||||
- 15 address lines A0-14
|
||||
- inverted Chip Enable ~CE
|
||||
- inverted Output Enable ~OE
|
||||
- inverted Write Enable ~WE
|
||||
|
||||
Usage
|
||||
-----
|
||||
- 1 microcontroller (µC), 1 EEPROM
|
||||
- direct parallel data IO
|
||||
|
||||
Pin allocation
|
||||
--------------
|
||||
- on µC
|
||||
- PC0-7 --> EEPROM address lines A0-7
|
||||
- PB0-6 --> EEPROM address lines A8-14
|
||||
- PA0-7 <-> EEPROM data lines D0-7
|
||||
- PD0-1 <-> UART TX/RX
|
||||
- PD2 --> EEPROM ~CE
|
||||
- PD3 --> EEPROM ~OE
|
||||
- PD4 --> EEPROM ~WE
|
||||
|
||||
- on EEPROM
|
||||
(see µC)
|
||||
|
||||
|
||||
Reading process
|
||||
---------------
|
||||
1. reset EEPROM control bits to [chip disabled, output disabled, write disabled]
|
||||
PORTD2..4 = 111
|
||||
2. set data pins as inputs (without pullups - maybe disable pullups at all (PUD in SFIOR))
|
||||
DDA0..7 = 00000000
|
||||
PORTA0..7 = 00000000
|
||||
3. set address
|
||||
PORTC0..7 = [Address bits 0..7]
|
||||
PORTB0..6 = [Address bits 0..6]
|
||||
4. set EEPROM to read mode by enabling chip and output [chip enabled, output enabled, write disabled]
|
||||
PORTD2..4 = 001
|
||||
5. wait ~150ns
|
||||
6. read byte from data pins
|
||||
DATABYTE0..7 = PINA0..7
|
||||
7. reset control bits
|
||||
PORTD2..4 = 111
|
||||
8. to read next byte, continue at step 3.
|
||||
|
||||
|
||||
Writing process
|
||||
---------------
|
||||
1. reset EEPROM control bits (see reading)
|
||||
PORTD2..4 = 111
|
||||
2. set data pins as outputs (and reset output pins)
|
||||
DDA0..7 = 11111111
|
||||
PORTA0..7 = 00000000
|
||||
3. set address
|
||||
PORTC0..7 = [Address bits 0..7]
|
||||
PORTB0..6 = [Address bits 0..6]
|
||||
4. set control bits to latch address (falling edge)
|
||||
PORTD2..4 = 010
|
||||
5. set data output to the value to be written
|
||||
PORTA0..7 = WRITEBYTE0..7
|
||||
6. wait 50ns (data setup time)
|
||||
7. set control bits to latch data and start write cycle (rising edge)
|
||||
PORTD2..4 = 111
|
||||
8. wait 50ns (pulse width)
|
||||
9. WAIT UNTIL WRITING IS FINISHED
|
||||
(we can poll D7 to check if write cycle is finished - do we want to do that?)
|
||||
10. to write next byte, continue at step 3.
|
||||
|
||||
|
||||
Page writing
|
||||
------------
|
||||
/* TODO */
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue