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);
    }
}

domingo, 1 de marzo de 2015

Desde casa!!! Hace casi un año que no he escrito nada, y no por falta de quehacer, sino mas bien por exceso, espero retomar pronto mis notas del blog. Saludos

viernes, 28 de marzo de 2014

Vector Linux 7.0 en Celeron 600MHz con 64MB en RAM

;) si fue posible instalar Vector Linux y compilar GCompris 12.05 en este equipo, el problema es que la velocidad en que corre gcompris es muuuy lenta, pero si corre, el audio funciona muy bien.

Creo se usará este equipo para hacer otras cosas como aun automatizacion pequeña

jueves, 20 de marzo de 2014

Reactivando el backlight en Manjaro Linux

Esto solo es un repost de
http://wiki.manjaro.org/index.php/Reactivating_the_Backlight

De acuerdo a la liga, no es posible ajustar el brillo de la pantalla, debido a que los fabricantes han deshabilitado mediante BIOS, el dimmer de las lamparas si no es detectado windows, de acuerdo al mismo texto, es posible recuperar el ajuste de brillo cuando entramos en una consola el siguiente comando

sudo sed "s/\(GRUB_CMDLINE_LINUX=\)\"\"/\1\"acpi_osi=Linux acpi_backlight=vendor\"/" /etc/default/grub -i
 
El cual permite reajustar el brillo en linux, esto pide ingresar nuestro passwd y ahora 
solo queda por teclear en consola de nuevo, el siguiente comando
 
sudo update-grub
 
Al terminar se cierra la terminal, se reinicia el sistema y listo!!! 
 
 
 

martes, 21 de enero de 2014

Led Blink ATmega32U4 a 16 MHz

La tarjeta de Teensyduinno V2.0 la cual contiene un ATmega32U4 puede ser programada por medio de un bootloader el cual está residente en la memoria FLASH del microcontrolador.

Una gran ventaja de esta tarjeta ademas de que puede ser programada como un arduino, tambien puede ser programada como un AVR normal, por medio de avr-Gcc

En el siguiente programa se muestra un ejemplo de como hacer que encienda y apague un LED e intervalos de un segundo,

fuente:
http://forum.pjrc.com/threads/21825-Fuses-Teensyduino-sets-for-Teensy-2-0
#define F_CPU 16000000L

#if F_CPU == 16000000L
#define ADC_PRESCALER 0x07
#define CPU_PRESCALER 0x00
#elif F_CPU == 8000000L
#define ADC_PRESCALER 0x06
#define CPU_PRESCALER 0x01
#elif F_CPU == 4000000L
#define ADC_PRESCALER 0x05
#define CPU_PRESCALER 0x02
#elif F_CPU == 2000000L
#define ADC_PRESCALER 0x04
#define CPU_PRESCALER 0x03
#elif F_CPU == 1000000L
#define ADC_PRESCALER 0x03
#define CPU_PRESCALER 0x04
#else
#error "Teensyduino only supports 16, 8, 4, 2, 1 MHz.  Please edit boards.txt"
#endif
//#include 
//#include 
//#include 

void _init_Teensyduino_internal_(void);

int main(void)
{
 _init_Teensyduino_internal_();

    DDRB |= (1 << DDB0); 


    while(1){
            PORTB |= (1 << PB0);
            _delay_ms(1000);

           PORTB &= ~ (1 << PB0);
           _delay_ms(1000);


    }

    return 0;
   
}

void _init_Teensyduino_internal_(void)
{
        cli();
        CLKPR = 0x80;
        CLKPR = CPU_PRESCALER;
}


jueves, 2 de enero de 2014

MyOpenLab contadores en Manjaro Linux

En este video se muestra el funcionamiento de los contadores programados en MyOpenLab sobre una caja Manjaro Linux.

Xfuzzy en Manjaro un ejemplo

En el video se muestra como se puede implementar un ejemplo muy simple de un sistema difuso de una entrada, una salida y dos reglas mediante la herramienta XFuzzy

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.

martes, 17 de diciembre de 2013

Disparo de TRIAC por deteccion de cruce por cero y PWM con QUCS en Manjaro

En esta ocasión presento un circuito simulado que aprendí en la facultad, ya hace algunos ayeres para el disparo de un triac, usando la detección de cruce por cero para el disparo de un TRIAC, empleando un circuito para modular en PWM un voltaje ajustable (Vcomp en el circuito), este voltaje puede provenir de un simple pot, hasta de la salida de una DAC de un microcontrolador, debemos tomar en cuenta que hace falta un optoacoplador, pero no lo encontre en QUCS. a continuación presento el circuito:
En la gráfica se puede apreciar las partes que componen al circuito general; se coloca el diodo ya que el opamp de QUCS no permite poner fuentes, razon por la cual se tiene saturaciones en +Vcc y -Vcc lo cual es correcto si alimentamos con fuente bipolar, pero para este caso no es necesaria una señal en -Vcc, es por ello la razon del diodo

Aqui se muestran las imagenes de las gráficas resultantes de la simulación con QUCS, como verán son muy buenas estas imágenes.


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

Configurar Codeblocks en Manjaro para programar AVR


Code Blocks es un IDE multiplataforma para lenguaje C, en esta entrada describiré brevemente como configurar el Code Blocks para que en Manajro se pueda programar un AVR, en este caso tenemos el ATmega32U4

La primera parte es muy sencilla ya que solo hay que seguir un asistente, el problema es que cuando se pretende compilar el nuevo codigo, envia un error


/usr/lib/libm.so: file not recognized: File format not recognized
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings

Esto es a causa de que el IDE no está correctamente configurado para funcionar con el AVR GCC, por lo tanto solo hay que redireccionarlo, tal y como se indica en esta entrada de AVR Freaks

 http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=99954&view=next

De acuerdo a lo que ahi se indica debemos ir al menu settings, luego al menu Compiler..

Seleccionar el compilador "GNU AVR GCC Compiler"

Ir a la pestaña "Search directories" y en la sub-pestaña "Linker"
cambia la ruta por
/usr/lib/avr/lib/
 que actualmente dice /usr/lib

ahora ir a la sub-pestaña "Compiler" y editar la entrada para que diga lo siguiente:

/usr/lib/avr/include/avr
Entonces, ahora si al compilar tendremos el siguiente resultado :)


Teensyduino en Manjaro

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

jueves, 12 de diciembre de 2013

Tableta con juice ssh y scilab en server SSH Manjaro

Estoy haciendo pruebas de conexion entre un server remoto ssh que tiene scilab instalado y una tableta android con la app juice ssh

pues les comento que siguiendo las instrucciones en este blog

http://jax-metalmax.blogspot.mx/2012/11/instalacion-y-configuracion-de-ssh.html

se instalo y configuro el server ssh en Manjaro Linux y pues accedidendo desde la tableta, se logra ejecutar scilab, aun no pruebo los comandos de ejecucion pero les puedo mencionar que el scilab instalado en el server ssh tiene los siguientes modulos cargados

  • COSELICA
  • Fuzzy Logic Tool Box
  • CPGE
  • SIMM
  • Serial toolbox
  • usb toolbox
  • ANN toolbox
El detalle que tengo para ejecutar scilab desde la conexion de ssh en la tableta,  es que el comando debe ser

$./scilab-adv-cli

ya que

$./scilab-cli

da un error de violacion de segmento.

No pongo foto o imagen por que no se como se envia la captura de pantalla en Android. :p

Saludos

Prueba programando PICs en Manjaro Linux

Estaba con la curiosidad de como funcionaria pk2cmd instalado desde las fuente en Manjaro, y he visto con agrado que si funciona muy bien, los pasos de instalación son de lo mas sencillos

  1. Bajar el archivo .tgz del sitio de microchip
  2. Descomprimir el archivo en una carpeta especial (en mi caso he creado dentro de mi home una carpeta llamda opt para instalar aquellas programas que no vienen por defecto en Manjaro)
  3. entrar en la carpeta descomprimida
  4. teclar la instrucción siguiente:   $make linux para compilar las fuentes para GNU/Linux
  5. ahora como super usuarios teclear (en este ejemplo hago referencia a sudo) $sudo make install
  6. Debido a problema con PK2Device.dat se va a copiar este archivo junto al ejecutable en /usr/local/bin, de la siguiente manera 
$sudo cp  PK2DeviceFile.dat /usr/local/bin

Esto es para que no ocasione problemas en caso de crear un lanzador para el escritorio. 

En el siguiente link se encuentra un script para que se ejecute el pk2cmd en modo grafico

http://pastebin.com/2rKyjbkr

Bien espero que este link sirva para que les de la curiosidad de programar microcontroladores PIC usando un sistema Linux y muy amigable como Manjaro.

Caracteristicas de mi box Linux
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 CPU         T5300  @ 1.73GHz
stepping        : 2
microcode       : 0x5c
cpu MHz         : 1733.000
cache size      : 2048 KB


SMBIOS 2.4 present.
25 structures occupying 1385 bytes.
Table at 0x000DF010.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: Phoenix Technologies LTD
    Version: 77.11  
    Release Date: 03/19/2007
    Address: 0xE5A60
    Runtime Size: 107936 bytes
    ROM Size: 1024 kB
    Characteristics:
        ISA is supported
        PCI is supported
        PC Card (PCMCIA) is supported
        PNP is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        ESCD support is available
        Boot from CD is supported
        Selectable boot is supported
        Print screen service is supported (int 5h)
        8042 keyboard services are supported (int 9h)
        Serial services are supported (int 14h)
        Printer services are supported (int 17h)
        ACPI is supported
        USB legacy is supported
        Smart battery is supported
        BIOS boot specification is supported
        Function key-initiated network boot is supported
        Targeted content distribution is supported

Handle 0x0001, DMI type 1, 27 bytes
System Information
    Manufacturer: Gateway                        
    Product Name: MX6947M                        
    Version: 3408141R               
    Serial Number: T3C74B1001377                  
    UUID: E068DDB3-DB1D-B211-8000-FE779A898FC6
    Wake-up Type: Power Switch
    SKU Number: Not Specified
    Family: Not Specified


viernes, 22 de noviembre de 2013

domingo, 17 de noviembre de 2013

Pinguino PIC18F2550 USBBulk y SCILAB con USB - bulk error en Manjaro

Probando Pinguino PIC con Scilab, en la modalidad USB Bulk Transfer, me encontré con el atomo de JOSE PABLO CASTRO VALVERDE, en http://forge.scilab.org.

El scilab si reconoce al Pinguino en modalidad Bulk Transfer pero indica el siguiente error al tratar de enumerar al dispositivo
 

 -->;exec('/home/miguel/Documentos/scilab/usbTst.sce', -1)
 
 Libusb-1.0 Library initialized  
 
 device open  
endP_success=bulk_set_endpoint(enpIn,enpOut);
                               !--error 999
bulk_set_endpoint: Wrong size for input argument #1: A scalar expected ????.
at line      29 of exec file called by :   
scilab/usbTst.sce', -1
el código que se le carga al Pinguino es el que viene de ejemplo en la version SVN. Espero tener mas avances proximamente.

Pinguino IDE X.4 en Manjaro version SVN

El funcionamiento adecuado de la tarjeta Pinguino en Manjaro la he logrado gracias a estas entradas de Blog y el wiki de pinguino

 http://wiki.pinguino.cc/index.php/Linux#Archlinux http://www.roboticaludica.com/instal-pinguino-ubuntu/ Vamos por partes,

Como primer punto se trata de copiar las reglas de udev que estan en Pinguino  hacia /etc/udev/rules.d


sudo cp ./extra/rules/{41-microchip.rules,26-microchip.rules} /etc/udev/rules.d/
 
 

Ejecutar los siguientes comandos
sudo groupadd plugdev
sudo usermod -a -G plugdev $USER
sudo chgrp -R plugdev /dev/bus/usb/
Al terminar de ejecutar los comandos anteriores, se debe reiniciar y listo!!