Autor Tema: Activar pullups en PIC 10F20X  (Leído 3257 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Activar pullups en PIC 10F20X
« en: 23 de Mayo de 2009, 00:55:20 »
Hola! alguien sabe como activar los pullups en alguno de los pics de la familia 10F?
Estoy usando CCS, la version 3 punto algo... y el PIC 10F202
Mirando el archivo de cabecera de dicho pic dice que se activan con PORT_B_PULLUPS(TRUE); pero poniendo esto, el compilador da error y dice que no es un identificador valido  :(
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Activar pullups en PIC 10F20X
« Respuesta #1 en: 23 de Mayo de 2009, 03:04:48 »
Parece que los de CCS incluyeron a los 10F sin ganas y en el último momento, porque dan un montón de problemas. La única manera de configurar el registro OPTION que yo encontré fue con ASM.
En tu caso:

// Hay que activar el bit nº 6
   #asm
      movlw 64
      option
   #endasm

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Activar pullups en PIC 10F20X
« Respuesta #2 en: 23 de Mayo de 2009, 12:24:10 »
Gracias Noc, probare con ASM entonces....
Sabes si con versiones mas recientes del compilador sigue pasando lo mismo?
Quiero emprender unos proyectos con estos pequeñines y tal vez sea momento de actualizarme  :mrgreen:

PS: lo de los problemas con 10F es cierto 100%... Intentando programarlos con ICD2 me tira error... tuve que desempolvar mi viejo programador LPT, porque el ICD2 no estaba suministrando Vpp suficiente para programar... Todos los demas pics me los programa sin problemas... pero los 10F no hay manera  :(
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Activar pullups en PIC 10F20X
« Respuesta #3 en: 23 de Mayo de 2009, 15:59:29 »
Mirando por el foro de CCS veo que no somos los unicos que nos topamos con estos problemas...
Por lo visto se puede activar o desactivar los pullups con el identificador de setup_counters, setup_wdt, setup_timer_0....
Esto es porque OPTION en este pic tiene los bits de configuracion del timer, pero tambien los 2 ultimos bits son de weak pullpus y de wake on change. Por lo que si queremos configurar alguno de estos dos, tendremos que hacerlo desde el setup_counter...
Yo me decantare por ASM como me dices tu. Porque de la otra manera no es nada legible  :?
Por esto mismo es que el PIN B2 del pic normalmente no se podra configurar como I/O, ya que por defecto el OPTION lo tiene confugurado como T0CS y no hace caso del TRIS.
Ya sabes, cualquier problema que surja con este PIC visita estos enlaces que tienen los errores y problemas mas comunes relacionado con esto

http://www.ccsinfo.com/forum/viewtopic.php?t=27208
http://www.ccsinfo.com/forum/viewtopic.php?t=24624
http://www.ccsinfo.com/forum/viewtopic.php?t=23899
http://www.ccsinfo.com/forum/viewtopic.php?t=21233
http://www.ccsinfo.com/forum/viewtopic.php?t=36175
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Activar pullups en PIC 10F20X
« Respuesta #4 en: 27 de Mayo de 2009, 16:20:19 »
Tanto lio por los pullups, para que luego no funcionen...
La simulacion fue bien, luego hice unas pruebas con un 10F200 en PDIP y todo bien. Hice 50 placas del circuito... y ahora el pic en SOT-6 no funciona...Todo a la basura!  :5]
Que injusticia, que microchip ofrezca micros con pull ups internos, y luego haya que rediseñar todo y recurrir a pullups externos...

Por cierto:

// Hay que activar el bit nº 6
   #asm
      movlw 64
      option
   #endasm

El bit 6 de option es negado, por lo que con 64 lo estamos desactivando en realidad.
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Activar pullups en PIC 10F20X
« Respuesta #5 en: 27 de Mayo de 2009, 18:02:28 »
¿Que no te funcionan?, qué raro, no?


Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Activar pullups en PIC 10F20X
« Respuesta #6 en: 27 de Mayo de 2009, 19:17:48 »
El programa es tan simple como un bucle con 2 delays que generan el PWM de un servo.

Código: C
  1. #include <10F200.h>
  2.  
  3. #FUSES NOWDT,NOMCLR,PROTECT
  4.  
  5. #use delay(clock=4000000)
  6. #use fast_io(b)
  7.  
  8. //GPIO
  9. #byte GP    =  0x06
  10.  
  11. //#bit X        = GP.0
  12. #bit BTN        = GP.1
  13. #bit SERVO      = GP.2
  14. //#bit X        = GP.3
  15.  
  16. //Constantes
  17.  
  18. #define Pos1_High       800
  19. #define Pos1_Low        19200
  20.  
  21. #define Pos2_High       2200
  22. #define Pos2_Low        17800
  23.  
  24. //Variables
  25. short flagPresionado = FALSE;   //flag indica si el boton esta presionado
  26. short Posicion = 0;                     //si esta en posicion 1 o 2
  27.  
  28. //Funciones
  29. void set_options(void){
  30. //Bit   Funcion         Descripcion
  31. // 7    !GPWU           Wake-up on pin change (Enable = 0, Disable = 1))
  32. // 6    !GPPU                   Weak pull ups (Enable = 0, Disable = 1))
  33. // 5    T0CS                    Timer0 Clock source (T0CKl pin = 1, Interno = 0)
  34. // 4    T0SE                    Timer0 Source Edge (L_to_H = 0, H_to_L = 1)
  35. // 3    PSA                     Prescaler assignment (WDT = 1, Timer0 = 0)
  36. //2-0   PS                      Prescaler rate (mirar datasheet)                        
  37.  
  38. #asm
  39.         movlw 0b10000000
  40.         option
  41. #endasm
  42. }
  43.  
  44. void main(){
  45. set_options();          //configura pullups, wake on change y timer
  46. set_tris_b(0b00000010);
  47.            
  48.         do{
  49.                 if(BTN == 0){
  50.                         if(flagPresionado == FALSE){
  51.                                 ++Posicion;
  52.                                 flagPresionado = TRUE;
  53.                         }      
  54.                 }
  55.                 else
  56.                         flagPresionado = FALSE;  
  57.                
  58.                 if(Posicion == 0){              //mueve servo a posicion 1
  59.                         Servo = 1;
  60.                         delay_us(Pos1_High);
  61.                         Servo = 0;
  62.                         delay_us(Pos1_Low);
  63.                 }
  64.                 else{           //mueve servo a posicion 2
  65.                         Servo = 1;
  66.                         delay_us(Pos2_High);
  67.                         Servo = 0;
  68.                         delay_us(Pos2_Low);
  69.                 }
  70.         }while(true);
  71. }

La simulacion funciona correctamente, y probado en protoboard con un PDIP tambien iba bien.
Pero probe 3 en SOT-6 y no me fueron... De hecho el pin BTN que deberia tener el pullup activado mido 0v con el polimetro. Con lo cual seguro que el pullup no esta activo.

Por casualidad el fast_io no podra estar desconfigurando algo cuando cambio el estado del pin?
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.