PDF de programación - 4 - Dispositivos de E/S

Imágen de pdf 4 - Dispositivos de E/S

4 - Dispositivos de E/Sgráfica de visualizaciones

Actualizado el 12 de Julio del 2020 (Publicado el 23 de Julio del 2019)
743 visualizaciones desde el 23 de Julio del 2019
1,7 MB
17 paginas
Creado hace 8a (24/11/2015)
4 – Dispositivos de E/S

Dispositivos, puertos y registros de E/S

Dispositivos de E/S paralelo

Conversión A/D. Pulse WidthModulation

Otros dispositivos típicos de E/S

©Universidad Politécnica de Madrid

s
e
.
m
p
u
@
e
c

i

Dispositivos de Entrada/Salida



Los dispositivos de E/S permiten leer y escribir las señales externas

uP

Mem

E/S

Señales
externas

Direcciones
Datos
Control

En el caso de la familia AVR de Atmel, la
En el caso de la familia AVR de Atmel, la
funcionalidad y el número de dispositivos de
funcionalidad y el número de dispositivos de
E/S depende del modelo de MCU en particular
E/S depende del modelo de MCU en particular
(la CPU es la misma para toda la familia AVR)
(la CPU es la misma para toda la familia AVR)

Dispositivos de E/S

Fundamentos de Electrónica: Microprocesadores

2

Puertos y registros de Entrada/Salida

Puerto de E/S
Puerto de E/S

 Conjunto de señales externas con una
funcionalidad común y una circuitería
(dispositivo de E/S) que permite leerlas y/o
controlarlas.

 Diferentes tipos: E/S paralelo, E/S serie,

E/S analógica, ...

 Los puertos de E/S pueden tener asociadas

diferentes funcionalidades (según se
configuren)

Registros de E/S
Registros de E/S

uP

Mem

E/S

Señales
externas

Direcciones
Datos
Control

 Registros asociados a los puertos de E/S. Cada puerto de E/S puede tener asociados uno o varios

registros que permiten controlar el funcionamiento del puerto.

 Los registros de E/S se acceden mediante instrucciones de lectura/escritura de forma análoga a

como se accede a las posiciones de memoria.

 Existen registros asociados a los datos (las señales a controlar) y al control (el modo de operación).

 El tamaño (nº de bits) del registro suele coincidir con el de la palabra del uP

 Normalmente interesa más el valor particular de cada bit de una palabra, y no tanto el valor de la

palabra completa

Fundamentos de Electrónica: Microprocesadores

3

Ejemplo: Puertos de E/S en el AtMega168

▪ Los puertos de E/S en los AVR pueden operar en varios modos (como en casi todos

los uC)

Puertos de E/S
Puertos de E/S

 Puerto B (PB)

 Entrada/Salida paralelo (se verá)

 Generación de señales PWM (se verá)

 Otros (SPI, interrupciones, capturas..)

 Puerto C (PC)

 Entrada/Salida paralelo

 Convertidor A/D (se verá)

 Otros (Interrupciones)

 Puerto D (PD)

 Entrada/Salida paralelo

 Puerto serie

 Generación de señales PWM

 Otros (Interrupciones)

Fundamentos de Electrónica: Microprocesadores

4

Puertos de E/S paralelo

Puertos de E/S paralelo
Puertos de E/S paralelo

 Puerto de E/S en el que se controlan (leen o escriben) varias señales externas al mismo tiempo.

 Pueden ser de entrada, salida, o configurables por el programa.

 Son los puertos más comunes.

 El tamaño (nº de bits) del puerto suele coincidir con el de la palabra del uP (8 bits, en el AVR)

Registros asociados
Registros asociados

 Registros de datos: registro conectado a las señales de E/S.

- Si un bit del puerto está configurado como entrada un nivel te tensión alto (Vcc) en su pin correspondiente se leerá

como un ‘1’, y un nivel bajo (Gnd) se leerá como un ‘0’.

- Si un bit está configurado como salida, un ‘1’ fijará un valor alto (Vcc) en su pin correspondiente,

y un ‘0’ pondrá un valor bajo (Gnd).

- Escribir sobre un bit configurado como entrada no tiene ningún efecto.
- En algunos uC, los registros de datos de entrada (para leer) y de salida (para escribir), son distintos

(como en el caso de los AVR que usamos)

 Registro de direcciones de los datos: registro que fija la dirección de las señales de E/S.

- Depende de cada micro, pero es habitual que un ‘0’ provoque que su señal correspondiente

sea de entrada y un ‘1’ haga que sea de salida.

Fundamentos de Electrónica: Microprocesadores

5

Puertos de E/S paralelo en el AtMega168

 Dispone de tres puertos de E/S paralelo (B, C y D)

Registro de
direcciones

Registro de
salida

b7

b7

El valor de cada bit en el
registro de direcciones
configuraría si la señal
correspondiente del
registro de datos es de
entrada o salida

1

0

El microprocesador
accederá a un registro u
otro en función de la
dirección

b0

 Registro de entrada: registro de lectura de puerto

- Un bit se lee como un ‘1’ si hay un ‘1’ (Vcc) en su pin correspondiente
- Un bit se lee como un ‘0’ si hay un ‘0’ (Gnd) en su pin correspondiente

 Registro de direcciones (Data Direction Register):

- Configuración del sentido de cada bit del puerto

(‘0’ lo pone como entrada y ‘1’ como salida)

 Registro de salida: Registro de escritura.

- Al escribir un ‘1’ en un bit se pone un ‘1’ (Vcc) en su pin correspondiente
- Al escribir un ‘0’ en un bit se pone un ‘0’ (Gnd) en su pin correspondiente

Address

8

D7..0

CS
R/W

b0

b7

b0

Fundamentos de Electrónica: Microprocesadores

Registro de
entrada

6

IO7
IO6
IO5
IO4
IO3
IO2
IO1
IO0

Ejemplo: Encender y apagar un LED con un pulsador
▪ ¿Cómo podríamos hacer un sistema que encienda las luces cuando anochece?

+Vcc

unsigned char boton;
unsigned char ledState = 0;

2

uC

7

PB5

PB1

0

Puerto B

500Ω

LED

// Primero planteo la funcionalidad, luego ya veremos
// cómo accedo al hardware
int main() {

// Inicialización
InicializaES();

10kΩ

while (true) { // Bucle infinito

boton = leerBoton();
if (boton != 0) { // boton pulsado  actuar

// leo el estado del botón

if (ledState == 0) {

setLed(1);
ledState = 1;

} else {

setLed(0);
ledState = 0;

}

}

}

}



1

Planteamiento de alto nivel
a)
b)
c)
d)
e)

Configurar las señales de entrada y salida
Leer el bit del puerto que me interesa
Decidir en función del valor
Escribir en el puerto actuando sólo sobre el led
Repetir desde el paso b

3
Si comprobásemos el funcionamiento del sistema, se observaría
que mientras se mantiene el botón pulsado el led luciría levemente.
Por otro lado, veríamos que el led se enciende y apaga de forma
poco predecible en vez de conmutar como queremos (debería
cambiar de estado cada vez que pulsamos)

¿A qué podría ser debido este comportamiento?
¿Cómo podría solucionarse?

Fundamentos de Electrónica: Microprocesadores

7

Ejemplo: Encender y apagar un LED con un pulsador
▪ Implementando las funciones de E/S, (acceso al hardware)

uC

7

PB5

PB1

0

Puerto B

+Vcc

unsigned char boton;
unsigned char ledState = 0;

10kΩ

500Ω

LED

// Primero planteo la funcionalidad, luego ya veremos
// cómo accedo al hardware
int main() {

// Inicialización
InicializaES();

while (true) { // Bucle infinito

boton = leerBoton();
if (boton != 0) { // boton pulsado  actuar

// leo el estado del botón

if (ledState == 0) {

setLed(1);
ledState = 1;

} else {

setLed(0);
ledState = 0;

}

}

}

}

void InicializaES() {

void setLed(char state) {

// Configura el pin 1 el puerto B para que sea salida

}

// Modifica el valor del pin 1 del puerto B
// en función de ‘state’

}

char leerBoton() {

// lee el valor del pin 5 del puerto B

}

Fundamentos de Electrónica: Microprocesadores

8

Ejemplo: Encender y apagar un LED con un pulsador

Fundamentos de Electrónica: Microprocesadores

9

Ejemplo: Encender y apagar un LED con un pulsador

Numeración
según la API de
Arduino

Fundamentos de Electrónica: Microprocesadores

10

Ejemplo: Encender y apagar un LED con un pulsador
▪ Lo mismo con la API de Arduino

uC

7

PB5

PB1

0

Puerto B

500Ω

LED

+Vcc

unsigned char boton;
unsigned char ledState = 0;

void setup() { // esta función sólo se ejecuta una vez

pinMode( 9, OUTPUT ); // Configura los pines
pinMode( 13, INPUT );

}

10kΩ

void loop() { // Esta función se ejecuta continuamente

boton = digitalRead(13);
if (boton != 0) { // boton pulsado  actuar

if (ledState == 0) {

digitalWrite(9, HIGH);
ledState = 1;

} else {

digitalWrite(9, LOW);
ledState = 0;

}

}

}

Nota: En la placa de Arduino, el pin 9 de la
Nota: En la placa de Arduino, el pin 9 de la
placa se corresponde con el pin PB1 del
placa se corresponde con el pin PB1 del
AtMega, y el pin 13 de la placa se
AtMega, y el pin 13 de la placa se
corresponde con el pin PB5 del AtMega
corresponde con el pin PB5 del AtMega

//////////////////// esto no lo haríamos nosotros, ya que
int main() { // el entorno de arduino incluye la

setup(); // función main() automáticamente, así
while (true) { // que nosotros solo tenemos

loop(); // que hacer las funciones de setup(),

} // que se ejecuta solo una vez, y loop()

} // que se ejecuta repetidamente

API (Application Programming Interface): es un conjunto de funciones y procedimientos que ofrece
API (Application Programming Interface): es un conjunto de funciones y procedimientos que ofrece
una biblioteca como capa de abstracción para acceder a funcionalidades de un nivel inferior.
una biblioteca como capa de abstracción para acceder a funcionalidades de un nivel inferior.

Fundamentos de Electrónica: Microprocesadores

11

Convertidor Analógico-Digital (ADC)

Vin





Digitaliza una señal continua (analógica) en 2N niveles.

VREF

Vin

ADC

N

DN-1..0

12 15 18 … … …

2 1 1 1 1 2 3 …

t

Características generales:


Número de bits del convertidor (N)  resolución

Resolución q =

V REF

2N





Linealidad

otras …

Ej: VREF = 5V , N = 10 q = 4,88 mV

Fundamentos de Electrónica: Microprocesadores

12

Ejemplo: Controlar un LED con la luz ambiente
▪ ¿Cómo podríamos hacer un sistema que encienda las luces cuando anochece?

uC

PC0

PB0

LDR
(2KΩ – 2MΩ)

500Ω

+Vcc

...
int analogVal;
unsigned char led = 0;
...
configurar PB0 como salida (*);
configurar ADC para leer el valor analógico en PC0 (*);
...

10kΩ

while (true) { // bucle infinito

analogVal = valor devuelto por el ADC (0 – 1023) (*);
if (analogVal < 100) { // 100 sería un valor obtenido

// al anochecer, experimentalmente

encender led (*);

} else {

apagar led (*);

LED

}

}

... (*) se verá luego cómo se haría usando Arduino

① Conf
  • Links de descarga
http://lwp-l.com/pdf16351

Comentarios de: 4 - Dispositivos de E/S (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad