Autor Tema: Por que el puerto de comunicaciones solo se cuelga durante el dia??  (Leído 1934 veces)

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

Desconectado rroque

  • PIC12
  • **
  • Mensajes: 68
Ahora si no entiendo que pasa sigo con el problema anterior de que el puerto de comunicaciones se cuelga pero el microcontrolador no, esto solo sucede en las mañanas cuando vuelvo a activar un contador un rato esta bien y despues el puerto muerto.............. alguien sabe el porque????

Saludos

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Por que el puerto de comunicaciones solo se cuelga durante el dia??
« Respuesta #1 en: 13 de Mayo de 2010, 18:14:28 »
Hola, no repitas posts, postea el codigo y le echaremos un vistazo haber si es algun bug escondido en la codificacion.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado rroque

  • PIC12
  • **
  • Mensajes: 68
Re: Por que el puerto de comunicaciones solo se cuelga durante el dia??
« Respuesta #2 en: 14 de Mayo de 2010, 11:52:12 »
Lo lamento pero ya estoy desesperado .....................

Gracias

Código: C++
  1. //******************************************************************************
  2. #include <16F877A.h>
  3. #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT,NOCPD,NOWRT, NODEBUG
  4. #use delay(clock=4000000)
  5. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, bits=8)
  6. #use standard_io(a)
  7. #use standard_io(b)
  8. #use standard_io(d)
  9. #byte port_a = 0x05
  10. #byte port_b = 0x06
  11. #byte port_d = 0x08
  12. //******************************************************************************
  13. //Variables
  14. //******************************************************************************
  15. char codigo;
  16. //char counterA = 0;
  17. //char counterD = 0;
  18. //char counterS = 0;
  19. //char counterB = 0;
  20. int sample = 0;
  21. int1 flagB0 = 0;
  22. int1 flagB1 = 0;
  23. int1 flagB2 = 0;
  24. int1 flagB3 = 0;
  25. int1 flagB4 = 0;
  26. int1 flagB5 = 0;
  27. int1 flagB6 = 0;
  28. int1 flagB7 = 0;
  29. int1 flagA0 = 0;
  30. int1 flagA1 = 0;
  31. int1 flagA2= 0;
  32. int1 flagA3= 0;
  33. int1 flagD0= 0;
  34. int1 flagD1= 0;
  35. int1 flagD2= 0;
  36. int1 flagD3= 0;
  37.  
  38. void int2bcd(int valor);
  39.  
  40. //******************************************************************************
  41. //INTERRUPCIONES
  42. //******************************************************************************
  43. #INT_RDA                         //Dato serie recibido
  44.  
  45. void serie(void)
  46. {
  47.    codigo = getc () ;            //obtener el valor de codigo
  48.    switch (codigo)
  49.    {
  50. //Control de la Bomba 1:
  51. /*      case '0':
  52.           output_bit(PIN_B0,1);
  53.       delay_ms(1000);
  54.       output_bit(PIN_B0,0);
  55.           break;
  56. */
  57.       case '0' :
  58.       output_bit (PIN_B0, 1);
  59.       flagB0 = 1;
  60.           break;
  61.  
  62.       case '1' :
  63.       output_bit (PIN_B0, 0);
  64.       flagB0 = 0;
  65.           break;
  66.  
  67.       case '2':
  68.       output_bit(PIN_B1, 1);
  69.       flagB1 = 1;
  70.       break;
  71.  
  72.       case '3' :
  73.       output_bit (PIN_B1, 0);
  74.       flagB1 = 0 ;
  75.           break;
  76.  
  77. //Control de la Bomba 2:
  78.       case '4':
  79.       output_bit(PIN_B2, 1);
  80.           flagB2 = 1;
  81.       break;
  82.  
  83.       case '5' :
  84.       output_bit (PIN_B2, 0);
  85.           flagB2 = 0;    
  86.       break;
  87.  
  88.       case '6':
  89.       output_bit(PIN_B3, 1);
  90.       flagB3 = 1;
  91.       break;
  92.  
  93.       case '7' :
  94.       output_bit (PIN_B3, 0);
  95.       flagB3 = 0;
  96.           break;
  97.  
  98. //Control de la Bomba 3:
  99.       case '8':
  100.       output_bit(PIN_B4, 1);
  101.       flagB4 = 1;
  102.       break;
  103.  
  104.       case '9' :
  105.       output_bit (PIN_B4, 0);
  106.       flagB4 = 0;
  107.           break;
  108.  
  109.       case 'a':
  110.       output_bit(PIN_B5, 1);
  111.       flagB5 = 1;
  112.       break;
  113.  
  114.       case 'b' :
  115.       output_bit (PIN_B5, 0);
  116.       flagB5 = 0;
  117.           break;
  118.  
  119. //Control de la Bomba 4:
  120.       case 'c':
  121.       output_bit(PIN_B6, 1);
  122.       flagB6 = 1;
  123.       break;
  124.  
  125.       case 'd' :
  126.       output_bit (PIN_B6, 0);
  127.       flagB6 = 0;
  128.           break;
  129.  
  130.       case 'e':
  131.       output_bit(PIN_B7, 1);
  132.       flagB7 = 1;
  133.       break;
  134.  
  135.       case 'f' :
  136.       output_bit (PIN_B7, 0);
  137.       flagB7 = 0;
  138.           break;
  139.    }
  140.  }
  141. //******************************************************************************
  142. //FUNCIONES
  143. //******************************************************************************
  144. void confi(void);
  145. //******************************************************************************
  146. //PROGRAMA
  147. //******************************************************************************
  148. void main(void)
  149. {
  150.         {
  151. /*      while (1)
  152.         {
  153.                 char A,B,C;
  154.                 A = getc ();
  155.                 B = getc ();
  156.                 C = getc ();
  157.                 if ( A=='o' && B=='-' && C=='o')
  158.                 break;
  159. */      }
  160.    setup_adc_ports(NO_ANALOGS);
  161.    setup_adc(ADC_OFF);
  162.    enable_interrupts (INT_RDA) ;
  163.    enable_interrupts (GLOBAL); //activadas interrupciones
  164.    set_tris_b (0xFF);
  165. //*********************************************************************************
  166. //Definir estado de las entraras de los sensores a la bomba
  167. //*********************************************************************************
  168. //Puerto A:
  169.    input_state(PIN_A0);
  170.    input_state(PIN_A1);
  171.    input_state(PIN_A2);
  172.    input_state(PIN_A3);
  173. //Puerto D:
  174.    input_state(PIN_D0);
  175.    input_state(PIN_D1);
  176.    input_state(PIN_D2);
  177.    input_state(PIN_D3);
  178. //*********************************************************************************
  179. //Definir estado de inicio de las bombas
  180. //*********************************************************************************
  181.    output_bit (PIN_B0, 0) ;  
  182.    output_bit (PIN_B1, 0) ;  
  183.    output_bit (PIN_B2, 0) ;  
  184.    output_bit (PIN_B3, 0) ;
  185.    output_bit (PIN_B4, 0) ;
  186.    output_bit (PIN_B5, 0) ;
  187.    output_bit (PIN_B6, 0) ;
  188.    output_bit (PIN_B7, 0) ;
  189. //********************************************************************************
  190. //Programa para detectar el estado de las bombas
  191. //********************************************************************************
  192.  
  193.   printf("Reiniciar:\n\r");
  194.  while (1)
  195.    {
  196.         flagA0 = input(PIN_A0);
  197.         flagA1 = input(PIN_A1);
  198.         flagA2 = input(PIN_A2);
  199.         flagA3 = input(PIN_A3);
  200.         flagD0 = input(PIN_D0);
  201.         flagD1 = input(PIN_D1);
  202.         flagD2 = input(PIN_D2);
  203.         flagD3 = input(PIN_D3);
  204.  
  205.     flagA0 = !flagA0;
  206.     flagA1 = !flagA1;
  207.     flagA2 = !flagA2;
  208.     flagA3 = !flagA3;
  209.     flagD0 = !flagD0;
  210.     flagD1 = !flagD1;
  211.     flagD2 = !flagD2;
  212.     flagD3 = !flagD3;
  213.  
  214.  
  215.     printf("<%u%u%u%u%u%u%u%u|%u%u%u%u%u%u%u%u>\n\r",flagA0,flagA1,flagA2,flagA3,flagD0,flagD1,flagD2,flagD3,flagB0,flagB1,flagB2,flagB3,flagB4,flagB5,flagB6,flagB7);// u -- d
  216.         delay_ms(250);
  217.    }
  218. }