Vai al contenuto
PLC Forum


programmatore


palmieri

Messaggi consigliati

Sempre per la sola lettura, ma questa volta tramite Arduino (Uno o Nano) e non manualmente, i collegamenti possono essere questi:

 

876765654543.png.dbbecd08d47319c6cdeee60fbcfacecb.png

Il programma questo:

 

//---------------------------------------------------
// Dati usati nel programma
//---------------------------------------------------

const byte ADDR_PIN[] = { A0, A1, A2, A3, A4 };
const byte DATA_PIN[] = { 8, 9, 2, 3, 4, 5, 6, 7 };
#define  CS_PIN  10

//---------------------------------------------------
// Programma principale
//---------------------------------------------------

void setup(){
    Serial.begin(9600);
    bus_disconnect();
    
    //Lettura e stampa dati
    Serial.println("Inizio lettura...");
    bus_connect_read();
    for (byte i=0 ; i<=31 ; i++){
        Serial.print(i);
        Serial.print("  ");
        Serial.println(bus_read(i));
    }
    bus_disconnect();
    Serial.println("OK");
}


void loop(){
}

//---------------------------------------------------
// Funzioni richiamate
//---------------------------------------------------

void bus_connect_read(){
    //Connessione pin CS (zero-glitch)
    digitalWrite(CS_PIN, 1);
    pinMode(CS_PIN, OUTPUT);
    digitalWrite(CS_PIN, 1);

    //Connessione address bus
    for (byte i=0 ; i<=4 ; i++)
        pinMode(ADDR_PIN[i], OUTPUT);

    //Connessione data bus
    for (byte i=0 ; i<=7 ; i++)
        pinMode(DATA_PIN[i], INPUT_PULLUP);
}

//---------------------------------------------------

byte bus_read(byte addr){
    byte n;
    digitalWrite(CS_PIN, 0);
    for (byte i=0 ; i<=4 ; i++)
        digitalWrite(ADDR_PIN[i], bitRead(addr, i));
    delayMicroseconds(1000);
    for (byte i=0 ; i<=7 ; i++)
        bitWrite(n, i, digitalRead(DATA_PIN[i]));
    digitalWrite(CS_PIN, 1);
    return n;
}

//---------------------------------------------------

void bus_disconnect(){
    for (byte i=0 ; i<=4 ; i++)
        pinMode(ADDR_PIN[i], INPUT);
    for (byte i=0 ; i<=7 ; i++)
        pinMode(DATA_PIN[i], INPUT);
    pinMode(CS_PIN, INPUT);
}

//---------------------------------------------------

 

Il risultato è la stampa sul monitor seriale dell'IDE delle coppie indirizzo / valore letto (con PROM scollegata si leggono tutti bit 1, quindi byte 255).

 

Inizio lettura...
0  255
1  255
2  255
3  255
4  255
5  255
6  255
7  255
8  255
9  255
10  255
11  255
12  255
13  255
14  255
15  255
16  255
17  255
18  255
19  255
20  255
21  255
22  255
23  255
24  255
25  255
26  255
27  255
28  255
29  255
30  255
31  255
OK

 

Link al commento
Condividi su altri siti


Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...