C/Visual C - alguien sabe?

 
Vista:

alguien sabe?

Publicado por diego (5 intervenciones) el 21/07/2003 20:11:59
hola alguien podria decirme , con que comandos en c++ podria leer una bios o una memoria eeprom, es decir ubicar los pines de vcc gnd y los in y out clck, y los que haga falta, de las memorias eeprom ya los tengo ubicados solo resta mandarles 5 v pero necesito saber como leer las posiciones de memoria buffer , estas memorias cuentan con un pin vcc gnd a0 a1 que son de datos sclck ,hay algun comando para utilizar por puerto paralelo para leer esta informacion??? desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cómo leer una EEPROM conectada a un puerto paralelo usando comandos en C++

Publicado por Alejandro (1286 intervenciones) el 15/07/2025 22:48:29
Diego, para leer una memoria EEPROM conectada a un puerto paralelo, necesitas controlar los pines de control (como VCC, GND, A0, A1, SCL, SDA) mediante las líneas del puerto paralelo. Sin embargo, en sistemas Windows, acceder directamente a los pines del puerto paralelo requiere usar funciones específicas o librerías que permitan manipular los pines de E/S, como `inpout32.dll`.

¿Qué necesitas hacer?



1. Configurar los pines del puerto paralelo:
- Asignar los pines de datos y control a las líneas del puerto paralelo.
- Controlar los pines de reloj (SCL) y datos (SDA) para implementar el protocolo I2C si la EEPROM usa ese protocolo.

2. Implementar la comunicación I2C (o el protocolo que use la EEPROM):
- Enviar las instrucciones de lectura/escritura mediante toggling de los pines.
- Leer los datos de la línea SDA.

3. Usar librerías o funciones para acceder a los puertos:
- En Windows, no puedes usar directamente `outp()` y `inp()` sin permisos y sin librerías específicas.
- La librería `inpout32.dll` permite acceder a los pines del puerto paralelo en modo usuario.

Ejemplo básico (conceptual)



Supongamos que quieres implementar un protocolo I2C en bit-banging:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <windows.h>
#include "inpout32.h" // Librería para acceso a puertos en Windows
 
#define DATA_PORT 0x378 // Dirección del puerto LPT1
// Define pines específicos en el puerto (esto depende del hardware y cableado)
 
void delay() {
    // Función de retardo para estabilizar las señales
    for (volatile int i=0; i<1000; i++);
}
 
void setSCL(BOOL level) {
    // Controlar pin SCL (ejemplo: bit 0)
    BYTE val = level ? 0x01 : 0x00;
    Out32(DATA_PORT, val);
}
 
void setSDA(BOOL level) {
    // Controlar pin SDA (ejemplo: bit 1)
    BYTE val = level ? 0x02 : 0x00;
    Out32(DATA_PORT, val);
}
 
BOOL readSDA() {
    BYTE val = Inp32(DATA_PORT);
    return (val & 0x02) != 0;
}
 
void startCondition() {
    setSDA(1);
    setSCL(1);
    delay();
    setSDA(0);
    delay();
    setSCL(0);
}
 
void stopCondition() {
    setSDA(0);
    setSCL(1);
    delay();
    setSDA(1);
    delay();
}
 
// Funciones para enviar y recibir bytes, leer memoria, etc.
 
int main() {
    // Inicializar librería
    if (!InitializeInpout32()) {
        printf("Error al cargar inpout32.dll\n");
        return 1;
    }
 
    // Ejemplo: leer un byte de la EEPROM
    startCondition();
    // Enviar dirección y comando de lectura
    // Leer datos
    // ...
    stopCondition();
 
    // Finalizar
    CleanupInpout32();
    return 0;
}

Resumen


- Necesitas controlar los pines del puerto paralelo mediante `inpout32.dll`.
- Implementa el protocolo de comunicación (I2C o similar) con bit-banging.
- La lectura de memoria se realiza enviando comandos y leyendo los pines SDA/SCL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar