Foros Airsoftmadrid
Foro General => OffTopic => Mensaje iniciado por: Scaramanga en Noviembre 15, 2008, 11:19:10 am
-
1. Las reglas en los foros no se las lee ni Dios. Están como los acuerdos de licencia de Windows: para darle a "siguiente", "siguiente", "aceptar", "finalizar". Los admins las creamos por egolatría pura, puesto que ni nosotros mismos les hacemos caso. Así que nada de leerselas antes de darse de alta o de hacer uso del foro.
2. Me encanta el misterio, así que no pongas títulos descriptivos en los asuntos. Me chifla entrar en posts tipo "problema", "ayuda novato", "ayuda urgente!!!!!111111". ¡Nunca se sabe lo que se puede encontrar uno dentro, y mi vida es taaaaan monótona!
3. No mires los howtos, ni la documentación, ni si antes alguien ha preguntado lo mismo. Eres lo más importante (para eso se ha creado un foro, ¿no?), así que ¿qué más da que a otro tontolaba le hayan contestado exactamente lo que tú preguntabas? ¿Lo has preguntado tú? ¡No! Pues entonces la respuesta no es para ti.
4. ¿x que bas a hescrivir vien si tdos ts amgos t ntiendn kuando ls mands msgs al mbil? ¡Ke postear es karo i mola muxo heskrivir kn que! Igualmentelossignosdepuntuaci onsontotalmenteprescindibles nadiehoyendiausalascomasnilos puntosalahoradehablar ellenguajeescritoesunreflejod eloralno.
5. Deja bien clarito que eres novato/a. Es IMPRESCINDIBLE que lo sepamos. Olvídate de la descripción del problema (ver punto 1), esto es más importante. Que si no, todos vamos a ponértelo tan súmamente jodido que instalar Kubuntu se convertirá en un infierno superior a actualizar el firmware de una tostadora. Eso sí, cuando los demás pregunten cosas que sepas, tienes que parecer el-puto-amo. Nada de instrucciones sencillas, tu lenguaje tiene que ser más elevado que tu ego. Pero no olvides el uso SMS (ver apartado 4).
6. Jamás pongas el post en el sitio adecuado. "Acerca de esta web" sirve para todo. ¿No es en esta web donde estás posteando? ¡Pues ya está! Que lo expliquen mejor en esas normas que... oh wait!
7. Escribe tus dudas tantas veces como seas capaz y en el máximo número de apartados del foro que puedas. ¡Los moderadores se lo pasan pipa eliminando post repetidos! Si te borran un post, aunque lo hayas repetido 50 veces en diferentes apartados (y ninguno en el foro adecuado porque no tiene nada que ver con la tematica y ademas simplemente es por fastidiar un poco), escribe otro llamando nazi al moderador y explica la falta de libertad de expresion (aunque no tengas ni zorra de lo que significa eso) que existe en el foro.
8. Jámas sigas los links que se te dan
9. Escribe todo en mayúsculas, significan grito y se pierde legibilidad, es sensacional para brindar un ambiente ameno.
10. si tienes problemas con un código no te molestes en tratar de ver donde esta el problema , solo postea las 100 lineas de código pues es nuestro trabajo descifrar que carajos fumaste cuando lo escribiste ^^
11. usa modismos locales pero no seai pasao pelicula, si la wea es que el wn no cache.
12. ¿google? eso es para nenazas
13. Escribe con letras de colores que mimeticen con el fondo del foro.
14. Ponte una firma y avatar tamaño Boeing 747.
-
::)¿y que hacias surfeando por foros ingfogmaticos? :D
-
10. si tienes problemas con un código no te molestes en tratar de ver donde esta el problema , solo postea las 100 lineas de código pues es nuestro trabajo descifrar que carajos fumaste cuando lo escribiste ^^
completamente descauerdo con esta.... aunque el fallo pueda estar en la linea x puede ir acarreado de cualquier otra parte , con lo cual poner todo el codigo no es tan mala idea...
. Deja bien clarito que eres novato/a. Es IMPRESCINDIBLE que lo sepamos. Olvídate de la descripción del problema (ver punto 1), esto es más importante. Que si no, todos vamos a ponértelo tan súmamente jodido que instalar Kubuntu se convertirá en un infierno superior a actualizar el firmware de una tostadora. Eso sí, cuando los demás pregunten cosas que sepas, tienes que parecer el-puto-amo. Nada de instrucciones sencillas, tu lenguaje tiene que ser más elevado que tu ego. Pero no olvides el uso SMS (ver apartado 4).
jajjjaja el problema es que no para todo el mundo es tan simples las cosas... ejem: en mi clase de teleco uno/a de los alumnos/as no sabia que era una BIOS y tras 3 dias con el portatil nuevo de la uni destrozo el HD intentando formatear poniendo los valores default en la bios...y el pc entraba en un bucle infinito de reinicio... ;D ;D
PD: soy el unico que ha consiguido petar kubuntu en 3 minutos?? ;D ;D
-
Kubuntu es el más fácil de petar de todos :D :D
-
Entonces yo debo ser una maquina petadora, me peta hasta el ubuntu en menos de 3 minutos... menos mal que tengo el querido vista el sistema operativo mas estable que conozco despues del Cisco IOS...
Linux esta para la gente cool yo prefiero la comodidad... me cago en las lineas de comando.
En este foro cuando era moderador he visto de todo salvo la de las 100 lineas de codigo pero seguro que algun dia se da el caso... ;D ;D ;D
-
7. escribe otro llamando nazi al moderador y explica la falta de libertad de expresion (aunque no tengas ni zorra de lo que significa eso) que existe en el foro.
jajajaja, cuántas veces habré visto eso xDD
-
Interesante listado. Tu danos ideas y veras ;D ;D ;D
-
Si, yo creo que se han dado todos los casos, incluso juraría que también el de códigos... :D
-
moraleja: hacer lo contrario a lo que pone ;D ;D ;D ;D ;D
-
Entonces yo debo ser una maquina petadora, me peta hasta el ubuntu en menos de 3 minutos... menos mal que tengo el querido vista el sistema operativo mas estable que conozco despues del Cisco IOS...
Linux esta para la gente cool yo prefiero la comodidad... me cago en las lineas de comando.
En este foro cuando era moderador he visto de todo salvo la de las 100 lineas de codigo pero seguro que algun dia se da el caso... ;D ;D ;D
Si, yo creo que se han dado todos los casos, incluso juraría que también el de códigos... :D
Bueno, el código está listo.
Dado que detector de corriente era muy inestable, he pasado de él y he tenido que conformarme con hacerlo por tiempo, me consuelo sabiendo que en un futuro no muy lejano las AEGs llevarán en la GB detectores y el disparo será electrónico (lo que nos permitirá hacer lo que queramos sin ninguna limitación).
En fin, al grano:
- Transparente en modo semi o full auto (vamos, que la AEG tira como toda la vida :) )
- Ajuste de tiempo de ráfaga mediante potenciometro (entre 80 y 682 ms).
- Se puede pasar de modo burst a full auto dejando pulsado el gatillo dos segundos (el motor se activará 40ms para indicarlo).
Absolutamente todos los tiempo se pueden modificar por soft.
El programa esta en C, compilado con PICC LITE. Los #include se pueden encontrar en las bibliotecas del compilador.
//
// PIC12F675 ASN Burst V3
//
// _______ _______
// | \/ |
// Vdd --+ 1 8 +-- Vss (GND)
// | |
// (GATE)GP5/T1CKI --+ 2 7 +-- GP0/AN0/CIN+/ICSPDAT
// | |
//GP4/AN3/T1G/CLKOUT --+ 3 6 +-- GP1/AN1 (Potenciometro)
// | |
// !MCLR/GP3 --+ 4 5 +-- GP2/AN2/T0CKI/INT/COUT (Gatillo)
// | |
// +----------------+
#include <htc.h>
#include <pic.h>
#include <delay.h>
#include <delay.c>
char flag;
void interrupt trigger_int(void)
{
unsigned int i; //Variable para el "conteo".
unsigned int j; //Almacenamiento temporal para el valor ADC.
DelayMs(15); //Retardo para evitar rebotes
if (GPIO2==1) //Comprueba el gatillo.
{
goto EXIT;
}
if (flag!=0) //Comprueba si esta en modo BURST o FULL_AUTO.
{
goto FULL_A;
}
GODONE=1;
while(GODONE==1) //Espera la conversión de ADC.
{
asm("nop");
}
GPIO5=1; //Activa el motor.
DelayMs(80); //Al menos esta activado 80 ms (+/- un disparo completo).
j=0; //Las siguientes operaciones meten ADRESH Y ADRESL en una variable de 16bits
j=(j|ADRESH); //y calculan el tiempo en funcion del potenciometro (30 pasos de 20 ms cada uno entre el maximo
j=((j<<8)|ADRESL); //del ADC y el minimo).
j=(j/30); // j= "tiempo (en MS) por vuelta. Tiempo total = j*20".
if(j==0)
{
TMR1ON=1; //Conecto el timer.
goto CHECK_T;
}
for(i=0;i<20;++i)
{
if (GPIO2==1&&i==3) //Si se deja de pulsar el gatillo y al menos ha realizado 3 pasadas (+/- 1 disparo),
{ //comprueba que realmente se ha dejado de pulsar y retorna.
DelayMs(7);
if (GPIO2==1) //Si sigue pulsado continua con la rafaga hasta el final.
goto EXIT;
}
DelayMs(j);
}
TMR1ON=1; //Conecto el timer.
goto CHECK_T;
CHECK_T: //Si el gatillo es pulsado durante 2 sg, se pasa a modo FULL_AUTO
GPIO5=0; //Para de disparar y espero a que el gatillo vuelva a reposo.
if(TMR1IF==1) //Overflow del TMR1
{
++flag;
TMR1H=0; //Pongo el timer a cero.
TMR1L=0; //
TMR1IF=0; //Reseteo bit de overflow
TMR1ON=1; //Conecto el timer otra vez.
}
if(flag==4) //Comprueba que han pasado 2sg
{
GPIO5=1; //Activa el motor 40ms para indicar que el ha pasado a modo FULL_AUTO.
DelayMs(40);
GPIO5=0;
goto EXIT;
}
if (GPIO2==0) //Comprueba dos veces que el gatillo siga pulsado
{
DelayUs(100);
if (GPIO2==0)
goto CHECK_T; //Comprueba que el gatillo siga pulsado.
}
DelayMs(7); //Retardo para evitar rebotes.
flag=0; //Pongo el flag a cero.
goto EXIT;
FULL_A: //Modo "Burst" desactivado, activa el motor normalmente
GPIO5=1; //Activo el motor.
while (GPIO2==0) //Doble comprobación del gatillo.
asm("nop");
DelayMs(7);
while (GPIO2==0)
asm("nop");
goto EXIT;
EXIT:
DelayMs(7); //Evita posibles rebotes.
GPIO5=0; //Paro el motor.
TMR1ON=0; //Paro TMR1 .
TMR1IF==0; //Reseteo bit de overflow y TMR1.
TMR1H=0; //
TMR1L=0; //
INTF=0; //Borro flag de interrupcion y retorno.
}
//Funcion principal
void main()
{
__CONFIG(UNPROTECT&MCLRDIS&PWRTDIS&WDTDIS&INTIO);
//Configura E/S, interrupciones, perifericos y duerme el micro cuando no hay disparos
TRISIO = 0b001111; //GP0, GP1, GP2 y GP3 como entradas, resto como salidas.
GPIO = 0x00; //Todas las salidas a cero.
WPU = 0b00000100; //Pull Up de GP2 activado.
ANSEL = 0b00010011; //GP0 y GP1 configurados como entradas analogicas.
OPTION = 0b00000111; //Interrupcion GP2 por flanco de bajada.
T1CON = 0b00110100; //Configuto timer1 con prescaler 8.
ADCON0 = 0b10000101; //Configuro ADC.
INTCON = 0b11000000; //Permito interrupciones globales en GP2 por flanco de bajada .
flag=0; //Pongo el flag de modos a cero (modo "Burst").
INTE=1; //Permito interrupcion en GP2 por flanco de bajada.
LOOP:
goto LOOP; //Aqui va a estar casi todo el tiempo esperando pulsación del gatillo.
}
::) bueno no pregunta el error pero... Admite sugerencias ;D
-
Ya decia yo... ;D