


















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Programación básica para microcontroladores
Tipo: Apuntes
Subido el 19/01/2020
1 / 26
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



















Programación Avanzada
La señal analógica es aquella que presenta una variación continua con el tiempo. La señal digital o discreta es aquella que toma un número finito de valores en cierto intervalo de tiempo Un sistema digital se caracteriza por utilizar señales discretas
Las señales periódicas son el tipo de señales más sencillas que se puede considerar; se caracterizan por contener un patrón que se repite a lo largo del tiempo. Un sistema de numeración se define como un conjunto de símbolos capaces de representar cantidades numéricas. A su vez, se define la base del sistema de numeración como la cantidad de símbolos distintos que se utilizan para representar las cantidades. Cada símbolo del sistema de numeración recibe el nombre de dígito. Sistema binario El sistema binario o de base 2 solo utiliza dos símbolos para representar la información: 0 y 1. Cada uno de ellos recibe el nombre de bit, que es la unidad mínima de información que se va a manejar en un sistema digital. Los bits representan niveles de tensión. Tensión alta → 1, Tensión baja → 0. Un byte es una secuencia de 8 bits.
Tipos de comunicación:
Programación Avanzada Simplex. Únicamente permiten la transmisión en un sentido (unidireccional). Ej. Fibra Óptica. Semiduplex (half duplex ). Es una conexión en la que los datos fluyen en una u otra dirección, pero no las dos al mismo tiempo. Duplex (duplex completo o full duplex). Sistema que es capaz de mantener una comunicación bidireccional, enviando y recibiendo mensajes de forma simultánea.
El álgebra de Boole es una estructura algebraica que relaciona las operaciones lógicas O (OR), Y (AND), NO (NOT). La tabla de verdad es una representación gráfica de todos los valores que puede tomar la función lógica para cada una de las posibles combinaciones de las variables de entrada. Es un cuadro formado por tantas columnas como variables tenga la función más la de la propia función, y tantas fi las como combinaciones binarias sea posible construir.
Circuito integrado Un circuito integrado o CI, es un circuito electrónico que está construido totalmente en un único pequeño trozo de silicio. Todas las componentes del circuito (transistores, diodos, resistencias y condensadores) están integradas en ese trozo de silicio. Familia lógica TTL Lógica Transistor-Transistor (Transistor-Transistor Logic) Tensión comprendida entre 4,5 y 5,5 V. Temperatura entre 0 y 70 °C
Circuitos combinacionales Se caracterizan porque las salidas únicamente dependen de la combinación de las entradas y no de la historia anterior del circuito; por lo tanto, no tienen memoria y el orden de la secuencia de entradas no es significativo. Circuitos secuenciales
Programación Avanzada
El controlador toma decisiones a partir de: Información de los sensores Estado del sistema Notificaciones de otros sistemas A partir de ello: Genera resultados visuales Activa algún actuador Notifica a otro sistema.
Sistema digital capaz de leer, interpretar y ejecutar de forma secuencial instrucciones contenidas en un programa. Reloj Unidad Central de Procesamiento (CPU) Memoria Unidad de entrada/salida Periféricos Microprocesador Sistema Abierto CPU Expandible Se le pueden agregar periféricos (módulos) Aplicaciones de uso general Microcontrolador Sistema cerrado Microprocesador Componentes integrados en un solo circuito integrado No se le pueden agregar periféricos (módulos) Aplicaciones de uso especifico
Interpreta las instrucciones de un programa informático mediante la realización de las operaciones básicas aritméticas, lógicas y de entrada/salida del sistema.
Programación Avanzada
Programación Avanzada Oscilador XT : Es un oscilador de cristal o resonador para frecuencias estándar comprendidas entre 100 KHz y 4 MHz. Oscilador LP : Oscilador de bajo consumo con cristal o resonador diseñado para trabajar en un rango de frecuencias de 35 a 200 KHz.
Se usan fundamentalmente cuando la potencia de cálculo no es importante Robótica : Muy usados en subsistemas específicos de control (extremidades, facciones del rostro, soportes prensiles, etc.) Equipamiento informático : impresoras, scanners, copiadoras... Sistemas portátiles y autónomos : Teléfonos. Sector automotriz : control centralizado de puertas y ventanas, climatizadores, inyección, alarmas, etc. Sector doméstico : integrado en los sistemas de televisores, lavadoras, microondas, refrigeradores, etc.
Prestaciones del dispositivo
ATmega
Programación Avanzada Para programar un microcontrolador se requieren los siguientes 3 elementos Compilador Traduce lenguaje de programación al lenguaje ensamblador. Entorno de Desarrollo Integrado (IDE) Integra herramientas de desarrollo para crear el programa. Programador Descarga el código generado del programa al microcontrolador.
123 Decimal 0123 Octal ( 0 ) 0x123 Hexadecimal ( 0x ) 0b 0 Binario ( 0b ) ‘x’ Carácter ‘\010’ Carácter octal ‘\xA5’ Carácter hexadecimal \n Cambio de línea \r Retorno de carro \t Tabulación \b Backspace
= Asignación de desplazamiento a la derecha &= Asignación AND de bits |= Asignación OR de bits ^= Asignación OR EXCLUSIVA de bits :! NOT && AND || OR
Programación Avanzada
Las interrupciones son desviaciones de flujo de control del programa originadas asincrónicamente por diversos sucesos que no dependen del programador. Las interrupciones ocurren por sucesos externos como la generación de una interrupción por flanco, una interrupción externa cambiando el nivel en un PIN del microcontrolador o eventos internos tales como el desbordamiento de un contador, terminación del conversor análogo a digital, entre otras. El comportamiento del microcontrolador ante la interrupción es similar al procedimiento que se sigue al llamar una función desde el programa principal. En ambos casos se detiene la ejecución del programa en curso, se guarda la dirección a donde debe retornar cuando termine de ejecutar la interrupción, atiende o ejecuta el programa correspondiente a la interrupción y luego continua ejecutando #INT_EXT INTERRUPCIÓN EXTERNA #INT_RTCC DESBORDAMIENTO DEL TIMER0(RTCC) #INT_RB CAMBIO EN UNO DE LOS PINES B4,B5,B6,B #INT_AD CONVERSOR A/D #INT_EEPROM ESCRITURA EN LA EEPROM COMPLETADA #INT_TIMER1 DESBORDAMIENTO DEL TIMER #INT_TIMER2 DESBORDAMIENTO DEL TIMER #int_XXXXX void XXXX_isr() { //Función de interrupción } enable_interrupts(name); enable_interrupts(GLOBAL); // Comentario que terminara el final de esta línea. /* Este comentario no finalizara al final de esta línea finalizara cuando se cierre el comentario */
Programación Avanzada el programa principal, desde donde lo dejo cuando fue interrumpido.
Son interrupciones disparadas por hardware en transiciones de subida y bajada.
Temporizador También llamado timer, es un contador ascendente y programado por hardware. Se utilizan para medir el tiempo que ha pasado entre dos eventos o establecer tareas para ejecutarse a intervalos regulares. La configuración de los timers está basada en ciclos del oscilador, es decir, los pulsos contados proceden del
Timer 8 ó16 bits (0-255 ó 0-65535) Preescaler. Modifica la frecuencia del reloj de entrada del Timer, dividiéndola y generando una nueva señal de menor frecuencia.
Timers del PIC18F Timer0 8 bits watchdog Timer1 16 bits modulo CCP (Captura) Timer2 8 bits modulo CCP (PWM) Interrupción por cambio de estado #INT_RB cambio de estado en los pies B4-B Interrupciones externas #INT_EXT #INT_EXT #INT_EXT ext_int_edge (source, edge); ext_int_edge( 0, L_TO_H);
Programación Avanzada Configuracion modulo CCP Definición de:
Es un conjunto de dispositivos, diseñada para la generación, transmisión, procesamiento y almacenamiento de cantidades físicas o información en forma digital, es decir, solo valores discretos. Existen dos tipos de sistemas digitales: Combinacionales y Secuenciales.
Se caracterizan porque las salidas únicamente dependen de la combinación de las entradas y no de la historia anterior del circuito; por lo tanto, no tienen memoria y el orden de la secuencia de entradas no es significativo.
Las Compuertas Lógicas son circuitos electrónicos conformados internamente por transistores que se encuentran con arreglos especiales con los que otorgan señales de voltaje como resultado o una salida de forma booleana, están obtenidos por operaciones lógicas binarias (suma, multiplicación).
Se conoce como generador de reloj al componente que produce impulsos con una determinada frecuencia. Se puede tratar de componentes mecánicos, eléctricos, electrónicos o de conjuntos, que son necesarios para procesamiento de datos y para sincronizar. El generador de reloj suele servirse de un controlador en una unidad funcional.
Los instrumentos virtuales son reales en el sentido de que son capaces de adquirir y procesar datos originados a partir de un fenómeno físico producido en el mundo real. Está constituido por una computadora con diversos programas (software), y drivers (hardware).
Programación Avanzada Un sistema de tiempo real es un sistema informático que interacciona con su entorno físico y responde a los estímulos del entorno dentro de un plazo de tiempo determinado. No basta con que las acciones del sistema sean correctas, sino que, además, tienen que ejecutarse dentro de un intervalo de tiempo determinado. Existen sistemas de tiempo real crítico (tiempo real duro), en los que los plazos de respuesta deben respetarse siempre estrictamente y una sola respuesta tardía a un suceso externo puede tener consecuencias fatales; y sistemas de tiempo real acrítico (tiempo real suave), en los que se pueden tolerar retrasos ocasionales en la respuesta a un suceso. La computación en tiempo real (o informática en tiempo real) está relacionada con los sistemas de hardware y software que se ven limitados por problemas de tiempo. El software de tiempo real debe necesariamente tener la característica de un tiempo de respuesta crítico.
Un entorno de desarrollo integrado es un entorno de programación que ha sido empaquetada como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor e interfaz gráfica (GUI).
Consta de una entrada de impulsos que se encarga de conformar (escuadrar), de manera que el conteo de los mismos no sea alterado por señales no deseadas, las cuales pueden falsear el resultado final.
Una señal digital es una variación de voltaje entre -Vcc a +Vcc sin pasar por los valores intermedios. Por lo tanto, una señal digital dispone solo de dos estados. Al valor inferior de tensión -Vcc le asociamos un valor lógico LOW o ‘0’, mientras que al valor superior +Vcc le asociamos HIGH o ‘1’ lógico. En realidad una entrada digital realiza una comparación de la medición con un valor de tensión umbral. Si el valor medido es superior a la tensión umbral se devuelve HIGH, y si es inferior LOW.
Una salida digital es un dispositivo que permite variar su tensión a uno de estos dos valores mediante programación, y por tanto nos permite realizar acciones con el entorno. En general, los voltajes -Vcc y +Vcc corresponden con 0V (GND) y 5V.
Es un motor de CD sin escobillas que puede ser de imán permanente o reluctancia variable que tiene como características de desempeño rotar en ambas direcciones, moverse con incrementos angulares precisos. El número y tasa de los pulsos controla la posición y velocidad del eje del motor. A medida que activamos los bobinados del motor paso a paso en un orden en particular, permitimos que fluya una corriente a través de ellos que magnetiza el estator provocando polos electromagnéticos que causarán la propulsión del motor.
Programación Avanzada
La resolución de un conversor indica el número de valores discretos que este puede producir sobre un rango de valores de voltaje. Generalmente es expresado en bits. Por ejemplo, un conversor que codifica una entrada analógica de 1 a 256 valores discretos (0..255) tiene una resolución de 8 bits: o sea, 2 elevado a 8. La resolución puede también ser definida eléctricamente y expresarse en volts. La resolución de voltaje de un conversor es equivalente a su rango total de medida de voltaje dividido el número de valores discretos.
Los voltajes de referencia funcionan como una ventana de nuestros datos para que nuestra resolución sea mejor, así aprovecharíamos mejor el rango dinámico del conversor.
Una pantalla LCD (liquid crystal display: ‘pantalla de cristal líquido’ por sus siglas en inglés) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora.
Un potenciómetro son 2 resistencias conectadas en serie. A partir del nodo que se forma entre estas dos resistencias tenemos un terminal, el cual normalmente será la pata del centro en un potenciómetro de 3 patas. El símbolo utilizado para representar un potenciómetro en un diagrama de circuitos es:
Un divisor de voltaje es un circuito simple que reparte la tensión de una fuente entre una o más impedancias conectadas. Esta variación de voltaje la podemos deducir a partir de la ecuación de divisor de tensión: Dónde: Vx es el voltaje en el nodo central Vs es el voltaje de la fuente RA y RB son las 2 resistencias que están conectadas en serie
Un divisor de corriente es un circuito eléctrico que transforma una corriente de entrada en otras 2 corrientes diferentes más pequeñas. Al igual que un divisor de tensión convierte una tensión en otra más pequeña, el divisor de corriente convierte una corriente en otra más pequeña. El circuito para conseguir esto es un simple circuito de 2 resistencias en paralelo como el que puedes ver en la figura siguiente:
Programación Avanzada
El LM35 es un circuito electrónico sensor que puede medir temperatura. Su salida es analógica, es decir, te proporciona un voltaje proporcional a la temperatura. El sensor tiene un rango desde −55°C a 150°C. Su popularidad se debe a la facilidad con la que se puede medir la temperatura. Incluso no es necesario de un microprocesador o microcontrolador para medir la temperatura. Dado que el sensor LM35 es analógico, basta con medir con un multímetro, el voltaje a salida del sensor. Para convertir el voltaje a la temperatura, el LM35 proporciona 10mV por cada grado centígrado. También cabe señalar que ese sensor se puede usar sin offset, es decir que si medimos 20mV a la salida, estaremos midiendo 2°C. Resolución: 10mV por cada grado centígrado. Voltaje de alimentación. Por ejemplo, esté sensor se puede alimentar desde 4Vdc hasta 20Vdc. Tipo de medición. Salida analógica. Numero de pines: 3 pines, GND, VCC y VSalida. No requiere calibración. Tiene una precisión de ±¼°C. Esta calibrado para medir °C. Consumo de corriente: 60 μAA
Una interrupción es un aviso provocado por un módulo del PIC, por un cambio en el estado de un pin o un recordatorio de que ha pasado un cierto tiempo. Como su nombre indica este aviso interrumpirá la tarea que se esté haciendo en ese momento y pasaremos a ejecutar una rutina de servicio o gestión de la interrupción.
Interrupciones por software: Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida. Interrupciones por hardware: Son aquellas que son provocadas por dispositivos externos al procesador su característica principal es que no son programadas, esto es, pueden ocurrir en cualquier momento en el programa. Existen dos clases de interrupciones de este tipo:
Programación Avanzada línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. Los valores más generales se corresponden con pulsos de entre 1 ms y 2 ms de anchura, que dejarían al motor en ambos extremos (0º y 180º). El valor 1.5 ms indicaría la posición central o neutra (90º), mientras que otros valores del pulso lo dejan en posiciones intermedias.
Un generador de señal es un circuito electrónico que puede generar señales sinusoidales, cuadradas, triangulares y/u otros tipos de señales. Por lo general, estos circuitos son utilizados en circuitos de instrumentación, audio, comunicaciones, etc.
Para la compuerta OR es de 15 nanosegundos y para la AND es de 18 nanosegundos, ya que estas cantidades son muy pequeñas no se pueden simular.
Son todas las funciones y definiciones para ese pic en específico las cuales controlan sus periféricos
XT para frecuencias entre 100kHz a 4MHz, NOWDT para desactivar el perro guardián y el NOPROTECT el cual indica que nuestro programa no está protegido así que cualquiera que agarre nuestro microcontrolador pudra copiar el código.
Es acorde a la que uno le indique en el cristal.
Solo se pueden ocupar dos de los 8 generados lo cuales serian el C Debug File y HEX File. Una de las diferencias entre estos dos es que el Debug te deja vigilar las variables mientras que el otro no.
Según el datasheet “time - a variable 0-65535(int16) or a constant 0-65535” entonces el número máximo es de 65535 ms.
Programación Avanzada En ambos casos la corriente maxima es de 25mA.
La librería lcd4x20.
Contiene todas las definiciones necesarias para poder utilizar un LCD en un microprocesador.
Sí, porque no están en la misma carpeta (no tienen la misma dirección), pero no se debe hacer.
Para cualquier interrupción seria: #INT_XXXX;
Para cualquier interrupción seria: enable_interrupts (INT_XXXX);
Para cualquier interrupción: set_timerX (CARGA);
La ventaja es que puedes dibujar en ella. cualquier cosa configurando adecuadamente los pixeles que se van a encender, las desventajas es de que eso provoca que el código ocupe mayor espacio de memoria aparte de que se vuelve más complicado y tardado programarlo.
Es más lento porque en la alfanumérica solo es elegir que vas a mostrar sin necesidad de configurar pixel por pixel.
Máquinas dispensadoras de comida, los videojuegos portátiles, relojes, bocinas con pantalla, aparatos médicos portátiles como un medidor de glucosa o de presión. glcd_init(mode); glcd_pixel(x,y,color); glcd_line(x1,y1,x2,y2,color); glcd_rect(x1,y1,x2,y2,fill,color); glcd_bar(x1,y1,x2,y2,width,color); glcd_circle(x,y,radius,fill,color); glcd_text57(x,y,textptr,size,color); glcd_fillScreen(color);