
Describiremos el contenido del curso para que aprendas a programar tus AVR´s en lenguaje C.
En este video se explican las características sobre el lenguaje ensamblador y el "C" de acuerdo a mi experiencia profesional y de colegas en la rama.
A pesar de aprender a programar AVR en lenguaje C, siempre es mejor saber a programar en ASM y C. Te comparto mi experiencia.
Veremos cómo bajar el compilador WinAVR GCC y a crear proyectos en C desde cero en el ATMEL Studio 4 y 7.
Se explica en este video la estructura de un programa en C en la versión 4:
Encabezado
Librerias
Configuración
Función MAIN
En este video se explica cómo editar el primer programa en la versión 7:
Se verán más conceptos sobre la programación en C para AVR
Explicaremos cómo usar la función "while( )" como un bucle infinito y como condicional.
Se hará comparativos con la sintaxis ASM
Aquí veremos cómo leer la pulsación de un botón usando "Pinx" y la función "while".
Para el proceso usaremos la máscara (MASK).
También veremos la declaración de una variable como ENTERO SIN SIGNO a 8-bits ("int").
En este video explicaremos cómo implementar la función "if" en C, que será usado en el siguiente video (sensar dos botones al mismo tiempo).
En este video explicaremos cómo configurar el ATmega8515 para sensar dos botones al mismo tiempo. El M8515 no se puede simular en la V7 por lo que usaremos la V4, algo que explicamos en este video.
Es el mismo ejercicio del video anterior pero con la variante de detectar filos de bajada.
En este video veremos cómo dar de alta un proyecto con el ATmega328p para activar las resistencias de pull-up internas.
En el proceso veremos cómo migrar de un código ASM a C.
En este video configuramos al AVR para que en un mismo puerto se usen dos pines como entrada y dos como salida.
En este video aprenderemos a editar retardos usando la librería DELAY.h
También hablaremos sobre las OPTIMIZACIONES, que serán usadas en un retardo.
Usando el código anterior, integraremos el operador XOR (^) para hacer un "TOGGLE" en un pin de salida.
En este video veremos la función "FOR" como ciclo infinito y como condicional (número de vueltas).
Aplicaremos el FOR para realizar retardos de 1-minuto y 1-hora
En este video veremos algunos detalles del ciclo o función "For" en el simulador v4 y v7.
En este video veremos como configurar al T/C0. También veremos otra forma de generar retardos con el Timer cero.
Usaremos una nueva optimización "0g" durante la simulación.
En este video veremos la configuración del T/C1 para hacer un retardo de 1 segundo con pre-escalamiento a CLK/64
En este video aprenderás a configurar el T/C1 para leer eventos externos. También añadiremos algunas notas sobre el video anterior (usando la variable "leyendo").
Veremos la configuración del T/C0 para leer eventos externos. Muy sencillo !!!
Veremos cómo configurar y manipular el Stack Pointer en C, cómo implementar la extracción del byte Low y el byte High de RAMEND, y cómo declarar una constante o variable en su forma Reducida (unit8_t, uint16_t)
En este video veremos cómo configurar el INT0 e INT1 y algunas modificaciones al código base. Haremos comparativa entre la estructura ASM y C para Interrupciones.
En este video hablaremos de los errores o warnings cuando no se ha declarado completamente a una variable o contante y como declarar correctamente... a esto se le llama "Type-casting".
En este video hablaremos de la declaración de un Apuntador o "Pointer".
En este video hablaremos de como manipular los registros de propósito general R0-R31 en C, así como el uso de la declaración "Volatile", "asm", y la implementación en C de la famosa instrucción NOP que se usa en ensamblador.
En este video veremos cómo programar al AVR para leer el teclado matricial 4x4 usando la INT0 y la teoría previamente estudiada.
Debido al tipo de declaraciones necesitadas para las funciones para el teclado, necesitamos explicar la función VOID. Veremos algunos ejemplos de su uso.
Ya habiendo entendido la función VOID, escribiremos las declaraciones correctas a nuestras funciones de cada tecla pulsada.
Veremos dos formas de ingresar datos a la memoria SRAM del AVR, usaremos la técnica de apuntadores y la técnica por ASM.
Finalmente, ya habiendo entendido VOID y la escritura en SRAM, terminaremos la configuración del AVR para leer el teclado 4x4. Ajustaremos el código para hacerlo más eficiente y aprenderemos a hacer la primera librería en C.
En este video aprenderemos a migrar un código hecho con el M8515 al M328p siguiendo el mismo procedimiento que se hace en Ensamblador. Veremos también el traslape de datos de la SRAM cuando declaramos un variable y cuando ingresamos datos deseados (se explicará más a profundidad en el video "control de acceso por teclado"), fenómeno que sucede en el compilador de C.
En este video veremos dos técnicas para usar la EEPROM del AVR; la primera, es usando el código en C de ayuda de los manuales; y la segunda, es usando la librería "eeprom.h".
También hablaremos de una nueva declaración con "CONST".
En este video integraremos la memoria EEPROM, datos a las SRAM y comparativos para hacer un control de acceso de 4 dígitos. También veremos el comportamiento del compilador en C al integrar todo esto y sus soluciones.
En este video veremos la solución para realmente apartar espacio en las 4 localidades deseadas en la SRAM usando un "Array" (hablamos un poco de esta estructura). Finalmente probaremos nuestro código en el simulador.
En este video veremos como programar al M8515 en C para configurar un LCD 16x2, también veremos un truco para que el código funcione en el simulador.
En este video veremos como trabajar el LCD a 4 -bits para el M328p
En este video veremos la función "switch-case" y la función "goto" que usaremos para mejorar el proyecto de "control de acceso visto anteriormente".
Adaptaremos el proyecto de control de acceso cambiando los "if" por "switch-case" observando que también se puede comportar como una función Booleana.
Veremos la configuración para PWM a 8-bits para el TN2313 y Mega328p, y se verá en el simulador el comportamiento del servo-motor.
Veremos la configuración del M328p a 8-bits para múltiples lecturas (visualizando a 8 LED´s en el PORTB), la ecuación de conversión y cómo convertir de 10-bits del ADC a 8-bits.
Se verá como activar la lectura del comparador analógico
Veremos la configuración para enviar y recibir vía UART datos de forma muy sencilla.
En este video aprenderás a mandar una cadena de caracteres ASCII de forma masiva usando la función "STRLEN" (longitud de la cadena de caracteres)
Como vamos a ver el despliegue de mensajes en LCD o UART debido al resultado de ecuaciones, veremos como extraer un dato en sus diferentes décadas, convertirlos a ASCII y enviarlos al LCD para 4-bits. (Parte 1)
Parte 2 del video anterior.
Con los conocimientos previos y usando el siguiente video, edita el código para leer frecuencia a través de Interrupciones (INT0) en filo de subida. Cuando la termines contáctame para revisión.
Aprenderás a usar el T/C1 para extraer el periodo de una señal de entrada y por medio de una ecuación convertirla a frecuencia para visualizarla en el LCD usando M328p
En este video ya vemos la aplicación real de lectura de frecuencia.
Le hemos quitado el LM339 al frecuencímetro y ya no tenemos ruido, esto funciona excelente para lectura de señales cuadradas a +5V.
Veremos como editar el código para un medidor de Inductancia (puede funcionar para Capacitancia), usando como base el código del frecuencímetro.
Veremos qué son las MACROS en C, como se aplican y algunos ejemplos.
Veremos como dar de alta variables en punto flotante, usaremos una MACRO llamada "PI" y mediante una fórmula calcularemos el área de un círculo.
Este video explica como usar las funciones "printf" y "scanf" para enviar y recibir datos por medio de UART para interactuar con el usuario a través del monitor serial.
Las funciones "printf" y "scanf" son muy antiguas (usadas en lenguaje C y Turbo C desde hace unos 30-40 años), son una gran herramienta para formatear datos de punto flotante.
Este video es una de las máximas aplicaciones del lenguaje C interactuando entre el AVR, el simulador o el debugger con un celular mediante el bluetooth.
La variable RADIO del programa de "Cálculo del área de un círculo" lo vamos ingresar a través del celular, y por medio de una APP (Virtual terminal VT) podremos ver en el celular el resultado, así mismo en el monitor serial del simulador.
"Do-while" es otra estructrura de control. Explicaremos la diferencia con la función "while( )".
En este video integraremos la clase de "printf" del UART y el LCD del M8515 vistos anteriormente para crear un nuevo proyecto que nos de ASCII en el LCD usando "printf".
Para esta tarea edita el código para enviar mensajes al LCD configurado a 4 bits usando la función "printf", recuerda que el envío de datos se hace por "nibbles".
Para esta tarea edita el código para enviar mensajes al LCD configurado a 8 bits usando la función "printf", y la toma de datos del teclado, hazlo usando "scanf".
Veremos cómo editar funciones seno, coseno, tangente, sus inversos y sus hiperbólicos. Usaremos la librería "Math.h".
Aprenderás dos formas de implementar la función PUSH y POP; una es usando el método tradicional PUSH-POP implementado en ASM; y la segunda, es editando las funciones correspondientes en C usando un "array".
Aprenderás el procedimiento para escribir una librería en C que puedes usar en tus proyectos.
Con este último video me despido estimad@s alumn@s.... los veo en el próximo curso... Mucho éxito!!!
En este video veremos como trabajar el LCD 16x 4 a 4 -bits para el M328p. También introducimos la función "LCD_gotoxy" que usaremos para posicionar al cursor en el LCD de manera más fácil y rápida.
Con esta tarjeta programadora puedes programar un AVR 328p de 32 pines para proyectos más complejos.
El contenido de este curso está pensado para que les des continuidad a la programación del AVR, ya que, en el curso 1 aprendiste a programar en Ensamblador; con el libro 2 en ASM aumentaste tus conocimientos; así pues, en este curso aprenderás a programar tus AVR en "C" desde cero.
Si es la primera vez que aprendes AVR, este curso te servirá enormemente, pues si no sabes ASM no importa, aprenderás "C" para AVR desde cero!!! Y después si lo deseas puedes tomar mis cursos 1 y 2 para AVR en Ensamblador.
Para tomar este curso no es necesario que ya cuentes con previo conocimiento de AVR, aunque si ya conoces ASM para AVR te será más fácil el contenido de algunos videos ya que explicaré la migración del ASM al "C", ya que muchos desarrolladores colegas míos, tienen códigos en ASM y lo desean pasar al "C" ....aquí te enseñaré cómo.
Vamos a trabajar con el ATtiny2313 y el ATmega328p para la programación de Puertos, Interrupciones, PWM, Contadores, ADC, Servos, ADC y seguramente tomaremos algún proyecto de los libros anteriores pero usando lenguaje "C" con el ATmega8515.
Este curso está basado en el libro "Curso Práctico para Programación de AVR en C", libro que sacaré a publicación física lo más pronto posible.
Trabajaremos en este curso con el AVR Studio 4 y el ATMEL Studio 7.
Se adquirió una licencia ORIGINAL de Proteus para que pueda compartirte algunas simulaciones.
Espero disfrutes este curso!!!