Autor Tema: Enviar y Recibir 1khz entre pic y pic  (Leído 1957 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Enviar y Recibir 1khz entre pic y pic
« en: 12 de Diciembre de 2009, 16:04:22 »
Estoy trabajando con el Pwm y haciendo algunos arreglos quiero mandar una señal de 1 y 2 khz, a otro pic con la cual solo al detectar 1khz prende el led y al detectar 2 khz se apaga, estoy usando un 16f88 con Oscilador interno Para Ambos casos.

Mi pregunta es como configurar el esclavo para que al detectar esto haga lo que quiero.

El codigo de 1 khz Segun yo es el Sig.

Código: C
  1. #INCLUDE <16F88.h>
  2. #use delay(clock=8000000)
  3. #fuses NOWDT
  4. #fuses NOMCLR,INTRC_IO
  5. #use standard_io(B)
  6.  
  7. #int_TIMER0
  8. void TIMER0_isr(void) {
  9.    output_toggle(PIN_B0);
  10.    set_timer0 (0x1B);  }               //Se recarga el timer0
  11.  
  12. void main() {
  13.   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);   //Configuración timer0
  14.  
  15.   set_timer0 (0x1B);                    //Carga del timer0
  16.   enable_interrupts(INT_TIMER0);       //Habilita interrupción timer0
  17.   enable_interrupts(global);           //Habilita interrupción general
  18.  
  19.   while (1);         //bucle infinito
  20. }

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Enviar y Recibir 1khz entre pic y pic
« Respuesta #1 en: 12 de Diciembre de 2009, 22:12:29 »
Puedes usar el timer0 en modo contador, y contar cantidad de pulsos durante un determinado tiempo, por ejemplo 100ms. A partir de esa cuenta determinar si es 1k o 2k  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Enviar y Recibir 1khz entre pic y pic
« Respuesta #2 en: 13 de Diciembre de 2009, 00:53:17 »
Y si deseas más velocidad en la comunicación introduce esa frecuencia de 1 o 2 khz en una entrada con interrupción y en cada interrupción lees un timer y lo vuelves a cero.
El timer configurado para contar con Fosc interna por ejemplo...
Con el pic con Fosc interna en 1Mhz si cuentas hasta 1000 "aproximadamente" es 1khz , si cuentas hasta 2000 "aproximadamente" es 2khz de modo que lo que cuentas es casi la frecuencia en hertz de la señal recibida...
     

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Enviar y Recibir 1khz entre pic y pic
« Respuesta #3 en: 15 de Diciembre de 2009, 02:36:28 »
Podrian darme un ejemplo de como hacer el conteo para detectar si es 1 o 2 khz y tengo otro problemita no puedo emitir las diferentes frecuencias con el Pic con un if hay otra forma???

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Enviar y Recibir 1khz entre pic y pic
« Respuesta #4 en: 15 de Diciembre de 2009, 10:11:41 »
Así se podría contar pulsos:

Código: C
  1. /*
  2. setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
  3.  setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
  4. */
  5. int16 Cal_Pulsos(void){
  6. int16 a;
  7.    
  8.    Overflow=0;          // Para determinar cantidad de pulsos en el rango de tiempo definido.-
  9.    Time=0;              // Bandera que indica que ya ha pasado los 100ms
  10.    clear_interrupt(INT_TIMER0);
  11.    clear_interrupt(INT_TIMER1);
  12.    set_timer0(0);                    
  13.    set_timer1(3036);                   // Para interrupción cada 100ms para 20MHz.-
  14.    enable_interrupts(INT_TIMER0);
  15.    enable_interrupts(INT_TIMER1);
  16.    while(Time==0){}                // Esperamos durante 100ms
  17.    a=((int16)Overflow*256+Medida); // Calculo cantidad de pulsos.-
  18.    return(a);
  19. }

Código: C
  1. /*************  Interrupciones  ****************/
  2. #int_TIMER1
  3. void  TIMER1_isr(void)
  4. {
  5.       Medida=get_timer0();
  6.       disable_interrupts(INT_TIMER1);
  7.       disable_interrupts(INT_TIMER0);
  8.       Time=1;
  9. }
  10.  
  11. #int_TIMER0
  12. void  TIMER0_isr(void)
  13. {
  14.    Overflow++;
  15. }
« Última modificación: 15 de Diciembre de 2009, 10:14:25 por Suky »
No contesto mensajes privados, las consultas en el foro