[Tutorial] y manejo de Proton IDE

hola mecatrodatos, he estado muy pendiente del tutorial y la verdad muy interesante, sabes bastante del tema. Espero me puedas ayudar. Estoy trabajando en un proyecto que es convertir un nivel de burbuja a digital, es decir, digitalizar un nivel. ya lo tengo listo y funcionando con proton, pero ahora, necesito hacerlo en CCS. Ojala me colabores como lo haces con los otros participantes, cuando lo leas me respondes algo para enviarte el codigo q tengoy asi saber en que me puedes ayudar. Gracias.
 
Hola mecatrodatos, gracias x la atencion prestada. A continuacion subo el codigo en proton que deseo me ayudes a pasar a CCS.

PHP:
Device 18F4523
Declare Xtal 20
Config_Start
   OSC = HS ; HS oscillator
   PWRT = OFF ; PWRT disabled
   BOREN = OFF ; Brown-out Reset disabled in hardware and software
   WDT = OFF ; WDT disabled (control is placed on the SWDTEN bit)
   MCLRE = OFF ; RE3 input pin enabled; MCLR disabled
   LVP = OFF ; Disabled
   Debug = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
Config_End

                                                                     
'ADCON2.7 = 1
PortB_Pullups = 1
Declare Adin_Res 12      ' 10-bit result required
Declare Adin_Tad 32_FOSC     ' Set the ADC's clock source
Declare Adin_Stime 50       ' Allow 50us sample time

Declare LCD_Type 0          ' Type of LCD Used is Alpha
Declare LCD_DTPin PORTD.4   ' The control bits B4,B5,B6,B7
Declare LCD_RSPin PORTD.2  ' RS pin on B2
Declare LCD_ENPin PORTD.3   ' E pin on B3
Declare LCD_Interface 4     ' Interface method is 4 bit


  CCP1_Pin = PORTC.2   
   CCP2_Pin = PORTC.1   
Dim ADC_Loops As Word
Dim Temp As Word
Dim port As Byte
Dim incremento As Float
 Dim      ADC_Result1   As Word
 Dim      ADC_Result3   As Word
ADCON1 = %11001011          ' Set all to analogue inputs (PORTA)
TRISA = $FF ' Declare porta as all inputs
 TRISB = $FF
DelayMS 150

 
  TRISD.0=0
  PORTD.0=0

Dim Result1 As Float
Dim Result3 As Float
 Dim      ADC_Total1    As Float
  Dim      ADC_Total3    As Float
Dim Last_Result1 As Float
Dim Last_Result3 As Float
 
 Dim ax As Float
 Dim az As Float
 Dim inclina As Float 
Dim inclinamm As Float 
Dim inclinammPf As Float
Dim diferencia As Word

Dim mp1 As Byte
Dim brillo As Byte
 incremento=0.1
 ADC_Result1=0
  ADC_Result3=0
  brillo=0
  inclinammPf =0
  
ADC_Loops =800
Print $FE,1
 mp1=0
Print $FE,$40,$07,$05,$07,$00,$00,$00,$00,$00 ' Custom character for Degree
  


MenuP:
 incremento=0.1
     'PORTd.0 =0
 Print $FE,1
  Print At 1, 1, "Menu P"
 
  
  If mp1=1 Then
  Print At 2, 1, "Contrast"
  End If
  If mp1=2 Then
   Print At 2, 1, "Pos. F"
       End If
       
         If mp1=3   Then
   Print At 2, 1, "Inc A"
       End If
       
       If PORTB=254 Then
            If mp1>1 Then
            mp1=mp1-1
           
            Else
            
            mp1=3
            End If
             DelayMS 600
       End If
       
       If PORTB=251 Then
              If mp1<3 Then
            mp1=mp1+1
           
            Else
           
            mp1=1
            End If
             DelayMS 600
       End If
       
       
         If PORTB=253 Then
              If mp1=1 Then
               DelayMS 200
            GoTo menubrillo
           
             End If
              If mp1=2 Then
            DelayMS 200
            GoTo menuPosfinal
            
             End If
           
            If mp1=3 Then
            DelayMS 200
            GoTo menuPosActual
            
             End If
              
       End If
       
     DelayMS 50
     GoTo MenuP


menubrillo:

Print $FE,1
   Print At 1, 1, "C.Contraste"
        Print At 2,1, Dec brillo
        
         If PORTB=254 Then
            If brillo>1 Then
            brillo=brillo-3
           
            Else
            
            brillo=0
            End If
             DelayMS 400
       End If
       
       If PORTB=251 Then
              If brillo<30 Then
            brillo=brillo+3
           
            Else
           
            brillo=30
            End If
             DelayMS 400
       End If
         HPWM 1,brillo,1000
            DelayMS 100
            
           If PORTB=253 Then
            mp1=0
            DelayMS 100
           GoTo MenuP
           End If
           
         
            GoTo menubrillo

menuPosfinal:
        
        
      If PORTB=254 Then
            If inclinammPf >-88.8889 Then
            inclinammPf=inclinammPf-incremento
              
            Else
            
            inclinammPf=-88.8889 
            End If
             DelayMS 100
       End If
       
       If PORTB=251 Then
              If inclinammPf < 1600 Then
            inclinammPf=inclinammPf+incremento
           
            Else
           
            inclinammPf=1600
            End If
             DelayMS 100
       End If
              
              
        ' HPWM 2,inclinammPf,1000
            DelayMS 100
            
           If PORTB=253 Then
            mp1=0
            DelayMS 100
            GoTo MenuP
           End If
           
             If PORTB=250 Then
                If incremento < 100 Then
                incremento=incremento *10
                DelayMS 300
                    Else
                    incremento=0.1
                     DelayMS 300
                    End If
           End If
           
            Print $FE,1
   Print At 1, 1, "Ingr Pos"
     Print At 2, 1, Dec1  inclinammPf, " Mils"      
           
           
      GoTo menuPosfinal
menuPosActual:

 'GoTo menup

 ADC_Total1 = 0 ' Clear summing register
  ADC_Total3 = 0 
  ' Loop for a pre-determined number of times
  For Temp = 1 To ADC_Loops
    ADC_Result1 = ADIn 1      ' Grab a new ADC value
  
    ADC_Total1 = ADC_Total1 + ADC_Result1 ' Sum it to the total register
    DelayUS 2                         ' Allow internal capacitors to discharge
    
    ADC_Result3 = ADIn 3      ' Grab a new ADC value
     ADC_Total3 = ADC_Total3 + ADC_Result3 ' Sum it to the total register
    DelayUS 2     
  Next Temp
 
  ' Determin the average of all the equations
  ADC_Result1 = ADC_Total1 / ADC_Loops
    ADC_Result3 = ADC_Total3 / ADC_Loops

 

Result1 = ADC_Result1 *( 5.07/ 1023)            ' Scale it to volts
Result3 = ADC_Result3 *( 5.07/ 1023)       

 ax= (Result1 - 0.03)/0.8
   az= (Result3 - 0.03)/0.8

  inclina= ATan (ax/az)
  inclina=inclina * 57.2957795 *4.20023
  inclina= 232.666 -  inclina
    
 If inclina>-7 And inclina <92 Then   
 
     If inclina >= 0  Then
       inclina=inclina
       
       inclinamm=inclina*17.7778
       
     Else
        inclina=inclina*1.506
         inclinamm=inclina*17.7778
     End If

If Last_Result1 <>  inclina Then         ' Check if value has changed
   ' Print At 1, 1, Dec2  inclina,0, " "   ' If it has, display new data
      Print At 1, 1, Dec1  inclinamm," mils "   ' If it has, display new data
       Print At 2, 1, Dec1 inclinammPf," mils "
    Last_Result1 = inclina             ' and update last value
EndIf
 
 Else
  Print At 1, 1, "fuera de rang" 
  End If
 
 
'If Last_Result3  <> az Then         ' Check if value has changed
  '  Print At 2, 1, Dec4 az, " Z"   ' If it has, display new data
  '  Last_Result3 = az             ' and update last value
'EndIf

 If PORTB=253 Then
            mp1=0
            DelayMS 50
           GoTo MenuP
           End If
 
 diferencia=  inclinammPf -inclinamm
 
 If diferencia =0  Then
 HPWM 2,255,1000
 Else
 HPWM 2,0,1000
 End If
 
GoTo menuPosActual
 
Última edición por un moderador:
Gracias por los comentarios.

Bien amigos he terminado el tutorial lo subiré cuando arregle el computador y pase algunos artículos a PDF. Esta hasta la comunicación USB HID, paciencia por favor.
 
Hola muchachos...
Me podrían ayudar con el LCD Chr Generator...tenía la versión 2.0.0.5 del Proton IDE pero a la hora de correr el generador de caractéres me salía un error de ActiveX q no lo dejaba ejecutar y ya no sé como arreglarlo. Tengo Windows 7 y actualmente el Proton IDE 1.0.0.1.

Gracias!!
 
La versión de proton que tienes es la de prueba o es full puesto que en la carpeta de plugins esta incorporado el GLCD, LCD CHR Genrator, Mister E E-Z SPBRG Calculator, calculadora, Serial Communicator,y el EasyHID Wizard.

En el caso en que no los tengas busca en la red y adjuntalos en la carpeta de PLugin de tu versión de proton hay versiones libres de estas ayudas o ubica el proton portable.
 
Ubica el proton portable de 32 bits es versión USB y viene con todo lo almacenas en tu memoria y corre en cualquier equipo , es lo mismo que el proteus portable , el ccs compiler y otros mas, te correrán bien en Windows 7.
 
Hola... Ya lo he buscado y nada :s

Chicos a lo mejor alguno me pueda ayudar con programita que estoy haciendo. Consiste en mostrar un mensaje en movimiento en una LCD (de derecha a izquierda), el problem es que con un mensaje mayor a 16 caractéres pues este se queda corto y por ende no se muestra toda la información. Este prog lo hice en Assembler y sirvió pero no me dá con Basic :s

Este es el código:

Código:
DEVICE 16F877A

XTAL = 4

'CONFIGURACIÓN LCD:

LCD_DTPIN = PORTD.4        'Usado para interface de 4 líneas (líneas de datos) y deben ser conectadas  desde RD4 hasta RD7
LCD_RSPIN = PORTC.4       'RS al pin RB4
LCD_ENPIN = PORTC.6       'E al pin RB6
LCD_INTERFACE = 4         'Serán utilizadas 4 líneas de datos
lcd_lines = 2             'LCD de 2 líneas
LCD_TYPE = 0              'Indica que el tipo de LCD es numérica
ALL_DIGITAL = TRUE

dim P AS byte                'P = posición del dato
dim L as byte             'L = línea donde se úbica el dato

INICIO:

L = 1                     'Se sitúa el cursor en la linea 1 de la LCD
FOR P = 16 TO 1 step -1   'Este ciclo permite el moviento de derecha a izquierda, por eso se va dedrementadndo un paso
cls                       'Limpiar LCD
CURSOR L,P                'Se sitúa el cursor en las coordenadas L,P
PRINT "Electronica y Telecomunicaciones" 
DELAYMS 100
NEXT                      'Regresar al ciclo For
GOTO INICIO
 
Cordial saludo mi amiga tata con lo hecho por ti te doy la idea para el funcionamiento de desplazamiento de mensaje según tu requerimiento te recomiendo realizarlo de esta manera por otro lado recuerda que el valor del mensaje se justifica con for si por ejemplo deseas desplazar "foros de electrónica ", deberás contar las letras y espacios es decir en este caso son 20 caracteres y se colocaría For index: 20 to 0, por otro lado coloca siempre el conexionado en un solo puerto o combinado con el Puerto E , yo utilizo en B para el 16f877A y asi utizar los beneficios de los puertos restantes, no pude contestar antes ya que estoy muy ocupado con la universidad :

Código:
Device 16F877A

XTAL = 4

'CONFIGURACIÓN LCD:

LCD_DTPIN = PORTD.4        'Usado para interface de 4 líneas (líneas de datos) y deben ser conectadas  desde RD4 hasta RD7
LCD_RSPIN = PORTC.4       'RS al pin RB4
LCD_ENPIN = PORTC.6       'E al pin RB6
LCD_INTERFACE = 4         'Serán utilizadas 4 líneas de datos
LCD_LINES = 2             'LCD de 2 líneas
LCD_TYPE = 0              'Indica que el tipo de LCD es numérica
ALL_DIGITAL = TRUE

Dim index As Byte
Symbol SCRRIGHT = 28
Main: 
Print $fe,1
Print At 1,1, "Electronica y Telecomunicaciones" 
DelayMS 2000

GoSub Scroll_Derecha
DelayMS 1000
GoTo Main

Scroll_Derecha:
For index= 0 To 32            
Print $FE,SCRRIGHT
DelayMS 300
Next
Return

muchas gracias amigo Luis_speed por el aporte y bienvenido al foro
 

Adjuntos

  • desplazamiento.rar
    5.9 KB · Visitas: 440
Última edición:
Muchas gracias gracias Mecatrodatos!!! :)

Aún me falta estudiar más el Basic pq en la U aprendimos fue Ass jeje.. y hay cosas q me enredan un poquito.

Gracias ;)
 
Holaaa :apreton:... creo no se puede adjuntar el instalador de Proton por aquí pq el tamaño excede lo permitído pero lo puedes ubicar en internet, te recomiendo Taringa. :)
 
hola amigos como estan un favor alguien sabe como usar el bootloader de los micros 18f2550 y el 18f4550 en PROTON IDE he leido un poco sobre esto y segun mire se puede cargar al micro por esta herramienta un nuevo programa sin necesidad de un grabador es verdad eso o no????? les agradezco la ayuda desde ya muchas gracias
 
hola amigos como estan un favor alguien sabe como usar el bootloader de los micros 18f2550 y el 18f4550 en PROTON IDE he leido un poco sobre esto y segun mire se puede cargar al micro por esta herramienta un nuevo programa sin necesidad de un grabador es verdad eso o no????? les agradezco la ayuda desde ya muchas gracias

Que tal.
Dos opciones...

> Usando el Loader del Proton IDE, pero este requiere un pequeño circuito que se conecta a puerto serie de la PC, también es usado para depurar el programa el circuito. Para eso requiere que se grabe un programa antes de hacerlo que se encuentra en la carpeta de instalación "C:\Program Files\ProtonIDE\MCLoader\LoaderHEX"; ahi verás todos los *.HEX para cada PIC.

> Usando el Bootloader de Microchip, los programas se graban directo al PIC18F2550/4550 por medio de su módulo USB; igualmente se requiere grabar antes con el firmware que hace el trabajo. Bootloader P18.

saludos.
 
Atrás
Arriba