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