[Tutorial] y manejo de Proton IDE

Hola, tengo un problema con mi programa, en proteus ya lo simule y si funciona pero a la hora de hacerlo en fisico no funciona, estoy utilizando un pic16f887, tal vez pienso que no active el oscilador interno en la programacion del proton, esa es mi duda como se programa la activacion del oscilador interno a 8mhz??? gracias
 
Hola, tengo un problema con mi programa, en proteus ya lo simule y si funciona pero a la hora de hacerlo en fisico no funciona, estoy utilizando un pic16f887, tal vez pienso que no active el oscilador interno en la programacion del proton, esa es mi duda como se programa la activacion del oscilador interno a 8mhz??? gracias
Saludos jcasanova120
Ve si este código de configuración en Proton te funciona fuera del simulador.
Código:
Device = 16F887             ; Microcontrolador seleccionado
Xtal = 8                    ; Cálculos del programa basados en 8MHz.
                                                                   
; Palabra de configuración (Fuses)                                                                 
Config1 INTRC_OSC_NOCLKOUT,PWRTE_ON,MCLRE_ON,CP_OFF,CPD_OFF,WDT_OFF,FCMEN_ON,IESO_OFF,LVP_OFF,BOR_OFF
Config2 WRT_OFF,BOR21V
                                                                   
ANSEL   = 0                 ; Puerto A como digital
ANSELH  = 0                 ; Puerto B como digital
; Para esta configuración, ver Data Sheet. Pagina 64
OSCCON  = $74               ; %01110100    Configurar el registro OSCCON a 8MHz estable.
Suerte y hasta luego.
 
Darkbytes, ya funciono mi circuito en fisico, tu programacion que me diste funciono a la perfeccion en conjunto con lo que planeaba hacer, te agradezco mucho, Gracias, me has salvado mi proyecto.
 
Hola, he estado leyendo todos los mensajes y comentarios y veo que manejan la programacion de pics a un nivel que yo no llego. He estado tonteando encendiendo leds y jugando con pulsadores con un 16F876A. Hace unos dias intenté manejar el encendido de 8 leds conectados al puertoB con el giro de un potenciometro de 10K, pero no funcionó. El resultado es que parecen encenderse de manera aleatoria y cuando giro el pote no cambian. ¿alguien podria ayudarme? gracias
 
Hola, he estado leyendo todos los mensajes y comentarios y veo que manejan la programacion de pics a un nivel que yo no llego. He estado tonteando encendiendo leds y jugando con pulsadores con un 16F876A. Hace unos dias intenté manejar el encendido de 8 leds conectados al puertoB con el giro de un potenciometro de 10K, pero no funcionó. El resultado es que parecen encenderse de manera aleatoria y cuando giro el pote no cambian. ¿alguien podria ayudarme? gracias

Tendrias que postear el programa para que te podamos ayudar. Y como conectaste el pote.
 
Hola, he estado leyendo todos los mensajes y comentarios y veo que manejan la programacion de pics a un nivel que yo no llego. He estado tonteando encendiendo leds y jugando con pulsadores con un 16F876A. Hace unos dias intenté manejar el encendido de 8 leds conectados al puertoB con el giro de un potenciometro de 10K, pero no funcionó. El resultado es que parecen encenderse de manera aleatoria y cuando giro el pote no cambian. ¿alguien podria ayudarme? gracias
Saludos patariki
Te adjunto dos ejemplos para Proton IDE.
Uno usando la instrucción Pot y otro usando el ADC del PIC16F876A
El ejemplo para usar el conversor analógico a digital, puede ser para cualquier otro PIC con ADC
En ambos ejemplos utilize un LCD 16x2 basado en el controlador Hitachi HD44780
Pero solo fue para leer los valores, así que puedes omitir las instrucciones para el LCD

Espero te sirvan. ;)

Suerte y hasta luego.
 

Adjuntos

  • POT Función.rar
    17.8 KB · Visitas: 268
  • POT ADC.rar
    17.5 KB · Visitas: 220
Saludos a todos,

Me gustaría implementar un velocimetro digital con pantalla grafica y he estado probando pero... como que los tiempos no coinciden con la realidad usando Counter y tampoco lo logré con la interrupción por B0 , me gustaría saber si alguien ya lo hizo con buenos resultados, adjunto aquí lo que he hecho y espero que algun forero me pueda colaborar con alguna idea.

Suerte y gracias.
 

Adjuntos

  • ADC PIC16F877A CON GLCD.rar
    77.6 KB · Visitas: 176
Hola, aunque con el glcd aun no lo utilizo (lcd, si), veo en tu código con no multiplicas por 60 la variable FLT, para que te diese las rpm, ya que solo cuentas un solo segundo.

Saludos
 
Hola carptroya,

Yo lo que hago es multiplicar las vueltas que da la rueda cada segundo por el diámetro de la misma, supongo que debe funcionar bien, ese dato lo paso después a kilometros x hora, la cuestión es que me gustaría que el incremento se visualizara de forma creciente o decreciente al igual que sucede con un velocímetro de aguja o análogo, aunque también vi uno con displeys pero con código en assembler y se veía lo más de bien, en fin, le seguiré dando a ver que me resulta pues estoy bien interesado en implementarlo.
 
Ahora ya te entendí…… quieres que por un lado te de las rpm del motor y velocidad del vehículo.
Rpm = 1 segundo * 60
Velocidad = numero de vueltas *longitud de la rueda

Igual algún compañero te da una solución más fácil, pero yo lo simularía de esta forma:
Pondría un micro para generar una frecuencia variable. Con tu micro leería los pulsos y aplicaría las dos formulas.
 
Si claro, esa es la idea, no quisiera tener que agregarle más al circuito porlo que lo voy a dejar así sencillo, ya estuve checando unos ejemplos que encontré en http://www.electro-tech-online.com/microcontrollers/ y todos utilizan counter, estonces supongo que así debe servir, yo lo que cuestionaba era la precisión en el dato porque es lo vi que era crítico en ccs y assembler, parece que todo eso es nulo con proton, en fin, hasta no montarlo en la moto y confrontar con el velocímetro analógico no estaré tranquilo, de momento trataré de hacer una barra indicadora que acompañe el dato creciente o decreciente de la velocidad, para que se vea más llamativo y dinámico.

Suerte y gracias por opinar.
 
Igual me explique mal, el micro para que hiciera la frecuencia variable, era solo para simularlo en la realidad no se utilizaría.
Se quedaría tal cual tú lo pusiste.

Yo para mi barco utilizo el counter para ver las rpm de los motores.

Saludos
 
Ah... ya veo, no hay problema, pues si te funciona bien entonces no hay problema con los tiempos de ejecución de las instrucciones, etc, es lo que veo que comentan con otros lenguajes y para lo que le tiran una cantidad de formulas que me parecen tediosas por lo que pensaba desistir del proyecto, ahora entonces me interesa más que los datos fluyan naturalmente de forma ascendente y descendente segun corresponda, también trataré de agregarle cualquier otro detallito.

De nuevo gracias por tu aporte carptroya y sigo atento a las opiniones.
 
Hola compañeros, aunque ya lei y relei lo que se indica aqui con respecto al uso del CDCDESC.Inc en proton ide, no puedo hacer que me funcione como corresponde la comunicacion entre la pc y el microcontrolador, dejo mi codigo que utilizo hasta abajo, de primera instancia lo unico que quiero lograr es que en el hyperterminal de windows pueda recibir los caracteres de la variable "buffer".

-Todo se compila OK,

-El microcontrolador es reconocido por windows, instalo el driver y me reporta el puerto COM6 (en mi caso)

-El microntrolador al parecer esta funcionando y enviando el "buffer" hacia la pc, ya que si observan mi rutina, enciendo/apago un led cada segundo y reenvio el "buffer" de nuevo.

Sin embargo desde windows simpre me dice que el COM6 no esta disponible o se encuentra en uso.

Y ese es mi problema, ya no se me ocurre que hacer.

Tengo windows 7 de 32 bits, utilizo proton 3.5.2.7.

también conecte el microcontrolador a otro equipo con windows XP y me ocurre exactamente lo mismo; es reconocido, pide el driver, asigna el puerto COMx, pero al momento de quererle utilizar con hyperterminal o el "serial comunicator" del propio proton, me manda el mismo mensaje de que el puerto comx no esta disponible o se encuentra en uso.


Aqui el codigo:

Código:
'****************************************************************
'*  Name    : USBSERIE.BAS                                      *
'*  Author  : Miguel Angel Borbolla Bonomi                      *
'*  Notice  : Copyright (c) 2012 CIBERTLAN                      *
'*          : All Rights Reserved                               *
'*  Date    : 01/06/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   : SE INTENTA COMUNICACION SERIAL VIA USB            *
'*          :                                                   *
'****************************************************************
Device = 18F2550 

Xtal = 48 

USB_Descriptor = "CDCDESC.INC" ' Carga el descriptor de la clase CDC (Puerto COM virtual)
    
    Dim PP0    As Byte System      ' Estado del USBPOLL.
    
    Dim Buffer As String * 20      ' Declaramos (sobradamente) un buffer de 20 bytes. (Max.=64 bytes)
 
    DelayMS 500                    ' Damos tiempo para inicializarse.
    
    Clear                          ' Pone a cero toda la memoria RAM del PIC antes de comenzar.
     
    Repeat                         
          USBPoll                  ' El PIC espera hasta enlazar con el PC a través del USB.
    Until PP0 = 6


Symbol LED1 PORTB.0                ' hacemos un alias del portb.0 donde tenemos un led conectado




Inicio:
    
        Buffer = "VIVO "    ' llena la variable buffer con la cadena "Vivo "
                                  
        Repe:
        USBOut 3, Buffer, 5, Repe ' Envía la cadena de 5 bytes (ASCII correspondiente a los números)
                                  ' al PC a través del USB.
    
    High LED1            'encendemos/apagamos el led, simplemente para ver que esta pasando por aqui el programa
        DelayMS 1000     
    Low LED1
        DelayMS 1000
        
   GoTo Inicio
 
Última edición:
Miborbolla, a mi me sucede lo mismo, pero me asigna el puerto 20, igualmente no se a que velocidad transmite los datos, espero que alguien nos ayude con esto, mi intención es usar este tipo de comunicación para usar otro software en la PC que no se hecho en Visual Basic, Delphi o Visual C, que son los de HID, Saludos
 
Miborbolla, a mi me sucede lo mismo, pero me asigna el puerto 20, igualmente no se a que velocidad transmite los datos, espero que alguien nos ayude con esto, mi intención es usar este tipo de comunicación para usar otro software en la PC que no se hecho en Visual Basic, Delphi o Visual C, que son los de HID, Saludos

Yo también quiero eliminar para siempre los max232 de mis proyectos y aprovechar el usb, por lo pronto en la comunicación CDC (serial sobre usb), pero nada mas no lo logro.

Es mas me conformo por el momento de que alguien se apiade de uno, y nos preste un .HEX funcionando, para estar 100% seguros y saber donde tenemos el problema, a mi me suena que sea en el lado de de Windows, puesto que en el pic al parecer todo esta bien, incluso para estar seguros he metido el "bootloader" de microchip en mi hardware, y todo funciona perfectamente.

Ojala alguien nos de una ayuda al respecto. yo quiero ver en el hyperterminal, algo como "hello word", "estoy vivo" algo asi...y en el display LCD conectado al microcontrolador, "eco" de lo que tecleo en el hyperterminal....Helppp :oops:

Saludos.
 
Última edición:
Me contesto yo solo con respecto a la comunicación cdc sobre usb utilizando el proton IDE, ya que logre un primer "avance" sobre este tema, aquí dejo mi código, que bien sirve como primera prueba para los que estamos iniciando, lo único que hace es abrir el puerto: leer lo que se teclea y en el momento de presionar "enter", lo recibe el microcontrolador y regresa exactamente lo mismo a la computadora.

Yo personalmente utilizo el programa del "serial comunicator" incluido en el proton, y no se requiere mas que compilar y grabar el .HEX en el microcontrolador.

Código:
'****************************************************************
'*  Name    : USBSERIE.BAS                                      *
'*  Author  : Miguel Angel Borbolla Bonomi                      *
'*  Notice  : Copyright (c) 2012 CIBERTLAN                      *
'*          : All Rights Reserved                               *
'*  Date    : 01/06/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   : SE INTENTA COMUNICACION SERIAL VIA USB            *
'*          :                                                   *
'****************************************************************
Device = 18F2550 

Xtal = 48 

USB_Descriptor = "CDCDesc.INC" ' Carga el descriptor de la clase CDC (Puerto COM virtual)
    
    Dim PP0    As Byte System      ' VARIABLE QUE CONTIENE ESTADO del USBPOLL.
    
        
    Dim Buffer As String *20' Declaramos (sobradamente) un buffer de 20 bytes. (Max.=64 bytes)
    
   
      DelayMS 500                    ' Damos tiempo para inicializarse.
    
    Clear                          ' Pone a cero toda la memoria RAM del PIC antes de comenzar.

All_Digital = On


  Repeat
       USBPoll        ' EN ESTE BUCLE ESPERAMOS A QUE EL MICRO SEA RECONOCIDO POR WINDOWS
               Until PP0=6
    
Inicio:
   
           
       Repeat 
           USBIn 3, Buffer,Auto ' EN ESTE BUCLE SE LLENA EL BUFFER HASTA QUE DEMOS "ENTER"
                    Until STATUS.0 = 0' EN LA CONSOLA DE "serial comunicator"

                 
        Repeat              
            USBOut 3, Buffer,Auto ' EN ESTE BUCLE SE ENVIA EL BUFFER A LA CONSOLA DE "serial comunicator"
                    Until STATUS.0=0


   GoTo Inicio


Ojala sirva a los demás para comprobar que tanto el hardware como el software, funciona bien, ya después iremos investigando mas al respecto.

Las conclusiones que saco y de por que no me funcionaba el codigo que comparto mas arriba en otro post, es que se debe mantener un constante "monitoreo" del USBPOLL a no mas de cada 5US. Ya que si no se pierde la comunicacion.

Aquí dejo la nota obtenida del manual del propio proton:

Notes for 18F devices
The method used for USB on the 18F devices is a polled method, meaning that no interrupt is
working in the background. However, this does mean that either a USBpoll, USBin, or USBout
command needs to be executed approximately every 10ms for HID and 5ms for CDC or the
USB interface connection will be lost.

Saludos y buen dia
 
Y como sabes a que velocidad envías los datos y a que puerto serial virtual, a mi me sale el 20 pero no pasa nada cuando entro al "emulador" que tiene proton "F4" creo que es para que salga, me sale error o puerto ocupado, leí por ahí también que se debe de usar un puerto menos, que no sobrepase a 10
 
Hola a todos, necesito ayuda urgente... estoy tratando de programar un pic 18F4550 para trabajar con un teclado matricial 4x3 y un LCD y me estoy guiando el en tutorial parte 6 que nos facilito mecatrodatos.... practicamente pongo igual y el el proteus me funciona a la perfección pero el rato de implementarlo en vivo... primero al querer quemar el programa el pickit2 me da una advertencia de que faltan palabras de configuración que se supone que son los fuses, buscando informacion he puesto varios fuses que creo son los necesarios pero no consigo que me salga ni un numero en el lcd, a veces me sale simbolos y otras veces no me sale nada, si alguien sabe que fuses debo poner se lo agradeceria mucho... ya llevo 3 dias intentandolo y nada... gracias de antemano
 
Atrás
Arriba