Sistemas Embebidos MCT
Sistemas Embebidos MCT
Sistemas Embebidos MCT
ARMADAS ESPE
SEDE LATACUNGA
Sin embargo la mayoría de estos sistemas embebidos son “cajas negras”, que
no muestran la capacidad de su hardware y software, ni tampoco poseen
características para expandir (modificar) su hardware o reprogramar su software
para diferentes tareas. El componente de software puede ser solamente
proporcionado por el fabricante, en forma de imagen binaria compilada,.
Una versión simplificada de un sistema embebido se muestra en la siguiente
figura:
Un sistema embebido, ya sea considerado como un sistema global o un
subsistema, debe presentar las siguientes características:
Sinclair ZX 80
Radio Shack TRS 80
Los diseñadores de equipos electrónicos ahora tenían equipos que podían
realizar mayor cantidad de tareas en menos tiempo y su tamaño se redujo
considerablemente.
Sin embargo, después de cierto tiempo aparece una nueva tecnología llamada
microcontrolador que simplifica aun mas el diseño electrónico.
Diferencia entre Microcontrolador y
Microprocesador
Microprocesador:
Todas las partes del computador están contenidas en su interior y solo salen al
exterior las líneas que gobiernan los periféricos.
Procesador
Memoria de programa (No volátil)
Memoria datos (lectura y escritura)
Líneas E/S para los controladores de periféricos
Recursos auxiliares
Procesador o CPU.
Memoria no volátil para contener el programa.
Memoria de lectura y escritura para guardar los datos.
Líneas de E/S para los controladores de periféricos.
Recursos auxiliares (Módulos para el control de periféricos)
Procesador o CPU:
Existe una sola memoria, donde coexisten las instrucciones de programa y los
datos, accedidos con un bus de dirección, uno de datos y uno de control.
Limitación:
Longitud de las instrucciones por el bus de datos (varios accesos a memoria
para instrucciones complejas).
Arquitectura Harvard
Arquitectura RISC
Segmentación
Memoria de Programa o ROM (Read Only Memory / Memoria Solo Lectura)
Los datos que manejan los programas varían continuamente, y esto exige que la
memoria que les contiene debe ser de lectura y escritura, por lo que la memoria
RAM estática (SRAM) es la más adecuada, aunque sea volátil.
Por último, la siguiente forma de modificar los valores de los registros es con la
notación de desplazamiento de bits o como la llamo yo, la forma de “poner bits”,
y esta denominación, porque se trata simplemente de eso, de poner bits en una
posición específica, aquí hay que introducir un nuevo concepto y es que en los
microcontroladores, cada bit de un registro de configuración tiene un nombre
específico, que generalmente hacen referencia a la función que desempeña
dicho bit, por ejemplo al hablar de los pines de cada puerto, el registro DDRB
tiene los siguientes nombres:
Cada bit de este registro (0,1,2,3,4…) va a representar el comportamiento como
entrada o como salida de cada uno de los pines de ese determinado puerto ‘X’,
por lo tanto, teniendo en cuenta que si se pone un ‘1’ significa que el pin se
comportará como salida y un ‘0’ (cero) significa que el pin se comportará como
entrada, entonces si queremos decir que todos los pines del ‘puerto A’ se
comportan como salidas, el registro de configuración del puerto A (DDRA) tendrá
el siguiente aspecto.
Líneas de Entrada/Salida (Puertos)
Las líneas de E/S que se adaptan con los periféricos manejan información en
paralelo y se agrupan en conjuntos de ocho, que reciben el nombre de Puertos.
Hay modelos con líneas que soportan la comunicación en serie; otros disponen
de conjuntos de líneas que implementan puertas de comunicación para diversos
protocolos, como el I2C, el USB, etc.
Los PIC son una familia de microcontroladores tipo RISC (Reduced Instruction
Set Computer) fabricados por la empresa Microchip Technology Inc. y derivados
del PIC1650 originalmente desarrollado por la división de microelectrónica de
General Instruments.
PIC nnLLLxxx
Aunque solo tienen 8 pines, pueden destinar hasta 6 como líneas de E/S para
los periféricos porque disponen de un oscilador interno R-C.
Gama Baja o Básica de PICs
AUTO: (usada por defecto, no hace falta que se indique) donde la variable existe
mientras la función esá aciva. Estas variables no se inicializan a cero. Su valr
se pierde cuando se sale de la función.
STATIC: Una variable local se activa como global, se inicializa a cero y mantiene
su valor al entrar salir de la función.
Operadores de Asignación
Operadores Aritméticos
Operadores Relacionales
Operadores Lógicos
Operadores de bits
Orden de precedencia de los operadores:
Una función puede ser invocada desde una sentencia de otra función. Una
función puede devolver un valor a la sentencia que la ha llamado. El tipo de dato
se indica en la definición de la función; en el caso de no indicarse nada se
entiende que es un int8 y en el caso de no devolver un valor se debe especificar
el valor VOID. La función, además de devolver un valor, puede recibir
parámetros o argumentos.
La estructura de una función es:
If-Else
While
Do-While
For
Switch-Case
Return
Break, Continue, Goto
FUNCIONES DE RETARDO
delay_ms(tiempo)
Esta función realiza retardos del valor especificado en la variable tiempo. El valor
es un int16 (0-65535) en milisegundos. Ejemplo:
delay_us(tiempo)
Los retardos conseguidos con esta función son especificados en la variable
tiempo en microsegundos y es un int16 (0-65535). Ejemplo:
Tipos de osciladores
La siguiente tabla, indica los valores típicos del cristal y los capacitores que el
fabricante sugiere utilizar con los diferentes cristales para modo XT y HS.
Mayor información sobre los valores del oscilador de cristal y los capacitores
para los resonadores cerámicos se pueden encontrar en las hojas del datasheet
del fabricante.
El oscilador se conecta en los pines RA6/OSC2/CLKO y OSC1/CLK1.
Ejercicio de secuencias con LEDS
• Inicializar el puerto B con (00000001), para activar el LED que está conectado
en RB0.
• Mostrar este valor durante un tiempo (100 ms).
• Desplazar el valor del puerto una posición a la izquierda (port_b = port_
b<<1).
• Repetir este proceso hasta que llegue el 1 al puerto RB7. Mediante el bucle for
se controla que el bit 1 que está en puerto RB0, se desplace hasta llegar al
puerto RB7. Como el puerto tiene ocho bits, entonces el desplazamiento se debe
repetir 7 veces. La instrucción que realiza esta función es: for (i=1;i<=8;++i).
• Al llegar el bit a la posición 7 el valor del puerto será 128 (27=128). A partir
de este valor, en este punto, el desplazamiento se realiza a la derecha
(port_b=port_b>>1) hasta que el bit llegue a RB0.
• Repetir el proceso.