IntelbrasOP4114
Ir para navegação
Ir para pesquisar
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)