Mudanças entre as edições de "IntelbrasOP4114"
Ir para navegação
Ir para pesquisar
(→EPROM) |
(→EPROM) |
||
Linha 17: | Linha 17: | ||
trata-se de uma 27C256 (DIP28) |
trata-se de uma 27C256 (DIP28) |
||
− | + | Código de arduino utilizado para fazer dump dessa eprom: |
|
+ | |||
− | http://code.google.com/p/felipesanches/source/browse/#svn%2Ftrunk%2Farduino%2F27c256%2F_27c256read |
||
+ | <pre> |
||
+ | //counter ICs = 2x HCF74393 (total of 16 bits of which we use 15 to address the 32k of ROM mem) |
||
+ | int counter_reset = 2; //pin 2 & 12 of both counter ICs |
||
+ | int counter_increment = 3; //pin 1 of the first counter IC |
||
+ | |||
+ | //eprom IC = 27c256 |
||
+ | int eprom_data[8] = {6,7,8,9,10,11,12,13}; // pins 11, 12, 13, 15, 16, 17, 18, 19 of the eprom IC |
||
+ | int oe=4; //pin 22 of the eprom IC |
||
+ | int ce=5; //pin 20 of the eprom IC |
||
+ | |||
+ | long int address; |
||
+ | int data; |
||
+ | |||
+ | void reset_counter(){ |
||
+ | digitalWrite(counter_increment, HIGH); |
||
+ | |||
+ | digitalWrite(counter_reset, HIGH); |
||
+ | delay(10); |
||
+ | digitalWrite(counter_reset, LOW); |
||
+ | } |
||
+ | |||
+ | void increment_counter(){ |
||
+ | digitalWrite(counter_increment, LOW); |
||
+ | //delay(10);//do we need it? |
||
+ | digitalWrite(counter_increment, HIGH); |
||
+ | } |
||
+ | |||
+ | void setup(){ |
||
+ | address=0x0; |
||
+ | int i; |
||
+ | |||
+ | for (i=0;i<8;i++){ |
||
+ | pinMode(eprom_data[i], INPUT); |
||
+ | } |
||
+ | |||
+ | pinMode(counter_reset, OUTPUT); |
||
+ | pinMode(counter_increment, OUTPUT); |
||
+ | pinMode(oe, OUTPUT); |
||
+ | pinMode(ce, OUTPUT); |
||
+ | |||
+ | reset_counter(); |
||
+ | Serial.begin(38400); |
||
+ | } |
||
+ | |||
+ | int read27c256_counter(){ |
||
+ | int i,j; |
||
+ | |||
+ | digitalWrite(oe, LOW); |
||
+ | digitalWrite(ce, LOW); |
||
+ | |||
+ | data=0; |
||
+ | for (i=0, j=1; i<8; i++,j*=2){ |
||
+ | if (digitalRead(eprom_data[i])==HIGH){ |
||
+ | data+=j; |
||
+ | } |
||
+ | } |
||
+ | |||
+ | digitalWrite(oe, HIGH); |
||
+ | digitalWrite(ce, HIGH); |
||
+ | |||
+ | increment_counter(); |
||
+ | return data; |
||
+ | } |
||
+ | |||
+ | long int MAXADDR=0x7fff; |
||
+ | int chunk_size = 32; |
||
+ | void loop(){ |
||
+ | reset_counter(); |
||
+ | |||
+ | while(address<=MAXADDR){ |
||
+ | |||
+ | Serial.print(address, HEX); |
||
+ | Serial.print("\t"); |
||
+ | for (int i=0; i<chunk_size; i++){ |
||
+ | Serial.print(read27c256_counter(), HEX); |
||
+ | Serial.print(" "); |
||
+ | } |
||
+ | Serial.println(); |
||
+ | |||
+ | address+=chunk_size; |
||
+ | } |
||
+ | } |
||
+ | </pre> |
||
pinagem: |
pinagem: |
Edição das 10h39min de 3 de maio de 2012
OP4114 é um telefone da marca intelbras. O telefone possui 2 módulos: o principal com fone/gancho, teclado alfanumérico, display LCD e botoes para funcionalidade básica do telefone) e o painél auxiliar para ramais.
módulo principal
- processador Z180 (retrocompativel com z80) da Zilog
módulo de ramais
- utiliza um microcontrolador 8051
- alimentação e dados por um conector de telefone de 4 fios (GND, VCC, RX e TX)
- EPROM
- CIs básicos da família 74
- placa mãe interfaceia com um painél genérico de LEDs e botões que deve ser facilmente interfaceável usando um arduino.
EPROM
trata-se de uma 27C256 (DIP28)
Código de arduino utilizado para fazer dump dessa eprom:
//counter ICs = 2x HCF74393 (total of 16 bits of which we use 15 to address the 32k of ROM mem) int counter_reset = 2; //pin 2 & 12 of both counter ICs int counter_increment = 3; //pin 1 of the first counter IC //eprom IC = 27c256 int eprom_data[8] = {6,7,8,9,10,11,12,13}; // pins 11, 12, 13, 15, 16, 17, 18, 19 of the eprom IC int oe=4; //pin 22 of the eprom IC int ce=5; //pin 20 of the eprom IC long int address; int data; void reset_counter(){ digitalWrite(counter_increment, HIGH); digitalWrite(counter_reset, HIGH); delay(10); digitalWrite(counter_reset, LOW); } void increment_counter(){ digitalWrite(counter_increment, LOW); //delay(10);//do we need it? digitalWrite(counter_increment, HIGH); } void setup(){ address=0x0; int i; for (i=0;i<8;i++){ pinMode(eprom_data[i], INPUT); } pinMode(counter_reset, OUTPUT); pinMode(counter_increment, OUTPUT); pinMode(oe, OUTPUT); pinMode(ce, OUTPUT); reset_counter(); Serial.begin(38400); } int read27c256_counter(){ int i,j; digitalWrite(oe, LOW); digitalWrite(ce, LOW); data=0; for (i=0, j=1; i<8; i++,j*=2){ if (digitalRead(eprom_data[i])==HIGH){ data+=j; } } digitalWrite(oe, HIGH); digitalWrite(ce, HIGH); increment_counter(); return data; } long int MAXADDR=0x7fff; int chunk_size = 32; void loop(){ reset_counter(); while(address<=MAXADDR){ Serial.print(address, HEX); Serial.print("\t"); for (int i=0; i<chunk_size; i++){ Serial.print(read27c256_counter(), HEX); Serial.print(" "); } Serial.println(); address+=chunk_size; } }
pinagem:
- 28: VCC
- 27: A14 (CPU 24)
- 26: A13 (CPU 23)
- 25: A8 (CPU 18)
- 24: A9 (CPU 19)
- 23: A11 (CPU 21)
- 22: /PSEN (CPU 26)
- 21: A10 (CPU 20)
- 20: VSS (CPU 16)
- 19: AD7 (CPU 30)
- 18: AD6 (CPU 31)
- 17: AD5 (CPU 32)
- 16: AD4 (CPU 33)
- 15: AD3 (CPU 34)
- 14: VSS (CPU 16)
- 13: AD2 (CPU 35)
- 12: AD1 (CPU 36)
- 11: AD0 (CPU 37)
- 10: XXXX
- 9: XXXX
- 8: XXXX
- 7: XXXX
- 6: XXXX
- 5: XXXX
- 4: XXXX
- 3: XXXX
- 2: A12 (CPU 22)
- 1: VCC (CPU 38)