Interfaz Arduino e Intel 8255A-5

1

Estoy intentando conectar un Arduino Mega a un Intel 8255 y parece que no funciona, aquí está mi configuración:

Estoy usando como LS245 IC para conectar 4 LED. Los pines CS, RESET están conectados a GND. Estoy intentando usar el puerto B para enviar datos para encender / apagar los LED individuales. Mi código simplemente establece el registro de control en el modo de E / S, y el puerto B está configurado como SALIDA. ¿Algún indicador sobre qué puede estar mal?

Mi código:

#define CS 22
#define RD 23
#define WR 24
#define A_1 27
#define A_0 26
#define RESET 8

char buffer[8] = {0, 0, 0, 0, 0, 0, 0, 1} ; 

void setup()
{
  pinMode(CS, OUTPUT) ; 
  pinMode(A_0, OUTPUT) ;
  pinMode(A_1, OUTPUT) ; 
  pinMode(WR, OUTPUT) ; 
  pinMode(RD, OUTPUT) ; 
  int i=0, p=0 ;
  for (i=32; i <=39; i++)
  {
    pinMode(i, OUTPUT) ; 
  }
  digitalWrite(CS, LOW) ; 
  digitalWrite(WR, LOW) ;  
  digitalWrite(RD, HIGH) ;  
  digitalWrite(A_0, HIGH) ;  
  digitalWrite(A_1, HIGH) ;    
  for (i=32; i <=39; i++)
  {
    if (buffer[p]) 
    {
      digitalWrite(i, HIGH) ; 
    }
    else
   { 
     digitalWrite(i, LOW) ;
   }
    p++ ;  
  }
}

void loop()
{
  digitalWrite(A_0, HIGH) ;  
  digitalWrite(A_1, LOW) ;
  digitalWrite(WR, LOW) ; 
  digitalWrite(RD, HIGH) ;    
  int i=0 ;
  for (i=32; i <= 39; i++)
  {
     digitalWrite(i, HIGH) ;  
  }
  delay(2000) ;
}
    
pregunta kesrut

1 respuesta

2

El 8255 está diseñado para interactuar con un microprocesador que tiene una memoria externa y un bus de E / S, y funciona muy bien en ese entorno.

Sin embargo, el Arduino no tiene un bus externo, por lo que se ve obligado a emular ese bus al golpear los pines de E / S individuales, lo que es lento y doloroso. Su código necesita generar pulsos en los pines RD, WR y CS, y actualmente no está haciendo eso. Debe observar más de cerca los diagramas de tiempo en la hoja de datos 8255.

Hay mejores formas de realizar la expansión de E / S en Arduino utilizando SPI o I2C. Por ejemplo, eche un vistazo a los microchip MCP23S17 y MCP23017 chips .

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas