[Tutorial] y manejo de proton IDE

disculpen por ser perdido pero quisiera saber como poder configurar el modulo ccp1 y ccp2 de los micros para poder hacer un pwm por hadware me hecharian una mano por favor
 
atricio en el post 109 lo tienes , hay una adc con pwm por hardwere.

en el 120 tienes ademas con cominicacion por usrt.


saludos
 
Gracias DEPREDADORX1

Probare lo que me dices y te cuento, por el momento he conseguido un sensor inflarrojos Sharp 2Y0A02 me funcione, mi siguiente paso es pasar al I2C.
 
Hola a todos de nuevo: primero quiero dar gracias a las personas que me ayudaron con el problema de los fuses de proton.
Ahora quiero pedirles que me ayuden con el siguiente problema, estoy interesado en hacer un letrero de matriz de leds, segun lo que encontre me dan ideas de como hacerlo con el pic 16F628A y un 74LS164 para el registro de desplazamiento.
Bien ahora mi problema es el siguiente, según explica la pagina de donde saque las ideas para hacer la matriz el comando ShiftLeft se utiliza para rotar los bits, es decir toma los bits uno por uno y los mando al registro de desplazamiento, pero el comando ShiftLeft no existe en el proton entonces no se si alguien podria ayudarme con un comando o una rutina que haga lo mismo.
ante mano gracias por la ayuda:aplauso:, les adjunto la pagina donde encontre las ideas como hacer esta matriz:http://www.ucontrol.com.ar/Articulos/matrizled7x32/matrizLED7x32.htm
:)
 
Bunas tardes estoy tratando de establecer una comunicación con el puerto USB, y hasta el momento he encontrado algunos programas que funcionan pero tengo un problema con el protón, al menos eso creo, debido a que no me compila una configuración crucial para el funcionamiento del pic me saca el siguiente error, Error[113] C:\DOCUME~1\HAIRHI~1\Config~1\TEMP\A.S 3508 : Symbol Not previously defined (CPUDIV_1_1), el codigo del programa es el siguiente:

PHP:
Device = 18F4550  ' Usamos el PIC 18F4550, pero puedes declarar cualquiera de los 18Fxx5x.
    
    Xtal = 48         ' El PLL interno siempre ha de ser de 48MHz. (No se refiere al cristal de cuarzo)    
    
    Reminders = 1     ' Mostrar todos los avisos al compilar.
    
    @CONFIG_REQ       ; Configuración para usar un cristal de 20MHz.
           @PLL_Req   ; * Haz clic aquí para ver otras configuraciones del cristal.
               @__config config1l, PLLDIV_5_1 & CPUDIV_1_1 & USBDIV_2_1
               @__config config1h, FOSC_HSPLL_HS_1
           @WATCHDOG_REQ
               @__config config2h, WDT_OFF_2 & WDTPS_128_2
           @DEBUG_REQ        
               @__config config4l, LVP_OFF_4 & ICPRT_OFF_4 & XINST_OFF_4 & DEBUG_OFF_4
               @__config config3h, PBADEN_OFF_3
    
    All_Digital = 1   ' Todas las entradas/salidas serán digitales.

    '-------- Configuración Encoder -----------
    Symbol INTF   = INTCON.1         ' RB0 External Interrupt Flag
    Symbol INTE   = INTCON.4         ' RB0 External Interrupt Enable
    Symbol GIE    = INTCON.7         ' Global Interrupt Enable
    Symbol INTEDG = INTCON2.6        ' Flag = 0 Flanco bajada. Flag = 1 Flanco subida.

    On_Interrupt GoTo Interrupcion   ' Interrupción por Hardware (es la más rápida).

    GIE    = 1                       ' Activa interrupciones generales.
    INTE   = 1                       ' Activa la interrupción externa RB0/INT.
    INTEDG = 1                       ' Hace que inicialmente la interrupción se dispare
                                     ' por flanco de subida.     
    Dim x As Word                    ' Variable X ---> contador de posición actual.
    
    TRISA = %11111111
    TRISB = %11111111                ' Sólo usamos las entradas RB0 y RB1 para el encoder.
    TRISC = %11111111
    TRISD = %11111111    
       
    USB_Descriptor = "CDCDESC.INC" ' Descriptor del modo CDC (Puerto COM virtual)
    
    Dim PP0    As Byte System      ' Estado del USBPOLL
    
    Dim Buffer As String * 20      ' Declaramos (sobradamente) un buffer de 20 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

    ' --------------------------------------------------------------------------------
    
    While 1 = 1
        
        Buffer = Str$(Dec5, x)     ' Convierte X (número) en una cadena (texto) de 5 cifras en ASCII.
                                   ' Esta cadena mostrará de 00000 hasta 65535.
        Repe:
           USBOut 3, Buffer, 5, Repe ' Envía la cadena de 5 bytes (ASCII correspondiente al número)
                                   ' al PC a través del USB.
    Wend
    
    End
    
    Interrupcion:             '-------- Decodificador de Encoder --------------
       
    Context Save              ' Salva en contexto de los registros antes de operar con la interrupción.
    
    If PORTB.0 = 1    Then    ' Si RB0 se ha puesto a 1 (flanco de subida),
       INTEDG  = 0            ' entonces activar la siguiente interrupción por flanco de bajada.
       If PORTB.1 = 1 Then    ' Si RB1 está a 1,
          Inc x               ' entonces incrementar el contador X.
       EndIf
    Else                      ' Si RB0 se ha puesto a 0 (flanco de bajada),  
       INTEDG  = 1            ' entonces activar la siguiente interrupción por flanco de subida.
       If PORTB.1 = 1 Then    ' Si RB1 está 1,
          Dec x               ' entonces decrementar el contador X.
       EndIf
    EndIf
     
    INTF = 0                  ' Borra el "flag" de la interrupción RB0/Int por poder permitir la   
                              ' siguiente interrupción cuando ocurra.
    Context Restore           ' Restablece el contexto de los registros tal como estaban antes de la
                              ' interrupción.
Fuente: http://sites.google.com/site/proyectosroboticos/encoder/pic-encoder-usb

El .Hex que me entregan en esta página de este programa funciona pero el .bas de protón me saca error al compilar.

Es solo por el código de configuración del cristal de 20 Mhz, no sé si necesite librerías adicionales en el protón o hay algo que falta en este.

De antemano muchas gracias quedo atento a cualquier ayuda.
 
Última edición por un moderador:
bien he compilado el código y solamente me muestra un mensaje de almacenamiento de string, por lo que la ruta de easy HID USB, la cual estas trabajando no esta especificada y por ello sale el error que comentas. por lo que se deben generar los archivos que te anexo en imagen.
 

Adjuntos

Disculpa mi ignorancia es que estoy trabajando por primera vez con protón y no se muchas cosas , yo solo he trabajado la programación del micro usando mplab en ensamblador. Tú me dices que tengo que especificar la ruta del easy HID USB, ya estoy tratando de hacer esto pero si me pudieses dar una mano con esto estaría muy agradecido ósea dime como en el protón direcciono esta ruta, yo estoy en el momento bajando esta aplicación pues en otros foros me lo habían recomendado aunque no sé si el protón en si ya lo tenga instalado. De hecho si tuvieses algún programa hecho por ti con el puerto USB que fuese bidireccional o ejemplos muy sencillos de enviar cualquier cosa al puerto y otro de recibir, te estaría eternamente agradecido pues en el momento estoy en fase de experimentación con este tema.

De antemano muchas gracias, por ayudarme con este tema ya que estado toda la tarde tratando de solucionar este inconveniente.
 
mira en paginas anteriores yo puse un ejemplo que use para comunicarme con LABVIEW y un micro 4550 esta explicado he incluso con el vi de labview en otro lado del mismo foro ojala te sirva. ojala los demas amigos podemos hacer un proyecto he ir disipando las dudas de todos
 
Muchas gracias autotronico, primero que todo quisiera poder poner a andar el ejemplo que no me funciona osea como hiciste para cargar el .inc de easy HID USB, ya que no me anda, concidencialmente la pagina que adjuntaste la estoy revisando hace una hora y comprendí muchas cosas que aun no comprendía. La comunicación que voy a hacer es con labview, y quiciera poder encontrar un buen ejemplo al menos el programa del micro bidireccional que es lo más complicado.

Atrico yo he visto foros en esta página creo que tuyos pero con CCS no con protón no sé si me equivoque ya que estado leyendo mucho y como es tanta información puede ser que se me haya pasado, así que si me equivoco podrías hacer me el favor de poner el link donde tienes esta información para estudiarla.

Lo único que me ha funcionado hasta el momento es el ejemplo del link que ajunte pero este lastimosamente no me está compilando satisfactoriamente solo me funciona el .hex que ya viene compilado por el creador del post y además no es bidireccional.

Disculpen la molestia voy a seguir leyendo a ver si puedo desenredar mis dudas, pero estaría muy agradecido si alguno de ustedes me ayuda con esto.

Se me olvidaba la versión que tengo es la 2.0.0.5 del 2009
Y el compilador versión 3.4.0.8
El loader versión 2.0.0.0


De antemano muchas gracias
 
Última edición:
hola todos bueno en dias anteriores prometi postear un par de ejemplos donde hablamos de como usar las GLCD´S no es dificil tampoco es para decir que es facil, o complicado no yo mas bien diria que es un tema apacionante de y mucho cuidado, es aqui donde comienza un nivel de programacion medio, lo digo en base a lo que ya he podido lograr y en base a lo que he visto en amigos cercanos. para empezar posteare un ejemplo de una GLCD samsung de Ref. YM 12864 y un PIC 18F452 vamos ha ir despacio primero como hacer q funcione;

PHP:
        Include "PROTON_G4.INT"
      
'***********************************
        Adin_Res = 10                'resolucuion a 10-bit   
        ADIN_DELAY = 50              'Allow 50us sample time         
'***********************************
        TRISA = %00000001            'configura el el bit.0 del(PORTA.0) como entrada Analoga
        ADCON1 = %1001               'Set de entrada analógica en PORTA.0
'***********************************        
        Dim XPOS_START As Byte
        Dim XPOS_END As Byte
        Dim YPOS_START As Byte
        Dim YPOS_END As Byte
        Dim SET_CLR As Byte
'*********************************** 
       
        Dim DATO As Word                                                                
        Dim VOLT As Byte          
                                                    
'*********************************** 

        DelayMS 300
        Cls
                                              
        XPOS_START = 0
        YPOS_START = 0
        XPOS_END = 127
        YPOS_END = 63
        SET_CLR = 1
        Line SET_CLR , XPOS_START , YPOS_START , XPOS_END , YPOS_END
        
        Cls
        DelayMS 100 
                               
        Line 1,0,0,127,0            'Dibuja un Marco en la Glcd
        Line 1,0,63,127,63          
        Line 1,0,0,0,63             
        Line 1,127,0,127,63
        Line 1,0,30,127,30
        
        FRANK:
        DATO = ADIn 0
        VOLT = DATO * 0.0488
        Print At 2,55,Inverse 0, Dec2 VOLT,"VOLTAGE"
        GoTo FRANK  

si miran con detenimiento encontraran una fabulosa libreria que nos ayuda un monton lo demas es sentido común claro sin dejar de lado q para cada GLCD es necesario consultar su respectivo hoja de datos, porq, 1 no todas las GLCD traen el mismo orden de conexiones 2 es de gran importancia saber con q tipo de controlador vamos a trabajar si es toshiba o samsung, claro y la referncia del controlador cuenta ya q las librerias de Proton por ahora no soportan todos los tipos de controladores q hay en el mercado para samsung trabaja muy bien con el controlador KS0108 y para toshiba el t6963 con estos para las lcd monocromaticas es suficiente cabe destacar q son unos de los mas comerciales aun que vamos a encontrar otros es por eso q antes de comprar una GLCD debemos mirar el data.
En la rutina encontraremos como leer un voltage de 0 a 5vot. atravez del puerto A/D y asi mostrarlo en pantalla, tambien vamos a poder observar un marco al tamaño de la GLCD y aqui debajo les dejo lo mas importante como debe ir nuestra libreria, claro debemos ajustala a nuestras necesidades 
    Device = 18F452
    Xtal = 20

    LCD_DTPort = PORTD
    LCD_RSTPin = PORTB.3 'B.5-c1
    LCD_ENPin = PORTC.0   'B.4-E0
    LCD_RWPin = PORTB.4  'B.3-C0
    LCD_CS1Pin = PORTB.0 'B.0-E1
    LCD_CS2Pin = PORTB.1 'B.1-E2
    LCD_RSPin = PORTB.2   'B.2
    LCD_Type = GRAPHIC
    Internal_Font = On
    Font_Addr = 0

    SDA_Pin = PORTC.4
    SCL_Pin = PORTC.3

    Serial_Baud = 9600
    Rsout_Pin = PORTC.6
    Rsout_Mode = TRUE
    Rsout_Pace = 1
    Rsin_Pin = PORTC.7
    Rsin_Mode = TRUE

    Hserial_Baud = 2400                ' Set baud rate to 2400 for 4MHz XTAL
    Hserial_RCSTA = %10010000       ' Enable serial port and continuous receive
    Hserial_TXSTA = %00100000       ' Enable transmit and asynchronous mode
    Hserial_Clear = On                ' Enable Error clearing on received characters

    Keypad_Port = PORTB

    CCP1_Pin = PORTC.2
    CCP2_Pin = PORTC.1

    Symbol T300 = 3313
    Symbol N300 = 3313 + $4000
    Symbol T600 = 1646
    Symbol N600 = 1646 + $4000
    Symbol T1200 = 813
    Symbol N1200 = 813 + $4000
    Symbol T2400 = 396
    Symbol N2400 = 396 + $4000
    Symbol T4800 = 188
    Symbol N4800 = 188 + $4000
    Symbol T9600 = 84
    Symbol N9600 = 84 + $4000

    Symbol OT2400 = 396 + $8000                       ' Open True
    Symbol OT1200 = 813 + $8000                       ' Open True
    Symbol OT9600 = 84 + $8000                      ' Open True
    Symbol OT300  = 3313 + $8000                  ' Open True

    Symbol ON2400 = 396 + $4000 + $8000              ' Open Inverted
    Symbol ON1200 = 813 + $4000 + $8000              ' Open Inverted
    Symbol ON9600 = 84 + $4000 + $8000              ' Open Inverted
    Symbol ON300  = 3313 + $4000 + $8000         ' Open Inverted

' Rsout / Serial Constants
    Symbol HOME = 1
    Symbol BELL = 7
    Symbol BKSP = 8
    Symbol TAB = 9
    Symbol CR = 13

    All_Digital = TRUE    ' Set PORTA and PORTE to all digital
 
Última edición por un moderador:
Que tal les va compañeros,

Gracias por el ejemplo de glcd a pipo12, mi pregunta es sencilla, para crear la libreria hay que guardar esos datos con extensión *.txt usando la libreta o me estoy equivocando.

Suerte a mil.
 
NO si usted escudriña su programa va a encontrar en los archivos .INC las librerias con las q cuenta y puede llamar segun sea su necesidad, estas estan en ASM. ya es la manera con la cual nos permite el compilador hacer muy trabajos y en poco tiempo. Hay q tener encuenta q las librerias las podemos ajustar a nuestra convenencia, claro hablo de direccionamiento de bits, y si es el caso agregar una instruccion o tambien deshabilitar....para un futuro posteare como imprimir en la GLCD varios tamaños de fuente y para finalizar vamos a ver como imprimir imagenes ya sean fijas o animadas:cool::cool:
 
no he teido oportunidad de mirar el archivo de 32 bits. pregunto ya lo probaron podemos pensar en trabajar con los dspic, bueno no entiendo como sale dicho archivo libreria o actualizacion si en Cronwill aun no se habla de ello bueno si alguien me lo puede explicar gracias
 
Buenas, no se si alguno de ustedes haya trabajado con GLCD(LCD grafiaco), usando proton IDE pues yo he usado siempre las alfanumericas, y en uno de los manuales que se presentan en este foro hay ejemplos pero solo com paltallas alfanumericas pero para graficadoras no.

De antemano muchas gracias quedo atento.

Buscar en Mercadolibre: MCO-17436818-lcd-display-grafico-de-64x128-pixeles-_JM

Esta es la GLCD que quiero controlar

Lcd Grafico Display 12864 128x64 Verde Topway Lm12864bly
 
Última edición:
Hola necesito ayuda para programar un teclado hexadecimal pero lo quiero manejar con el puerto b y las dos primeras del puerto b ya que la profesora quiere que le coloque un display 7 segmento en el puerto C del pic, y en el puerto D conectar 4 leds en los bits menos significativos. apenas me inicializo en esto es apenas mi primera practica lo veo muy complejo, ya que es apenas la primera practica y ni eh visto clase teorica estado leyendo tutorial de proton y proteus, El micro q uso es el PIC 16f877 y lo estoy programando en lenguaje basic. quientenga algo parecido o por lo menos ideas del teclado 4x4, por favor necesito ayuda de como lograrlo

Espero q me ayuden, desde ya gracias