GNUelectronica

Electronica y programacion en GNU Linux PIC-Python-PyGame-C-MySQL-Gambas-PHP-Qt

sábado 19 de diciembre de 2009

Usando Gafix CASIO CFX

Gafix un programa para comunicarnos con nuestra calculadora casio cfx, como por ejemplo casio cfx 9850g plus, esta escrito en gtk y utiliza las librerias libcafix, todo esta disponible en sourceforge.
En el siguiente sitio encontraran mas informacion bastante interesante http://spiderpixel.co.uk/caspro/index.html programas y documentacion de varias calculadoras.




viernes 18 de diciembre de 2009

PWM con pic 16F87x - SDCC


void pwm(unsigned int ciclo, unsigned char aux){
//250 Hz - 4Mhz valor del periodo
PR2 = 0b11111001; // 249
//Ciclo de trabajo
CCPR1L = ciclo; //249-100% 124-50%
//Prescaler 16, Timer 2 off
T2CON = 0b00000011 ;
//Modo PWM
CCP1CON = 0b00001100 ; // 8bit

if (aux=='1'){
TMR2ON=1;
}else if(aux=='0'){
TMR2ON=0;
}
}

Hasta ahora funciona bien n_n asi que bueno modificare con el tiempo...
para el motor que estoy usando de una lectora de CD los 250Hz le vino como anillo al dedo xD
pwm(124,1) seria el valor de los ciclos de trabajo y el uno para avilitar el PWM desde el
registro T2CON. Mas info para los calculos vean la hoja de datos de microchip donde en una tabla
nos indica los minimos y maximos en que puede trabajar el pwm segun el cristal empleado.

martes 15 de diciembre de 2009

freemat - Funciones para calcular tiempos TMR0

El siguiente codigo lo extraje de http://www.iearobotics.com/ un excelente sitio de microcontroladores pic con manuales cursos ejemplos.

El codigo calcula el valor del registro TMR0 y de su prescaler para configurarlo y poder generar notas musicales, ingresamos el valor del cristal y la frecuencia que queremos generar. Los scripts estan para matlab asi que hize unos cambios para que funcionen en freemat.




function TMR0=timer0_TMR0_frec(FOSC,frecuencia)
DIV=[2,4,8,16,32,64,128,256];
PS=[000,001,010,011,100,101,110,111];
Duracion = 1/(2*frecuencia)*1000000;
TMR0=256-timer0_ticks(FOSC,Duracion);
frec = 1000000./(2*timer0_Duracion(FOSC,Duracion));
Error = frecuencia-frec;
for i=1:length(TMR0)
if TMR0(i)<256 && TMR0(i)>=0
printf ('TMR0= %d, PS2:0= %03d, Div= %3d, Frec= %.1f Hz, Error= %.2f Hz\n', TMR0(i), PS(i), DIV(i), frec(i), Error(i));
end
end



function Dur=timer0_Duracion(FOSC,Duracion)
DIV=[2,4,8,16,32,64,128,256];
N=timer0_ticks(20,Duracion);
Dur = N.*(4*DIV/FOSC);



function N=timer0_ticks(FOSC,Duracion)
DIV = [2 4 8 16 32 64 128 256];
N = round(FOSC*Duracion./(4*DIV));
for i=1:length(N)
if N(i)>255
N(i)=NaN;
end
end



function TMR0=timer0_TMR0(FOSC,t)
DIV=[2,4,8,16,32,64,128,256];
PS=[000,001,010,011,100,101,110,111];
TMR0=256-timer0_ticks(FOSC,t);
tc=timer0_Duracion(FOSC,t);
Error = t - tc;

for i=1:length(TMR0)
if TMR0(i)<256 && TMR0(i)>=0
printf ('T0INI= %3d, PS2:0= %03d, Div= %3d, tc= %.1f us, Error= %.2f us\n',
TMR0(i),PS(i), DIV(i), tc(i),Error(i));
end
end






martes 27 de octubre de 2009

Ejemplo 6 - Sensores infrarrojos


/* Autor: Jose Maria Quiroga
chispilinux@gmail.com
GNU-Electronica

RB7 A CD4052
RB6 B
RB5
RB4
RB3
RB2
RB1
RB0 INT

RC7 RX
RC6 TX
RC5 IN - LM562
RC4 SDA
RC3 SCL
RC2 CE PWM L293D
RC1 B
RC0 A

RA0 AN0
RA1 AN1
RA2 AN2
RA3 VRef +
RA4 LED
RA5 AN4 */

#include <pic16f873a.h>
#include <usart.h>
#include <adc.h>
typedef unsigned int word;
word at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF;

#define CA RB7
#define CB RB6
#define LED RA4
#define IN RC5
#define MA RC0
#define MB RC1
#define CE RC2

void retardo50ms(int m);

void main() {
Configuracion();
ConfigUART();
ConfigADC();
PORTA=0;PORTB=0;PORTC=0;

while(1){
CA=0;CB=0;
if (IN==0){
retardo50ms(1);
if (IN==0)LED=0;
}else{
LED=1;
}
}
}


void Configuracion(){
TRISA=0b00101111;
TRISB=0b00000000;
TRISC=0b10100000;

INTCON=0b00000000;
T0CS = 0;
TMR0 = 0;
PSA = 0;
}


void retardo50ms(int m){
unsigned int i;
for (i=1;i<=m;i++) {
PS2=1; PS1=1; PS0=1;
T0IF = 0;
TMR0=255;
while(T0IF==0);
}
}

jueves 22 de octubre de 2009

Sensores de obstaculos


video

IRC

#freenode->#usljujuy

Eventos n_n

Tira Ecol Nano,Bilo y Luca

Archivo del blog

Datos personales

Mi foto
Jose Maria Quiroga
Ver todo mi perfil