domingo, 29 de diciembre de 2019

Embedded C Programming and the Atmel AVR

En esta entrada vamos a hablar de manera resumida sobre un documento muy interesante de la web "Embedded C Programming and the Atmel AVR" para los que quieren empezar a programar AVR usando lenguaje C .

Con este libro podrás ingresar al mundo de las aplicaciones de los sistemas embebidos en lenguaje C.
Este libro es uno de los pocos libros disponibles donde se muestran los diseños y aplicaciones con la familia AVR .
Esta segunda edición es perfecta para principiantes que deseen entrar a este mundo de microcontroladores y que deseen aprender haciendo. 
Primeramente  se habla de procesador tipo RISC e inmediatamente se toca el lenguaje C para sistemas embebidos . Aquí el estudiante experimentará con variables y constantes , operadores y expresiones, estados de control, punteros y matrices, tipos de memorias, directivas del procesador, métodos en tiempo real y mucho más. 
Este liro usa el IDE CodeVision AVR y C Compiler  como plataforma para programar los microcontroladores AVR pero fácilmente los ejemplos se pueden realizar en Atmel Studio 7.
Los autores de esta maravilla son Richard H.Barnett., Sarah Cox and Larry O´Cull
Embedded C Programming and the Atmel AVR

lunes, 11 de noviembre de 2019

ICSP-CONEXIÓN

Esta entrada está pensada para que puedas colocar tu conector ICSP de tu grabador USBASP incorporado en tu desarrollo o proyecto.

Como sabemos al momento de grabar nuestro microcontrolador con el código .HEX lo que se hace normalmente es sacar nuestro microcontrolador de nuestra aplicación  y colocarlo en el zocalo zif 40 que viene en el programador USBASP, y una vez programado volverlo a colocar en nuestro proyecto. Cuando haces muchas pruebas de código lo anterior puede ser tedioso.

Lo mejor es colocar un conector ICSP a tu circuito principal y aquí veremos como es la conexión para hacer el diagrama en nuestro archivo CAD del circuito principal.

Grabador USBASP
En nuestro circuito principal pondremos un conector Macho ICSP  para que pueda hacer contacto con el cable hembra.El orden de conexión del ICSP del USBASP es el mismo que se colocará en nuestra placa principal, de todas maneras, lo especificaremos con una gráfica hecha a mano.  
Cable de Grabador.
 Lo que debemos hacer es hacer las siguientes conexiones, esta prueba es la grabación de un ATMEGA32 pero el procedimiento es el mismo para cualquier micro de 8 bits, con su hoja de datos a la mano:
Diagrama de conexión realizada.
Una vez realizado pruebas en protobard se hace las conexiones en software de diseño. Usaremos Eagle para realizar las conexiones.
En nuestro programa Eagle el componente ICSP o encuentras como ML10,dentro de la librería "con-harting-ml".
Conexión del ICSP en  Eagle
Muchos diagramas conectar el pin 8 y 10, pero no es necesario porque estos pines ya están puenteados en la parte del grabador.  
Una vez realizado las conexiones, haremos un parpadeo de led para probar la correctas conexiones.
Código de prueba-Parpadeo-led.
Para realizar el grabado al microcontrolador usé el SINAPROG 2.1. 
Grabador -software-Sinaprog 2.1
No olviden conectar el cristal externo, tuve mucho tiempo perdido por no conectar el cristal.
Bueno eso es todo!!!!......

sábado, 28 de septiembre de 2019

Libro-The AVR microcontroIIer and embedded system


En esta entrada vamos a hablar de manera resumida sobre un documento muy interesante "The AVR microcontroIIer and embedded  system " para los que quieren empezar a programar AVR de manera profunda  ya que la programación es el asembler, no obstante también hace referencia al lenguaje de alto nivel como el lenguaje C.

Empieza con lo básico que debes de saber para programar microcontroladores en general con una introducción al mundo de la informática, operaciones computacionales, operaciones binarias , lenguaje digital en general,memorias y arquitecturas.

Este documento es una colaboración de tres personales Hindus como  Muhammad Ali Mazidi, Sarmad Naimi y Sepehr Naimi, caracterizados por brindar bibliográficas relevantes y sobre todo su explicación de los textos es muy entendible y fácil de digerir.  

Podría decir que este documento es la base para los que quieren empezar en el mundo de los microcontroladores usando Lenguaje Asembler y C,  y sobre todo para los que el mundo de los microcontroladores especialmente los AVR son parte de su formación universitaria o que realizan proyectos de investigación y/o proyectos industriales.

Como todo profesional o académico el idioma no debe ser barrera para explorar textos relevantes o importantes como este ya que está escrito en inglés.


The AVR microcontroIIer and embedded  system

El libro esta comprendido en 19 capítulos, como:

  1. Introducción a la computación.
  2. Historia y características del AVR.
  3. Arquitectura y programación en lenguaje asembler.
  4. saltos, llamadas y lazos de retardo.
  5. Programación de AVR, puertos I/O.
  6. Instrucciones de aritmética, lógica y programas.
  7. Programación en ASM avanzado.
  8. Programación en C.
  9. Conexiones , archivo hex y carga de código a memoria flash.
  10. Timer- AVR en ASM y en lenguaje C.
  11. Interrupciones-AVR en ASM  y lenguaje C.
  12. SPI-AVR en ASM y en lenguaje C.
  13. LCD Y teclado matricial.
  14. ADC,DAC.
  15. Interfaz de AVR con Relay, optocoplador y motor de paso.
  16. Generación de señales .
  17. Control de velocidad de motor  DC usando PWM.
  18. Protocolo SPI, manejo de display MAX7221.
  19. Protocolo I2C, manejo de RTC DS1307.         


martes, 27 de agosto de 2019

Proyecto4-Operaciones Lógicas-AND-OR-XOR-NAND-NOR

Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar 5 operaciones posibles entre las cuales están AND,OR,XOR,NAND,NOR Las entradas de la operación serán los puertos A y B , para seleccionar la operación que se va a realizar se usa 5 pines del puerto C, finalmente el resultado estará en el puerto D.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Lenguaje de Programación: Asembler.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa en Visio Profesional del diagrama de flujo del proyecto.
-----------------------------------------------------------------------------------------------------------

Suscríbete a mi lista de correos para recibir más material próximamente.





Si no recibe el producto escríbame a edward.udep@gmail.com
-----------------------------------------------------------------------------------------------------------

lunes, 26 de agosto de 2019

Proyecto3-Leer puerto C y mandar el dato leído al puerto D

Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar fácilmente como leer el puerto C y mandar el dato al puerto D.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Lenguaje de Programación: Asembler.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa en Visio Profesional del diagrama de flujo del proyecto.
-----------------------------------------------------------------------------------------------------------

Suscríbete a mi lista de correos para recibir más material próximamente.





----------------------------------------------------------------------------------------------------------

Proyecto2-Colocar en alto el bit LSB del puerto C

Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar facilemnte como colocar en alto el bit menos significativo del puerto C.
Circuito
Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas. 
  • 1 Archivo del Programa en Visio Profesional del diagrama de flujo del proyecto.
-----------------------------------------------------------------------------------------------------------

Suscríbete a mi lista de correos para recibir más material próximamente.




-----------------------------------------------------------------------------------------------------------

viernes, 23 de agosto de 2019

Proyecto1-Escribir el valor 55 hex en el puerto C

Descripción general.
El proyecto consiste en utilizar un Atmega 32 para realizar la operación más básica como escribir un valor en un puerto, en este caso usaremos el puerto C para escribir el valor 55Hex.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.
  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa  visio Profsional del diagrama de fujo del proyecto.
--------------------------------------------------------------------------------------------------------------------------

Suscribete a mi lista de correos para recibir más material próximamente.





--------------------------------------------------------------------------------------------------------------------------

lunes, 12 de agosto de 2019

Lenguaje C-Proteus-AVR.

En esta entrada vamos a hablar de manera resumida sobre un documento muy interesante de la web "cursomicros.com" para los que quieren empezar a programar AVR usando lengujae C y a la par con el mejor software de simulación para muchos como el proteus. 
Empieza con lo básico que debes de saber para programar en lenguaje C, las características del lenguaje y saberes previos a este lenguaje como : directivas, funciones, sentencias, estructuras, declaración de variables, especificación de tipos de datos, sentencias selectivas, iterativas,con bloques simples,operadores, arrays y punteros.

Podría decir que este documento es la base para los que quieren empezar en el mundo de los microcontroladores usando Lenguaje C, por que a parte de ello se pueden simular los programas en  Proteus y usar su herramienta debugging para ver paso a paso nuestro código de los distintos proyectos
.
Imágenes sacadas del libro.
Tiene muchos diagramas de circuitos que engloba dispositivos básicos como :
LCD, teclado matricial, motores dc, motores paso paso entre otro para realizar proyectos y usar los periféricos de  estos microcontroladores como timers, temporizadores, puertos de entrada y salida, PWM, UART entre otros.

Para programar los microcontroladores AVR usa en entorno STUDIO5, que es bastante similar al entorno actual como el AtmelStudio7, y facilmente portable.

PARTE1

PARTE2

Tienes alguna duda de este tema, o ¿de qué otros temas quieres que hablemos?, puedes escribirnos directamente a nuestro grupo de Telegram

Ubicando código en la memoria FLASH-ROM


Después que nuestro código a sido grabado dentro de la memoria de programa tales como atmega32 o cualquier micro de atmel, el OPCODE y OPERANDO son guardados en la memoria de programa iniciando desde la dirección 0x0000. Por ejemplo veamos como se guarda este bloque de código en la memoria de programa:

código-almacenamiento de la última dirección de memoria SRAM.
Creé un proyecto y le puse nombre "litle endian metodo-ejemplo"Una vez escrito el código, Construimos los archivos(Build)  y en la carpeta DEBUG se construyen archivos .map, .lss,entre otros como el de la imagen:
Archivos generados en carpeta debug.
Ahora nos enfocaremos en el archivo .lss. El archivo ,lss es muy útil para nosotros los programadores. Aquí se muestra el código binario y código fuente, además muestra que instrucciones son usadas en el código fuente, y la cantidad de memoria del programa usada, este archivo al igual que el .map pueden ser accedidos por un editor de texto tal como notepad y verlos en el monitor, el programador usa este archivo para asegurarse el correcto desempeño  del sistema.

Archiv list(.lss) generado
En la imagen anterior se muestra el archivo generado .lss, solo se muestra una sección del mismo esta plasmado de mucha información , pero nos enfocaremos en la parte donde esta nuestro código que hemos escrito:
Archivo list(.lss)-sección code
Como se observa en la imagen anterior, a la izquierda la conforma las direcciones que ocupa nuestro código, empieza en la dirección 0x0000, con su respectivo OPCODE y OPERANDO. Si deseas saber como se representa el OPCODE y OPERANDO de una instrucción, en este blog hay un ejemplo.  

El dato en la memoria Flash de los AVR es guardado de un forma llamada “Little-endian”. Esto significa que el byte alto del código es ubicado en la dirección alta de la ubicación de la memoria FLASH, y el Byte bajo del código es ubicado en la dirección baja de la ubicación de la memoria FLASH. Compare el primer Word del código (e008) con los dos primeros Byte de la memoria FLASH(08e0).

Método-Litle endian
 Ahora ya sabemos como se guarda en memoria FLASH-ROM cada línea de código, está formado por una palabra(2Bytes) y se irán guardando de la siguiente manera:

¿Puedo guardar datos en  memoria FLASH-ROM?

Pues sí, también podemos guardar datos, que usaremos ,estos datos en asembler se pueden guardar a través de "tablas", dándoles un origen de memoria. Para leer los datos en memoria en forma de "tablas" es muy importante desplazar un bit hacia la izquierda utilizando “<<” o que es lo mismo multiplicando *2 la dirección  de donde se dio origen a la tabla de datos ya que al momento de guardar un dato en una tabla este empieza en la dirección x2 de donde se dio origen a dicha tabla. Puedes ver un ejemplo de tablas en el siguiente video:

Conclusión

  •  Nuestro código se guarda en forma de OPCODE y OPERANDO.
  • Los OPCODES y OPERANDOS se guardan en memoria FLASH usando el método "Litle Endian".
  • En la memoria Flash no solo se guarda código, vectores de interrupción, programa bootloader, también se puede guardar datos  usando "tablas".
  • Las instrucciones LPM y SPM se usa frecuentemente en esta memoria FLASH.
  • Program Counter es que va a ir saltando de dirección en dirección de la FLASH-16 bits.

domingo, 11 de agosto de 2019

Dirección en word y Byte de memoria FLASH

Muchas veces al leer los datasheet de los micros y en especial la sección de memorias nos topamos con direcciones que confunden un poco al menos a primera vista ya que muchas veces leemos una dirección tipo word con un tipo Byte o viceversa, y más aún cuando con ambas direcciones se puede trabajar, pero hay que saber cuando se esta hablando de uno, cuando se habla del otro y en que situaciones, para ello esta creada esta entrada.

Para ello vamos a definir los limites de direcciones tanto usando direcciones tipo word y direcciones tipo Byte, vamos a empezar por analizar el tamaño que ocupa el Bootloader en el microcontrolador Atmega32.

Tabla-Configuración del tamaño de Bootloader
Vamos a realizar el ejemplo con Boot=0,0.Queremos saber cual es la dirección de inicio del Bootloader  dentro de la memoria FLASH.
Si vemos la tabla con direcciones tipo word
De la tabla nos dice que para boot(0,0) ocupará 2048 word. 
  • Igualamos variables de la operación resta a word. tamaño de memoria FLASH es de  0x3FFFw,+1, entonces es de 16384 Word totales.
  • Restamos :16384w -2048w= 1436w
  • Convertimos a hexadecimal= 0x3800w.
Si vemos la tabla con direcciones tipo Byte
La memoria FLASH en Byte es de 32KBytes .

  • Igualamos variables de la operación resta a Bytes: tamaño de Bootloader es de 2048word=4096Bytes, 4096Bytes=4KBytes.
  • Restamos :32KBytes-4KBytes= 28KBytes
  • Convertimos a decimal: 28KBytes=28672 Bytes.
  • Convertimos a hexadecimal= 28672Bytes=0x7000Hex.
Según lo anterior ya sabemos cual es el inicio del bootloader cuando ocupa su máximo tamaño posible(2048words), puede ser menor a este tamaño, para ver el inicio de tamaño de todas las maneras posibles están en el datasheet pero lo más importante es que ya sabemos cuando se refiere a tamaño de Bytes o de Words.
Tamaño de Memoria FLASH.
Ya sabemos  como ver las direcciones en Word y en Byte ello es importante a la hora de programar nuestro código, saber cuales son nuestros limites de memoria es como saber donde estamos parados, its is very import. XD.

sábado, 10 de agosto de 2019

OPCODE y OPERANDOS

Todas las instrucciones en ensamblador tienen una parte obligatoria, y esto se llama el mnemótecnico, que corresponde al OPCODE en código máquina; por ejemplo el mnemótecnico de nop es nop, pero algunas instrucciones tienen además OPERANDOS. Por ejemplo "LDI(Load inmediate)" tiene dos, el primer es un registro, separado de una coma a continuación viene el siguiente, que es un dato. En este caso los OPERANDOS son obligatorios, tal como se muestra a continuación:  "LDI R16,0XFF".

Ejemplo-LDI R16,HIGH(RAMEND)

Como se mencionó vamos a usar la instrucción LDI como ejemplo para ver como se representa la instrucción LDI R16,HIGH(RAMEND) en OPCODE y OPERANDOS.

La instrucción LDI Rd,K es su forma general se define de la siguiente manera:
Estructura de la instrucción LDI.

Definimos los valores de Rd,K, para eso debemos recordar que  la última dirección de memoria RAM es 085F,como se aprecia en la imagen:

Memoria SRAM

La dirección  085F está formado por 2Bytes, el Bytes alto es 08 y el Byte bajo  es 5F. Entonces HIGH(RAMEND)=08, nuestra instrucción sería:
LDI R16,08

Donde:
Equivalencias del valor de los Registros
 En la  Dirección de memoria FLASH será lugar para almacenar OPCODE y OPERANDO, donde E es el OPCODE y 08 es el OPERANDO.
OPCODE y OPERANDOS DE LDI 
Es así que nuestra instrucción LDI,HIGH(RAMEND) estará representada por la palabra E008 de 2 Bytes ó 16 bits.
OPCODE y OPERANDOS DE LDI R16,HIGH(RAMEND)
la lista de todas las representaciones de las instrucciones en OPCODE y OPERANDOS de todas las instrucciones se encuentran aquí, pero ya sabemos como una instrucción llega a su representación de OPCODE y OPERANDOS, lo hemos demostrado en esta entrada.

Memoria de Programa(FLASH)


Como sabemos el microcontrolador AVR tiene 3 tipos de memorias, memoria de programa, memoria SRAM y memoria EEPROM, aquí nos enfocaremos a la memoria de programa o FLASH-ROM.

Teoría encontramos en todos lados, basta con escribir en Google sobre memorias FLASH AVR , pero aquí te dejo las mejores reflexiones de esta memoria:
  • Es una memoria que soporta hasta 10,000 ciclos de escritura/ borrado.
  • Se puede dividir en dos secciones, una de aplicación y una sección de arranque, en la sección de arranque es donde se puede ubicar un cargador para auto programación.
  • Los vectores de interrupción son parte de la memoria de programa e inician en la dirección 0 si es que están habilitadas.
  • El tamaño de la memoria Flash varia dependiendo del micro para el atmega32 es de 32KBytes(16kX2Bytes) ó 16KWord, aquí esta incluido la sección de arranque.
Memoria FLASH -ROM

Program Counter

Debido a que la capacidad de memoria flash del atmega32 es de 32KBytes ó 16KWord las direcciones de memoria flash de 16 bits tendrán el rango de (0x0000-0x3FFF) Word =(0-16383dec) word=(0 a 11111111111111[14 bits] en binario) la "Program Counter" que almacena la dirección de la ubicación  de ejecución actual de la memoria flash de 14 bits es suficiente.

Litle endian

Es un método que consiste en la forma de almacenar datos a nuestra memoria FLASH, el dato en la memoria Flash del AVR es guardado de la manera que es llamada "litle endian", esto significa que el byte alto del código es ubicado la dirección alta de la memoria Flash y el byte bajo del código esta ubicado en la dirección baja de la memoria flash.

método Litle Endian
Los Byte0,2,4,6 son los Bytes altos de datos, y los Bytes1,3,5,7 son los Bytes bajos de datos.
Existe otro método de guardar datos a memoria FLASH y es el método de Big Endian.

Sección de aplicación

Esta sección empieza en la dirección 0x000 encontramos nuestro código de programa y vectores de interrupción si estuvieran activados.
Aquí se encuentran los códigos de programa, puede haber mas de un código, y se hará uno otro dependiendo de la programación que se haya dado en el bootloader.

Sección de arranque(Bootloader)

Esta sección es de uso opcional y de forma obligatoria dependiendo para que esta pensado el uso del microcontrolador.

¿Cuándo utilizar Bootloader?

  • Cuando el producto esta terminado, digamos ya puesta en planta o en aquel proceso donde esta monitoreando algún proceso o controlando alguna variable industrial.
  • Se usa de manera profesional en desarrollos terminados.
  • Cuando se quiere tener un respaldo de información o backup.
  • Se quiere tener mas de  un código principal según la funcionalidad que le demos.
  • El bootloader esta pensado cuando el microcontrolador ya este en manos de un cliente.
  • Si vas a utilizar un microcontrolador de Atmel para una ponerlo en una placa Arduino necesitas cargar su configuración para que el micro acepte los comandos de la plataforma Arduino.

¿Cuándo no utilizar Bootloader?


  • Si solo vamos a programar de forma de aprendizaje sea en C o ASM no es necesario cargar algún programa.
  • Si se va a trabajar de la mano con un programador de esa manera nos ahorramos memoria flash. 

Tamaño de memoria Bootloader

Como podemos ver el las dos tablas según como este configurado los bits BOOTSZ1 y BOOTSZ0  va a variar el tamaño que ocupará dentro de la memoria FLASH. 
Tabla 1-Configuración del tamaño de Boot
En la Tabla 2 se muestra el limite de memoria que ocupará la memoria de arranque que será cuando BOOTSZ1=0 y BOOTSZ0=0.
Tabla 2-Limite de Lectura mientras se escribe

La configuración del bootloader por el momento no lo haremos de manera profunda, si quieres saber mas detalles sobre el bootloader puedes seguir este enlace.

Entonces podemos deducir que el  tamaño de la memoria de arranque que ocupará en la memoria FLASH es variable dependiendo de dos cosas:

  • Del microcontrolador que estemos usando.
  • La configuración del mismo.

Si deseas saber mas de bootloader aquí un video bien explicado de  TutoElectro, velocidad x5 XD.

Límite de direcciones en memoria FLASH-ROM

Teniendo en cuenta lo anterior se va a delimitar los lugares de cada sección, esto es muy importante conocer cuando se va a programar, ya que podría darnos algún tipo de conflictos a la hora de guardar datos, de la misma manera que es bueno saber donde estamos parados es bueno saber donde estamos escribiendo nuestro código.

Limites de direcciones es memoria FLASH

viernes, 9 de agosto de 2019

Construye tu programador USABasp.

Aquí explicaré de manera breve como puedes construir tu propio programador y los enlaces que necesitas:

Como esta el título veremos el grabador USBasp ya que el hadware de este circuito a sido liberado  por el sr. Thomas Fischl  ya por el año 2005 aproximadamente y gracias a él tenemos el circuito hasta el archivo en eagle, solo para imprimir y hacer nuestro propio programador, o si lo prefieres mandar los archivos gerber a una empresa china para que te lo impriman , por cierto a muy bajo costo, y si es tu primer pedido no te cobran el envio, así que aprovecha esta ocasión para tener varios programadores listos para trabajar.

Eagle-Esquemático
Eagle-PCB
Si lo quieres comprar y quieres ir a solo programar puedes comprarlo también, que por cierto están baratos.

Si deseas hacer tu circuito con un microcontrolador Atmega8-TQFP32 para que tu placa sea mas pequeño, aquí te dejo el enlace aquí otro.si deseas realizar el circuito en otro software de diseño, aquí el esquema en pdf.

En la parte final les anexo los archivos en Eagle para que los descarguen.
Una vez que ya tengas el hardware(la placa impresa) ahora necesitas instalar los driver para ello les dejo un video muy bueno del youtuber "jfetronic: Electrónica y Más" si quieres seguir el proceso paso a paso de manera escrita aquí un buen tutorial de 3 partes.
y esto es todo a programar XD.
Programador USBasp

Puedes agradecerle al autor del diseño: link

sábado, 3 de agosto de 2019

Libro-Los microcontroladores AVR de ATMEL

Libro en español.
En este libro encontrarás aplicaciones y ejemplos con el ATMega8 y ATMega16 en lenguaje ensamblador y lenguaje C. El autor es el M.C  Felipe Santiago Espinosa, de la Universidad Tecnológica de la Mixteca. Pueden agradecerle por  magnifica obra a los correos fsantiag@mixteco.utm.mx, felipe_santiago_e@hotmail.com.

El libro incluye 9 capítulos:

  1. Introducción de los Microcontroladores
  2. Organización de los Microcontroladores AVR de ATMEL
  3. Programación de los Microcontroladores
  4. Interrupciones Externas, Temporizadores y PWM
  5. Recursos para el Manejo de Información Analógica
  6. Interfaces para una Comunicación Serial
  7. Recursos Especiales
  8. Interfaz y Manejo de Dispositivos Externos
  9. Desarrollo de Sistemas

lunes, 8 de julio de 2019

Instrucción SBR-CBR


SBR(Set Bits en Register)
Esta instrucción hace una operación or entre el el registro y b:
Instrucción SBR
 16 ≤ r ≤ 31, 0 ≤ b ≤ 255
Otra manera con la que podemos simplificar este comando es de la siguiente manera:
Del registro Rr coloco a alto los bits 1 de b(de la misma posición), el resto permanecen igual.

Ejemplo


CBR(Clear Bit en Register)
Esta instrucción  hace la siguiente operación: Rr=Rr*(complemento de b):
donde complemento de b=(255-b).

      
Instrucción CBR
 16 ≤ r ≤ 31, 0 ≤ b ≤ 255

Otra manera con la que podemos simplificar este comando es de la siguiente manera:
Del registro Rr coloco  bajo los bits 1 de b(de la misma posición), el resto permanecen igual.

Ejemplo





                    

Uso del firmware original de la grabadora USBasp AVR en MX-USBASP (clon chino)

Te vendieron un USBisp pensado que es un USBasp?? Hace 2 meses compré un "USBasp" fui a probarlo y no funcionó....pensé me estafar...