Mostrando entradas con la etiqueta ATmega32u4. Mostrar todas las entradas
Mostrando entradas con la etiqueta ATmega32u4. Mostrar todas las entradas

domingo, 26 de enero de 2020

Instalación de MPLAB X 5.3 y XC8 en Manjaro Linux

[Video] Uso de Atom en Manjaro y uso para trabajar con ensamblador para AVR como editor

En el siguiente video, muestro la forma en que se usa el editor Atom para trabajar con ensamblador de AVR, aclaro que no es usado Atom para el ensamble, solo como editor.

Instalación de software para programar microcontroladores AVR en Manjaro Linux desde la consola

A continuación muestro en formato de video, la manera de instalar el software necesario para programar microcontroladores AVR en un ambiente Manjaro desde la terminal, cabe mencionar que esta instalación fue hecha desde una instalación limpia.


jueves, 12 de marzo de 2015

Documentando con Doxygen Cabeceras

/** @file clk.h

@code #include  @endcode

@brief Macros para definir la frecuencia de oscilacion del reloj
principal
*/
#ifndef CLK_H
#define CLK_H




/**
 *  @name  Definitions for MCU Clock Frequency
 *  Adapt the MCU clock frequency in Hz to your target.
 *  Revisa las paginas 37-39
 */

#define F_CPU 16000000L ///< Frecuencia de 16MHz
#if F_CPU == 16000000L
#define ADC_PRESCALER 0x07  ///

Patebin link

Documentando con Doxygen programa Principal

Archivo Principal

/**@mainpage TecladoDriver.c
 * @brief Imprimir en un display de siete segmentos la tecla presionada por un teclado matricial
   @section intro
   Este programa imprime un numero desde un teclado matricial y lo pone en un display de siete segmentos de catodo comun
   es posible el uso de un display de anodo comun, a traves de una interfaz con un ULN2803
   @section Uso
   Solo se presiona una tecla del matricial y el numero aparece en el display
 * @author: Miguel Montiel
 
 */ 


#include 
#include "clk.h"
#include "keyb.h"
#include "sevseg.h"

/**
@file TecladoDriver.c
@brief Programa que escribe un numero a un display de 7 segmentos
@author Miguel Montiel
*/
int main(void)
{
	
	unsigned char tecla;
	
	_init_Teensyduino_internal_();
	vInitKeyPad();
	InitSegSeg();
	
	
    while(1)
    {
        //TODO:: Please write your application code 
		tecla = ui8_TestKeyPad();
		delay_ms(5);
		Print(tecla);
    }
}

jueves, 26 de diciembre de 2013

Compilando en GCC una funcion creada en XFuzzy en Manjaro Linux

XFuzzy es un programa de Open Source desarrollado por el centro Nacional de microelectronica de Sevilla, España. este software permite el desarrollo de sistemas difusos, para su implementación, monitoreo, y simulación con planta, además permite la implementación de código fuente a partir del sistema propuesto

En la imagen se muestra como esta implementado un sistema difuso y su monitorización.

Para generar un fuente a partir del sistema, dar clic en Synthesis -> To C, ahora elige la carpeta donde se van a almacenar los archivos generados que tendrán el mismo nombre del sistema, por ejemplo, para este caso el sistema se denomina example.xfl y los archivos generados se llaman example.c y example.h

Dentro del archivo example.h se encuentra la función que se puede llamar desde lenguaje , esta funcion incluye el nombre del sistema difuso diseñado en XFuzzy seguido de las palabras "Inference Engine", en este caso:

exampleInferenceEngine

Esta función tiene igual número de parámetros que entradas y salidas tiene el sistema
El código fuente se muestra en la imagen anterior, revise que la salida del sistema se almacena en la variable sal, la cual inicialmente se le asigna un valor de 0.0 por ser una variable de tipo double. notese que se usa paso por referencia.

Para compilar el programa (http://stackoverflow.com/questions/8999975/strange-behaviour-of-gcc-and-math-h) se usan algunos parámetros como son Wall y lm pque sirven para imprimir todas las advertencias que se generan (-Wall) durante la compilación del programa y -lm para el uso de la libreria math.h

En la imagen se aprecian las líneas para compilar el programa mostrado y la forma en que se ejecuta, es importante el orden de los archivos a compilar.

Para este caso se podrá notar la salida del sistema cuando las variables val1=val2 = 50.0 y val3 = 0.4 da el compilador de C un resultado de salida de 0.15 y en la imagen siguiente se muestra la salida del sistema difuso definido en XFuzzy cuando las entradas son 50.0, 50.0, 0.4

Esta portabilidad hace interesante a la herramienta, ya que es posible en cierta medida, colocar este código generado en un sistema embebido como lo es un microcontrolador.

hasta el momento les puedo comentar que en avr-gcc funciona muy bien pero con Pinguino PIC no se puede compilar a causa de que SDCC no permite el paso de estructuras como argumentos de funciones. Esto tambien lo probé al tratar de compilar en SDCC puro con el IDE PIKLAB


A fin de confirmarles el uso de la libreria generada por Xfuzzy en AVR-GCC se usa como IDE el code-blocks en su versión 12.11


y programando un ATmega32u4 (vea los siguientes links http://iemontiel.blogspot.mx/2013/05/mexican-arduino-usb-en-fedora-18.html y http://iemontiel.blogspot.mx/2013/12/teensyduino-en-manjaro.html) con cristal de 16MHz integrado en la tarjeta, es posible su compilación y el empleo de EASYDFU (como supervaca) para enviar la información al microcontrolador.
Vea que es interesante el hecho de que solamente se ocupó el 17.30% del total de la memoria del microcontrolador en cuestión.

domingo, 15 de diciembre de 2013

Comunicacion HID ATmega32U4 en Manjaro


En la siguiente captura de pantalla se muestra como se establece la comunicacion entre un Atmega32U4 y la caja Manjaro que tengo a 64bits.
Se usa un script de Teensy denominado HID Listen, el cual según dice en la página de Teensy, solo corre en máquinas de 32 bits, pero en la máquina que tengo que es a 64 bits corre sin ningun problema.

Los fuentes de ejemplo los he descargado de este Link, donde se pone el ejemplo que se muestra en la pantalla y se siguen las recomendaciones de esta otra página para corregir los errores LINK

En la siguiente se muestra como se compila el programa, solo con un simple comando $make

Teensyduino en Manjaro

La siguiente es la forma de grabar el Teensyduino 
auto -> reset -> reset -> auto

martes, 14 de mayo de 2013

Mexican Teensyduino USB en Fedora 18

El siguiente post es para hacer funcionar el clon de Arduino que encontré en la siguiente página en Fedora18
www.comunidadatmel.com
Este clon cuenta con la ventaja de ser un micro con modulo USB integrado, ya que tiene el atmega32u4, el cual de acuerdo al vendedor puede ser programado con sketchs arduino o mediante avr-gcc como un micro normal, pero cuenta con la ventaja de tener un bootloader, el cual le permite grabar al microcontrolador sin necesidad de un programador externo.
Para trabajarlo en modo arduino en Windows, se requiere del software de Arduino, el plug in de Teensyduino y finalmente de Flip. Pero como tengo unas cajas Linux, entonces vamos a echarlo a andar aquí. En otro post les comentaré mi motivación.
Se van a requerir que se descarguen software de los links que a continuación expongo:
http://arduino.cc/en/Main/Software
http://www.pjrc.com/teensy/td_download.html
https://sourceforge.net/projects/dfu-programmer/files/latest/download?source=files

(al final se trabajará con línea de comandos- problemas de dependencias en Fedora18)

No eran problemas de dependencias solo hay que cambiar un poco el archivo .pro, quedando de la siguiente manera

#-------------------------------------------------
#
# Project created by QtCreator 2011-05-31T09:58:34
#
#-------------------------------------------------

QT       += core gui

TARGET = easydfu
TEMPLATE = app


SOURCES += main.cpp\
        easydfu.cpp

HEADERS  += easydfu.h

FORMS    += easydfu.ui

RESOURCES += \
    icons.qrc

INCLUDEPATH += "/usr/include/QxtCore/"
LIBS += -lQxtCore -lQxtGui

La linea que se cambio fue
INCLUDEPATH+="/usr/include/qxt/QxtCore"
y en el archivo easydfu.h la línea 31 que dice

#include qxt/QxtGui/QxtGlobalShortcut

se cambia por
#include QxtGui/QxtGlobalShortcut

no pongo los signos de mayor que y menor que por que me edita el blogspot ;P

y finalmente el archivo easydfu.cpp se modifican la línea 30 para que el código quede así:
  ui->setupUi(this);
//modificado para que lo encuentre el root
    programPath = "/usr/local/bin/dfu-programmer";



En Ubuntu (12.04) mi otra box, pude instalar el siguiente paquete
https://sourceforge.net/projects/dfu-programmer/?source=dlp
Que es un cargador gráfico del .hex generado hacia el micro, mas o menos tipo Flip (ya tambien en Fedora18)
  1. Se descargan los paquetes de acuerdo al tipo de sistema que tengamos ya sea de 32 o 64 bits.
  2. Se descomprime el archivo arduino-X.X.X-linuxXX.tgz
  3. El archivo teensyduino.64bit se le dan permisos de ejecución, solo da clic derecho sobre el icono, selecciona propiedades, da clic en la pestaña Permisos y sobre la casilla "es ejecutable" coloca una paloma mediante un clic.
  4.  Da un doble clic para instalar y saldrá la siguiente pantalla
  5. Da clic en Next y elige el lugar donde descomprimiste el software de arduino.



  6. Escoge las librerias que te interesa instalar (yo seleccioné todas y di clic en siguiente)
  7. al dar siguiente, ya nos permitirá instalar el software de Teensy
  8. Una vez instalado nos aparece la ventana que indica que ya ha terminado la instalación.
  9. Da clic en el botón Done.
  10. Ahora ejecuta el software de arduino.
  11. Y elige la tarjeta Teensy 2.0 del menu Herramientas -> Board ->Teensyduino 2.0
  12. De esta forma ya podremos generar sketch's para la tarjeta, el siguiente paso consiste en instalar DFU, que es el software a utilizar en lugar de Flip de atmel (Esto es por que flip aun no es compatible con Linux)
  13. Se descomprime el archivo dfu-programmer-0.6.0
  14. ingresamos en la carpeta descomprimida
  15. abrimos una terminal ahi y tecleamos el comando $./bootstrap.sh
  16. luego $./configure
  17. $make
  18. $sudo make install
  19. La instalacion la realiza en /usr/local/bin, por lo que hay que tener cuidado ya que su no ve este directorio así que para invocar como superusuario debera hacer esto
  20. $ sudo /usr/local/bin/dfu-programmer atmega32u4 erase por ejemplo
  21. para programar un sketch realizado
  22. $sudo /usr/local/bin/dfu-programmer atmega32u4 flash /home/miguel/sketchbook/sketch_may15a/sketch_may15a.cpp.hex
  23. y para que funcione
  24. $sudo /usr/local/bin/dfu-programmer atmega32u4 start
  25. Para la instalación del entorno gráfico (si compila pero no carga correctamente al dfu-programmer :( )
  26. Se descomprime easydfu_1.0_src.tar.gz
  27. Entramos a la carpeta
  28. ejecutamos la orden qmake de la siguiente manera
  29. qmake-qt4 EasyDFU.pro (recuerda las modificaciones indicadas al inicio del post)
  30. y luego make
  31. se debe usar como root o mediante el comando sudo
  32.  asa
    sas
  33. Esta es una prueba de que está corriendo el software :)
    a
    sas


Cargar Teensy version mexicana en caja Fedora... por maigke