TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: johenrod en 03 de Febrero de 2021, 13:34:33

Título: Problema para usar "Máster Clear" como entrada positiva
Publicado por: johenrod en 03 de Febrero de 2021, 13:34:33
Cordial saludo, requiero ayuda con lo siguiente..
Estoy realizando un control con pic"12f1822" el caso es que necesito utilizar el master clear como entrada positiva digital, cuando lo coloco directamente a 5 voltios me trabaja bien pero como necesito manejarlo con 12 voltios le coloco un divisor de tensión 5.6k a tierra y 10k a los 12 voltios (4.3 voltios appx.) antes no tuve este problema en otros pic, pero en este no funciona.
Si lo hago con otro pin trabaja correctamente pero, no quiero quedarme con la duda por que en master clear no funciona.
Lo estoy haciendo en ccs, dejo el código y la imagen, de antemano gracias.

Código: C
  1. #include <12F1822.h>
  2.  
  3. //#device ADC=16
  4.  
  5. #FUSES NOWDT                    //No Watch Dog Timer
  6. #FUSES NOMCLR
  7. #FUSES PROTECT                  //Code protected from reads
  8. //#FUSES CPD                      //Data EEPROM Code Protected
  9. #FUSES NOBROWNOUT               //No brownout reset
  10. //#FUSES WRT                      //Program Memory Write Protected
  11. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  12.  
  13. #use delay(internal=4000000)
  14. #use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A2,bits=8,stream=PORT1,ERRORS)
  15.  
  16. //#USE STANDARD_io (A)
  17. #BYTE portA= 0x0C
  18.  #USE FAST_IO (A)      // Optimizamos E/S del PORTB ( muy importante para ahorrar memoria )
  19.    
  20. //#ORG 0x0A, 0X7FF {}
  21.  
  22. #DEFINE  ACC PORTA,3// POSITIVO
  23. #DEFINE  PUERTA PORTA,4// NEGATIVO
  24.  
  25.  
  26. UNSIGNED INT32 CONTADOR=0;
  27. INT CONTADOR2=0;
  28.  
  29. CHAR numero;
  30.  
  31. #int_timer0
  32.  
  33. void timer0()
  34. {
  35. CONTADOR++;
  36.  
  37. //IF (CONTADOR==7200000)
  38. IF (CONTADOR==10000)
  39.  
  40. {
  41. output_LOW(pin_A1);
  42. CONTADOR=0;
  43.  //printf("TEMPORIZANDO\n\r");
  44. DISABLE_INTERRUPTS(INT_TIMER0);
  45. CONTADOR2=0;
  46. }
  47. /* IF ((!BIT_TEST(PUERTA))&(BIT_TEST(ACC)))
  48.  {
  49.  DISABLE_INTERRUPTS(INT_TIMER0);
  50. CONTADOR=0;
  51.  break;
  52.  
  53.  }*/
  54.  
  55.  //printf("TEMPORIZANDO\n\r");
  56. //printf("%d\n",CONTADOR2);
  57.  SET_TIMER0(140);
  58. }
  59.  
  60.  
  61.  
  62.  
  63. void main ()
  64. {
  65.  set_tris_A(0b111100);  // todos salidas
  66.  output_A(0x00);       // 0000 0000 limpio puerto
  67. setup_timer_0(RTCC_INTERNAL| RTCC_DIV_4);
  68. set_timer0(140);
  69. ENABLE_INTERRUPTS(INT_TIMER0);
  70. ENABLE_INTERRUPTS(GLOBAL);
  71. output_HIGH(pin_A5);
  72.  
  73. WHILE (TRUE)
  74. {
  75. IF ((!BIT_TEST(PUERTA))&(BIT_TEST(ACC))) // Puerta abierta(neg) y ACCesorios en on (pos)
  76. {
  77. DISABLE_INTERRUPTS(INT_TIMER0);
  78. CONTADOR=0;
  79. output_HIGH(pin_A1);
  80. CONTADOR2=1;
  81. }
  82.  
  83. IF ((BIT_TEST(PUERTA))&(BIT_TEST(ACC)))
  84. {
  85. DISABLE_INTERRUPTS(INT_TIMER0);
  86. CONTADOR=0;
  87. output_HIGH(pin_A1);
  88. CONTADOR2=1;
  89. }
  90.  
  91. IF ((BIT_TEST(PUERTA))&(!BIT_TEST(ACC)))
  92. {
  93.  
  94. IF (CONTADOR2==1)
  95. {
  96. ENABLE_INTERRUPTS(INT_TIMER0);
  97. //CONTADOR=0;
  98. //output_LOW(pin_A5);
  99. }
  100. }
  101.  
  102. IF ((!BIT_TEST(PUERTA))&(!BIT_TEST(ACC)))
  103. {
  104. DISABLE_INTERRUPTS(INT_TIMER0);
  105. CONTADOR=0;
  106. output_HIGH(pin_A1);
  107. CONTADOR2=1;
  108. }
  109.  
  110.  
  111. //printf("%d\n",CONTADOR2);

Título: Re:Problema para usar "Máster Clear" como entrada positiva
Publicado por: KILLERJC en 03 de Febrero de 2021, 14:02:56
Ese pin tiene otros voltajes "limite" para determinar si esta en alto o en bajo.

Lo podes ver en la pagina 333 del datasheet:

http://ww1.microchip.com/downloads/en/devicedoc/40001413e.pdf

Supuestamente es 0.8Vdd, si tenes 5V de VDD tenes 4V como minimo. Si estas por encima, pero tal ves no sea justo justo 4.3V.

Sino reemplaza la resistencia de 5.6 por una de 6.8K y tenes 4.8V
Sino reemplaza esa resistencia por un zener de 5,1V y fijate si es necesario cambiar la resistencia de 12V.
Título: Re:Problema para usar "Máster Clear" como entrada positiva
Publicado por: johenrod en 03 de Febrero de 2021, 14:41:14
Ese pin tiene otros voltajes "limite" para determinar si esta en alto o en bajo.

Lo podes ver en la pagina 333 del datasheet:

http://ww1.microchip.com/downloads/en/devicedoc/40001413e.pdf

Supuestamente es 0.8Vdd, si tenes 5V de VDD tenes 4V como minimo. Si estas por encima, pero tal ves no sea justo justo 4.3V.

Sino reemplaza la resistencia de 5.6 por una de 6.8K y tenes 4.8V
Sino reemplaza esa resistencia por un zener de 5,1V y fijate si es necesario cambiar la resistencia de 12V.
KILLERJC.. excelente
Le coloque un zener 5.1V tal cual tu consejo, y con un potenciometro fije el umbral mínimo (en este caso 3.3k) finalmente la deje con 2.7k y el consumo fue de 3 mili-Amperios.
(cuando utilizo el master-clear con entrada negativa no hay problemas) pero con positiva me sirvió de pelos.
Decidí hacerlo mejor con el zener por que pienso que protege el pin ya que con resistencias seria mas incierto.
un abrazo,, gracias.
Asi.. quedo.
Título: Re:Problema para usar "Máster Clear" como entrada positiva
Publicado por: Robert76 en 03 de Febrero de 2021, 22:32:49
Hola, yo utilizaría más bien un transistor en la entrada de ese pin, es decir colector a la entrada del pin con una resistencia a pull-up, emisor a GND, y la base a la entrada de 12v, mediante un divisor resistivo.
Cabe aclarar que ahora la entrada estará invertida para considerarlo en el código.
Título: Re:Problema para usar "Máster Clear" como entrada positiva
Publicado por: johenrod en 08 de Febrero de 2021, 12:34:48
Hola, yo utilizaría más bien un transistor en la entrada de ese pin, es decir colector a la entrada del pin con una resistencia a pull-up, emisor a GND, y la base a la entrada de 12v, mediante un divisor resistivo.
Cabe aclarar que ahora la entrada estará invertida para considerarlo en el código.
si, otra excelente opción, por el momento me trabajo bien con el  zener en el circuito que tenia pues ya tenia la tarjeta hecha.
lo tendré en cuenta en próximos diseños.
gracias a todos. :-)