martes, 18 de agosto de 2020

Proyecto 5-Hola mundo en ASM

 Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar el típico parpadeo de un led, el llamado "Hola mundo", es este ejemplo el led estará conectado al pin B.0.
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.

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

miércoles, 12 de agosto de 2020

Elector-Electronics leading the way./AVR drives USB.

Este documento es una revista electrónica "elecktor electronics " .

fue publicada en el año 2007, corresponde al volumen 33 y es la revista número 363 , los temas que se tratan son:

1  Controlador de dispositivo USB universal. 

 2 ZigBee Transceiver(Xbee in practice) 

3 Teléfono movil LCD para PC.   

 4 Limpiador del sarro del agua dura(mini proyecto).

5 medidor de continuidad de cable de ethernet. 

6 Entrada/salida CMOS 5 a 3.3 V.  

Eso es todo amigos!!!.


viernes, 22 de mayo de 2020

Libro-SOME ASSEMBLY REQUIRED-Assembly Language Programming with the AVR Microcontroller.

En esta entrada vamos a hablar de manera resumida sobre un documento muy interesante "SOME ASSEMBLY REQUIRED-Assembly Language Programming with the AVR Microcontroller." 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.

Este documento es un libro especial, fue escrita por, Timothy S. Margush, PhD (Bowling Green State University), fue profesor asociado de ciencias de la computación en la Universidad de Akron. Tenía más de 30 años de experiencia docente en matemáticas y ciencias de la computación, incluidos muchos cursos de programación en lenguaje ensamblador utilizando una variedad de plataformas de hardware. El Dr. Margush falleció poco después de enviar Some Asssembly Required: Assembly Language Programming with the AVR Microcontroller con la satisfacción de haber servido a otros interesados en aprender lenguaje ensamblador.
Assembly Language Programming with the AVR Microcontroller.

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

  1. Introducción a la computación.
  2. La familia de los microcontroladores  AVR.
  3. Arquitectura y programación en lenguaje asembler.
  4. Representación de datos enteros.
  5. Procesamiento en la CPU, memorias y sistema de Reset.
  6. La pila STACK y la llamada de funciones.
  7. AVR serial-Síncrono y Asíncrono.
  8. Operaciones Lógicas.
  9. Estructuras de control.
  10. Interrupciones-AVR en ASM .
  11. Operaciones Aritméticas.
  12.  Matrices.
  13. Números Reales.
  14. Programación en lenguaje C.
 


miércoles, 22 de enero de 2020

TABLAS

¿Cómo se guardan los datos de las "tablas" en memoria de programa?

Para saber como se guardan los datos en las "tablas" se van a realizar unos ejemplos básicos:

Ejemplo1 :Almacenamiento de tabla .org 0x0000 

------------------------------------------------------------------------------------------------------------------------------------------------------
Figura1:ORG 0x0000

Como se observa en la figura 1 la "tabla" en la dirección 0x0000(Word) coincide con la dirección 0x00 en Byte.

Ejemplo2 :Almacenamiento de tabla .org 0x0001 

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


Figura2:.ORG 0x0001

En la figura 2 los valores de  la "tabla" se van guardando desde la dirección 0x02 en Byte y desde la dirección 0x0001(como lo ordena .ORG 0x0001). 

Ejemplo3 :Almacenamiento de tabla .org 0x0002 

------------------------------------------------------------------------------------------------------------------------------------------------------
Figura3:.ORG 0x0002

En la figura 3 los valores de  la "tabla" se van guardando desde la dirección 0x04 en Byte y desde la dirección 0x0002(como lo ordena .ORG 0x0002). 

Ejemplo4 :Almacenamiento de tabla .org 0x0003 

------------------------------------------------------------------------------------------------------------------------------------------------------
Figura4: .ORG 0x0003

En la figura 4 los valores de  la "tabla" se van guardando desde la dirección 0x06 en Byte y desde la dirección 0x0003(como lo ordena .ORG 0x0003). 

 Conclusiones 

  • La construcción de "tablas" se establecen dentro de memoria FLASH o memoria de programa.
  • Se observa que cuando el origen de la tabla " Adress(.org 0x000a)" este es WORD(16 bits) los datos se van a guardar en "Adress(.org 0x0[2a])" este es en Byte.
  • Por lo anterior se puede decir que cuando doy un origen a(dirección en word), los valores se van a guardar en a*2(dirección en byte) 
  • Al momento de llamar la dirección de la "tabla" en byte éste será el doble de la dirección de  origen(en word) de la "tabla".
  • Para llamar la dirección de la tabla(en byte) desplazada 1 posición hay dos maneras; la primera es [tabla*2] y la segunda  es [tabla<<1].

martes, 21 de enero de 2020

Uso de la instrucción "LD" y "ST"

LD(Load Indirect from SRAM(data Space) To Register using Index Y,X

  • Se carga Rd con el contenido que apunta el registro apuntador Y.
  • Carga indirecta del espacio de datos hacia Rd.

Instrucción LD
Como pueden ver  esta instrucción es muy similar a la instrucción LDS, pero ahora vemos que usa el registro Y(16 bits), éste registro Y, la cual  se usa como apuntador de dirección.

Descripción y puntos importantes.

  •  Para usar esta instrucción se debe cargar previamente el apuntador Y, ya que según  la dirección que este apuntado "Y" va a mover el dato que esta en esta dirección y la colocará en Rd .
  • En algunos casos en vez de "Y" encontraremos "Y+" o "-Y" , eso quiere decir que cuando se ejecute la instrucción va a aumentar o disminuir este registro apuntador"Y" de 16 bits.
  • Esta instrucción no la cuenta todos los microcontroladores ATMEL
  • Para algunos microcontroladores ATMEL que solo tienen 256Bytes de memoria solo es suficiente usar 8 bits(los menos significativos).
  • Para microcontroladores ATMEL con mayor memoria de datos ya se usan los 16 bits.
  • Recordemos que  la pila se ubica en la SRAM interno y su inicio es la última dirección de memoria, para el caso del Atmega32 la última dirección(RAMEND) es 0x85F.
  • Se pueden usar los punteros X,Y, los dos  de 16 bits.
  • Debemos tener en cuenta que el puntero X esta formado por los registros R26,R27, el puntero Y está formado por los registros R28,R29 y finalmente el puntero Z esta formado por los registros R30,R31, como se muestra en la siguiente imagen:
Punteros

Ejemplo

------------------------------------------------------------------------------------------------------------------------------------------------------
Agregar el contenido de la ubicación de la dirección de 0X1F(Correspondiente a R31) hacia el registro R16.
Código
Este es un método indirecto de cargar valores dentro la memoria de datos según la dirección que deseemos  de SRAM hacia la misma SRAM. 
Debug
------------------------------------------------------------------------------------------------------------------------------------------------------
ST(Store Indirect From Register to Data Space using index X,Y

  • Se carga el valor de la dirección apuntada por  Y con el contenido de Rr, 0<=r<=31
  • Carga indirecta de Rr  hacia la dirección de SRAM apuntada por Y.
Instrucción ST
  • Como pueden ver  esta instrucción es muy similar a la instrucción STS, pero ahora vemos que usa el registro Y(16 bits), éste registro Y, la cual  se usa como apuntador de dirección.
  • Como se observa este es el proceso inverso de la instrucción LD.
  • En algunos casos en vez de "Y" o "X" encontraremos "Y+" ,"-Y","X+","-X" , eso quiere decir que cuando se ejecute la instrucción va a aumentar o disminuir este registro apuntador"Y" o "X" de 16 bits.

Ejemplo

------------------------------------------------------------------------------------------------------------------------------------------------------
Agregar el contenido de la ubicación del registro R16 hacia la dirección de X.
------------------------------------------------------------------------------------------------------------------------------------------------------

Código

Este es un método indirecto de cargar valores dentro la memoria de datos según la dirección que deseemos  de SRAM hacia la misma SRAM. 
Debug
------------------------------------------------------------------------------------------------------------------------------------------------------

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