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,
video

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