desktop

[Tutorial] y manejo de Proton IDE

Hola Sydjoe,

A ver, yo probé el código y le agregué algunas modificaciones pequeñas, puse un led para indicar que finaliza un primer conteo de 0-9 y sigue otro de 0-3, me parece que puede servirte, haz los cambios que necesites y comenta. Suerte.
 

Adjuntos

  • contador de 0-9 en 7 segmentos.rar
    48.1 KB · Visitas: 88
Hola Sydjoe,

A ver, yo probé el código y le agregué algunas modificaciones pequeñas, puse un led para indicar que finaliza un primer conteo de 0-9 y sigue otro de 0-3, me parece que puede servirte, haz los cambios que necesites y comenta. Suerte.

buenos dias muchas gracias, estuve leyendo por alli y encontre esta tabla de valores " TABALA.JPG" y asi si me funciono agregandole los cambios tambien. (y) besos. :)
 

Adjuntos

  • display 7.rar
    33.4 KB · Visitas: 76
Que tal, busque sobre el comando cls, pero no me quedo muy claro, lo que quiero hacer es que cuando una cantidad varíe (en una LCD) por ejemplo:
imprimo en la LCD 65283
y si ésta baja a 245 (si no borro totalmente la pantalla)
me queda 24583
El punto es, que quiero saber como refrescar esa posición donde está varando dicho número sin necesidad de borrar toda la pantalla, para que no se vea el parpadeo con cada pasada del cls. Espero que me entiendan :LOL: desde ya muchas gracias :D
 
Tan solo cuenta los caracteres que sobran, en tu caso 2 (83) y rellena ese sobrante con espacios.
Por ejemplo:
Print At 1,1,Dec3 Result," " ; <-- Dos espacios para borrar los sobrantes.

Suerte.
 
BUENOS DIAS COMUNIDAD, los felicito por saber tanto de proton ide y todo lo que involucra, pero yo por otra parte no tengo la misma suerte,:cry:, desde hace tiempo estoy (tratando) haciendo un semaforo con algunas cualidades, pero me a costado un monton...., pero gracias a ustedes ya he hecho bastante, gracias. La pregunta que tengo para hoy en mi caso es que ¿como hago para introducir el for de conteo de un display 7 segmentos sin que se coloque lento el programa por el on_interrupt?, lo e intentado hacer asi: coloco dos pic, uno para el contador y el otro para el semaforo, pero no hay sincronizacion, y cuando coloco el contador dentro de la misma parte del semaforo es decir la secuencia for, cuenta una sola secuencia y no me lee las otras secuencias de conteo, y si mientras hace el primer conteo hago la interrupcion se pone lento. aqui les dejo la simulacion y los programas. Espero me haya sabido explicar. de ante mano gracias :)
 

Adjuntos

  • semaforo simulacion.rar
    21.9 KB · Visitas: 64
Mira si tras corregir algunos detalles tanto en la simulación como en los programas, ya te funciona.
No sé bien como funcione tu proyecto, así que solamente tú podrás determinarlo.

Los detalles fueron:
La velocidad del PIC Contador estaba en 1MHz en la simulación.
Reduje la cantidad de variables para ahorrar memoria.
Modifique el uso de LookUpL, ya que en mi versión generaba error por ser obsoleta la sintaxis.
Corregí los For de 0 a 2 y de 0 a 5 para el uso de LookUpL ( llegar a 3 y a 6 queda fuera de la tabla)
No es muy importante el excedente de un número, pero puede causar confusiones.
En el diseño utilizaste dos PIC16F877, pero en los programas usaste PIC16F877A.
Y eso genera errores de compatibilidad por locaciones de memoria.
Reduje la velocidad a 4MHz, ya que de esa forma es mas estable la simulación.
Ya cuando montes el circuito físicamente, la podrás cambiar a 20MHz.

Suerte.
 

Adjuntos

  • semaforo simulacion II.rar
    78.5 KB · Visitas: 68
Para saber como se cambia de estado un pin, deberías leer el tema desde el principio "Ahí está explicado"
Normas del Foro 16) Antes de preguntar algo en un post. ¡ Lee (Y mira) todo el contenido !

En cuanto a qué con encender un LED ya quiera significar que el LM35 esté funcionando, Nop.
Quizás eso te sirva para indicar que estás encendiendo el termómetro, más no que funcione.
Eso necesita cierta rutina. Podrías hasta incluir comparaciones de temperatura, etc.

Adjunto un sencillo ejemplo con el LM35 a 10 Bits y un LCD 16x2

Lo que le quieras agregar ya corre por tu cuenta.

Suerte.

Que tal, en la materia de instrumentación, estamos haciendo censado de temperatura, pero ahora medimos temperatura por de bajo de los 0 °C, y no pudimos, así que el profesor nos dejo investigar como hacer para medir estas temperaturas , y lo que he encontrado es con amplificadores operacionales, pero nada directo del LM35 al PIC, es posible esto(directo)?
 
Hola Mendek,

En el foro de pic basic pro hay un ejemplo que utiliza el sensor DS1624 que mide temperaturas positivas y negativas entre -55°C to +125°C, no sé si ese rango podría servirte pero de cualquier forma quería hacertelo saber.

Suerte en tu investigación.
 
Que tal, en la materia de instrumentación, estamos haciendo censado de temperatura, pero ahora medimos temperatura por de bajo de los 0 °C, y no pudimos, así que el profesor nos dejo investigar como hacer para medir estas temperaturas , y lo que he encontrado es con amplificadores operacionales, pero nada directo del LM35 al PIC, es posible esto(directo)?
Mira el ejemplo que adjunto, utiliza dos amplificadores operacionales para conseguir lecturas negativas.
Mide desde -55 °C hasta los 150 °C del LM35.
Personalmente no lo he probado así, solamente con conexión directa al PIC (0 °C hasta 150 °C)
Espero les sirva, y si lo llegan a armar, nos comentan los resultados.

Suerte.
 

Adjuntos

  • 16F88 LM35 Temp Neg.rar
    19.6 KB · Visitas: 118
hola amigos quisiera de su gran ayuda en el siguiente: que es un reloj con salida para una matriz de leds ,como puedo configurar en las interrupciones de manera que no habilite los pull ups de portB ya que estoy utilizando para las filas de la matriz
Código:
 Symbol FILA = PORTB
 Symbol Dato = PORTA.0
 Symbol Shift = PORTA.1
 Symbol Load = PORTA.2
 hour = 12        				 
 minute = 54
 second = 0
  All_Digital = True
  Low FILA 
-->  OPTION_REG = %01010110      ' Set TMR0 configuration and enable PORTB pullups
--> INTCON = $A0        		' Enable TMR0 interrupts
  On Interrupt GoTo Tickint		' Create a SOFTWARE INTERRUPT
 
 Inicio:
 

Adjuntos

  • MATRIX.jpg
    MATRIX.jpg
    211.3 KB · Visitas: 43
hola amigos quisiera de su gran ayuda en el siguiente: que es un reloj con salida para una matriz de leds ,como puedo configurar en las interrupciones de manera que no habilite los pull ups de portB ya que estoy utilizando para las filas de la matriz
El bit que habilita o deshabilita las resistencias pull-up del puerto B es el bit 7 (RBPU) del registro OPTION_REG
Cuando está en 1 (Por default) se encuentran deshabilitadas, y en 0 se habilitan.
Por lo tanto solo cambia la configuración que tienes por ésta otra...

OPTION_REG = %11010110 ' Set TMR0 configuration and disable PORTB pullups

Saludos.
 
Hola muchachos, que buen tema.
miren la hora que me dio aqui en colombia, y teniendo que madrugar a trabajar..jejje
Me podrian dar una idea de como usar el TMR1 como cntador de pulsos externos en Proton.
Gracias y felicidades.
 
Pues ahí va este ejemplo que está en basic pro y los cambios son mínimos:
Código:
'PICBASIC PRO program to demonstrate using Timer1 gate in single-pulse mode to capture single pulse event times.
' Description : PICBASIC PRO program to demonstrate using Timer1 gate
' in single-pulse mode to capture single pulse event times.

Device = 16F877A
Xtal = 20

All_Digital true
'Declaration for LCD 
       Declare LCD_Type = 0         ;LCD is Alpha
       Declare LCD_DTPin = PORTD.4  ;LCD data line starting port.pin
       Declare LCD_ENPin = PORTD.1  ;LCD EN line
       Declare LCD_RSPin = PORTD.0  ;LCD RS line
       Declare LCD_Interface = 4    ;LCD 4 line interface
       Declare LCD_Lines = 2
	 
  Dim	Pval As Word    ' Holds pulse time from Timer1
  
  GoSub Init    ' Hardware initialization routine  
	    
'Clear
   
	mainloop:
	   PORTB.4 = 1   ' Toggle RB4 on Timer1 gate pin high
       PORTB.4 = 0   ' Toggle Timer1 gate pin low to stop Timer1	    
	   Pval.LowByte = TMR1L  ' Read Timer1 value
	   Pval.HighByte = TMR1H	    
	   Print At 2,1, "pulsos",Dec Pval	    
	  ' GoSub Reset1   ' Clear Timer1 count & reset T1 gate
	   DelayMS 500   
	   GoTo mainloop ' Do it forever
	    
	Reset1:
	   TMR1H = 0    
	   TMR1L = 0
	   Return
	    
	Init:
       TRISC.0=1	    
	   TRISB = %00100000  ' RB5 = input for T1 gate, RB4 = output to gate
	   PORTB = 0          ' Hold T1 gate low at start	    
	   T1CON = %00000011  ' Timer1 on, incremento por tocki   
       Return
	   End
 
Última edición:
Que tal compañeros, bueno pues ya he encontrado info. acerca del protocolo de comunicación SPI para la aplicación de los módulos NRF24L01 y encontré ésta imagen:
18f4550.jpg

pero tengo el problema que ahora no cuento con posibilidades de comprar este PIC, pero tengo el PIC16F887 y según yo la forma de conectarlo es la siguiente:
Sin título.png
Pero bueno, lo mero mero, es que no encuentro ejemplos de éste protocolo para Proton IDE, tengo entendido que necesito algunas librerías para hecharlo a andar, espero alguien me pueda orientar desde ya gracias
 
como puede leer el ancho de un pulso que entra al pic, basicamente la señal del encoder de un motor controlado por pwm. Hechado una ojeada alas paginas anteriores que usan el comando pulsin o el timer1 alguien me podria brindar un ejemplo en esto ? gracias de antemano. Existe algun conflicto al usar el hpwm y el pulsin ?

el valor que me arroja el pulsin no concuerda con el del osciloscopio en la simulacion
 

Adjuntos

  • PRUEBA3.rar
    35.5 KB · Visitas: 68
Última edición:
¿Cuando te refieres a usar oscilador externo, a que tipo te refieres?
Hay externo con cristal XT, HS (High Speed), con resonador, R/C y fuente de reloj externa.

Los tipos de palabra de configuración desde el 16F882 hasta el 16F887 son los mismos.
Esta es una configuración clásica con cristal.
Código:
Config1 XT_OSC,LVP_OFF,FCMEN_ON,IESO_OFF,BOR_OFF,CPD_OFF,CP_OFF,MCLRE_ON,PWRTE_ON,WDT_OFF
Config2 WRT_OFF,BOR21V
Para otras configuraciones, estas son las disponibles.
Config1 LP_OSC, Etc,Etc. (Oscilador con resonador de baja frecuencia. Hasta 200KHz.)
Config1 XT_OSC, Etc,Etc. (Oscilador a Xtal. Hasta 4MHz.)
Config1 HS_OSC, Etc,Etc. (Oscilador a Xtal. Hasta 20MHz.)
Config1 EXTCLK_OSC, Etc,Etc. (Oscilador Digital Externo)
Config1 INTRC_OSC_NOCLKOUT,Etc,Etc. (Oscilador R/C Interno. Sin salida de reloj)
Config1 INTRC_OSC_CLKOUT,Etc,Etc. (Oscilador R/C Interno. Con salida de reloj)
Config1 RC_OSC_NOCLKOUT,Etc,Etc. (Oscilador R/C Externo. Sin salida de reloj)
Config1 RC_OSC_CLKOUT,Etc,Etc. (Oscilador R/C Externo. Con salida de reloj)

Como puedes ver, son 8 tipos diferentes para la selección del oscilador.
El uso del registro OSCCON es sobre todo para cuando se usa el oscilador interno del PIC.
Un ejemplo de configuración para 8MHz estable, sería de esta manera...
OSCCON = %01110101
La información de configuración del registro OSCCON y más información esta en la hoja de datos.

Si deseas utilizar los puertos A y B como digitales, debes establecer los registros ANSEL y ANSELH en 0
ANSEL = 0 ; Puerto A Digital I/O
ANSELH = 0 ; Puerto B Digital I/O

Espero esta información te sea de utilidad.

Suerte.

Que tal compañeros bueno pues siguiendo lo que cité tengo esto:
Código:
'*SELECCIONAR MICROCONTROLADOS PIC.   
Device 16F887
'* PALABRAS DE CONFIGURACIÓN.
Config1 HS_OSC,PWRTE_ON,MCLRE_ON,CP_OFF,CPD_OFF,WDT_OFF,FCMEN_ON,IESO_OFF,LVP_OFF,BOR_OFF
Config2 WRT_OFF,BOR21V 
Xtal=16
'* TODOS LOS PUERTOS SE CONFIGURAN COMO DIGITALES.
All_Digital = true 
'* SE DEFINEN LOS PARÁMETROS DEL CONVERSOR ANALÓGICO.
Declare Adin_Res = 10       ; 10 bits de resolución. 
Declare Adin_Tad = FRC      ; Seleccionar RC OSC.
Declare Adin_Stime = 50     ; 50uS para tiempo de muestreo.

y siendo así el microcontrolador debería funcionar con un reloj externo de 16MHz pero a pesar de que se lo quito éste sigue funcionando, mi duda es como se hace que trabaje con un reloj externo de 16MHz, es necesario configurar el registro OSCCON?
 
Atrás
Arriba