Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

14/11/2010 #81

Avatar de viczea2002

Como compilar con PROTON IDE
Estimados Colegas:
Tengo un codigo desarrollado con PROTON 1.0.0.1, y estoy intentado compilar sin embargo no logro mi proposito ya que al darle la orden de compilar el programa me arroja el siguiente mensaje:
ASM ERROR : Error [173] Source file path exceeds 62 characters
ASM ERROR : ASSEMBLER ERRORS.HEX file not Created

Por lo que solicito ayuda, si alguien me puede ayudar que les agradecere.

Un abrazo a todos.
14/11/2010 #82


tienes que crear una carpeta donde guardes los archivos por ejemplo c:proton y listo
14/11/2010 #83

Avatar de viczea2002

Gracias colega, hice como indicas, pero continua el mismo problema (Ruta de origen del archivo supera 62 caracteres)

Gracias.
15/11/2010 #84

Avatar de atricio

hola amigo mira lo que sucede es que tienes la direccion del archivo del micro que vas a usar muy grande por ejemplo si los haces correr desde mis dicumentos.
anda al disco duro que sea el que uses como raiz o al que lo tienes dedicado para memoria crea una carpeta que tenga un nombre corto no vasa colocar por ejemplo: PRENDIDO Y APAGADO DE UN LED CON RETARDO Y AUTO FANTASTICO eso mas los otros caracteres de ley se hacen mas de 62 procura hacer eso y cerciorate que los estas grabando en .bas
20/11/2010 #85


Que tal y como vamos,

Estoy empezando con proton y me parece super bueno Ok. utilizo el Amicus ya que es gratis aunque es solo para el pic18f25k20, que parece un pic muy completo aunque apenas empiezo a leer.
Aquí como leer un keypad 4x3 en lcd.[code]' LECTURA DE UN TECLADO 4x3 EN UN LCD

Código PHP:
'Device = 18F25K20
'
Xtal 4
Optimiser_Level 
3            
LCD_DTPin 
PORTB.4
LCD_RSPin 
PORTB.0
LCD_ENPin 
PORTB.1
LCD_Interface 
4
LCD_Lines 
2
LCD_Type 
0


Symbol fila1 
PORTC.0
Symbol fila2 
PORTC.1
Symbol fila3 
PORTC.2
Symbol fila4 
PORTC.3
Symbol COLUMNA1 
PORTC.4
Symbol COLUMNA2 
PORTC.5
Symbol COLUMNA3 
PORTC.6
 
Dim boton 
As Byte
TRISC 
=%01110000

TRISB 
0
 boton
=0
LECTURA
:

    
Call teclado
    
If boton=10 Then LECTURA
    
If boton=11 Then boton=0
    
If boton=12 Then LECTURA
    
Print At 1,1,Dec boton
    
GoTo LECTURA
End
 
 teclado
:
 
boton=
 fila1
=0
 
If COLUMNA1=0 Then boton=1
 
If COLUMNA2=0 Then boton=2
 
If COLUMNA3=0 Then boton=3
 fila1
=1
 fila2
=0
 
If COLUMNA1=0 Then boton=4
 
If COLUMNA2=0 Then boton=5
 
If COLUMNA3=0 Then boton=6
 fila2
=1
 fila3
=0
 
If COLUMNA1=0 Then boton=7
 
If COLUMNA2=0 Then boton=8
 
If COLUMNA3=0 Then boton=9
 fila3
=1
 fila4
=0
 
If COLUMNA1=0 Then boton=10
 
If COLUMNA2=0 Then boton=11
 
If COLUMNA3=0 Then boton=12
 fila4
=1
 DelayMS 20 
 
Return 
Archivos Adjuntos
Tipo de Archivo: rar LECTURA DE TECLADO.rar (16,7 KB (Kilobytes), 302 visitas)
22/11/2010 #86


Aquí de nuevo,

El siguiente codigo permite comparar 4 numeros digitados con los almacenados en memoria, como no he podido conseguir el Proton y utilizo el Amicus, se deben configurar algunos datos como los fuses.
Código PHP:
' LECTURA DE UN TECLADO 4x3 EN UN LCD

'
Device 18F25K20
'Xtal = 4
Optimiser_Level = 3            
LCD_DTPin = PORTB.4
LCD_RSPin = PORTB.0
LCD_ENPin = PORTB.1
LCD_Interface = 4
LCD_Lines = 2
LCD_Type = 0

'
*****FILAS Y COLUMNAS***
Symbol fila1 PORTC.0
Symbol fila2 
PORTC.1
Symbol fila3 
PORTC.2
Symbol fila4 
PORTC.3
Symbol COLUMNA1 
PORTC.4
Symbol COLUMNA2 
PORTC.5
Symbol COLUMNA3 
PORTC.6
'**** VARIABLES ******* 
Dim I           As Byte 
Dim Flag        As Byte   
Dim boton       As Byte
Dim CAPTURA[4]  As Byte     '
Este arreglo es para capturar los valores pulsados en el teclado
Dim LEER
[4]     As Byte     'Este arreglo es para guardar los valores previamente almacenados en memoria
Dim SALUDO[11]  As Byte     '
Este arreglo es para el mensaje de bienvenida o el que ustedes deseen
Dim CONTADOR    
As Byte
Dim INDEX       
As Byte 
Dim Frame       
As Byte 
Dim ABC         
As Byte              


TRISC 
=%01110000          'Se declaran como salidas los pines 4,5,6 correspondientes a las columnas 
 TRISB=0                  '
Puerto B se deja como salida
 
EWrite 0
,[5,6,7,8]        'Guarda en la memoria los numeros 5678


 GoSub MENSAJE

 INICIO:
 CONTADOR=0
 LECTURA:
    Call teclado
    If boton=0  Then LECTURA
    If boton=10 Then LECTURA
    If boton=11 Then boton=0
    If boton=12 Then LECTURA
    Cls
    Print At 1,1,"Digite: ",Dec boton
    DelayMS 30
    CAPTURA[CONTADOR]=boton              '
Guarda el valor pulsado en CAPTURA que es un arreglo de 4 bytes
    CONTADOR
=CONTADOR+1                  'Se encarga de aumentar la posición donde capturamos el número pulsado
    If CONTADOR=4 Then                   '
Cuando se pulsan 4 digitos muestra el mensaje de memoria llena
    
Print At 1,1"VERIFICANDO..."
    
DelayMS 400
    GoSub MOSTRAR 
    
Else
    GoTo 
LECTURA
    
EndIf
    GoTo 
INICIO
 End
 
 MOSTRAR
:
  For 
I0 To 3 Step 1                      'Aquí tenemos un ciclo que nos permite leer de la memoria los datos
   LEER[I]=ERead I                          '
y almacenarlos el la variable LEERque es un arreglo de 4 bytes
  Next I                                    
   
    Cls
    
For I=0 To 3
    
Print  Dec CAPTURA[I]                    'Aquí mostramos los cuatro dígitos capturados por teclado
    Next I
    DelayMS 300
    Cls
  
    For I=0 To 3
    Print Dec LEER[I]                        '
Aquí mostramos los dígitos grabados en la memoria
    Next I
    DelayMS 300
    
    Flag
=1
    
For I=0 To 3
    
If CAPTURA[I]<>LEER[IThen Flag=0
    Next I
    Cls
    
If Flag=1 Then  
    
Print "Iguales"
    
Else
    Print 
"Diferentes"
    
EndIf
   Return
   
 
MENSAJE:
 
Cls

 
Print At 1,1"Bienvenido"
 
Print $FE$C0,"Digite y compare"

 
SALUDO [0]  = "B"         
 
SALUDO [1]  = "I"         
 
SALUDO [2]  = "E"
 
SALUDO [4]  = "N"
 
SALUDO [5]  = "V" 
 
SALUDO [6]  = "E"
 
SALUDO [7]  = "N"
 
SALUDO [8]  = "I"
 
SALUDO [9]  = "D"
 
SALUDO [10] = "O"

 'CLS                                
'
ROTACION
' FOR INDEX = 0 TO 11                 
'   
Frame LOOKUP INDEX , ["BIENVENIDOS"]
'  PRINT AT 1 , 1 , Frame           
'  
DELAYMS 200                      
' NEXT                                                
 Return

 
 teclado:
 boton=0 
 fila1=0
 If COLUMNA1=0 Then boton=1
 If COLUMNA2=0 Then boton=2
 If COLUMNA3=0 Then boton=3
 fila1=1
 fila2=0
 If COLUMNA1=0 Then boton=4
 If COLUMNA2=0 Then boton=5
 If COLUMNA3=0 Then boton=6
 fila2=1
 fila3=0
 If COLUMNA1=0 Then boton=7
 If COLUMNA2=0 Then boton=8
 If COLUMNA3=0 Then boton=9
 fila3=1
 fila4=0
 If COLUMNA1=0 Then boton=10
 If COLUMNA2=0 Then boton=11
 If COLUMNA3=0 Then boton=12
 fila4=1
 DelayMS 20 
 Return 
22/11/2010 #87


proton tiene la instruccion inkey con la que te ahorrarias un monton de lineas
22/11/2010 #88


Ok,Chapin, la verdad no he practicado con inkey aun, si tienes un ejemplo que puedas publicar, te lo agradecería pues quiero hacer una alarma sencilla para ponerla en el foro.
25/11/2010 #89


DEPREDADORX1

Seria algo asi:

Código PHP:
Xtal 4
TRISB 
00000000
TRISA 
00000000

All_Digital 
TRUE    

Declare Keypad_Port PORTB
PortB_Pullups 
On
Declare LCD_Type  0       ;LCD is Alpha
Declare LCD_DTPin PORTA.0 ;LCD data line starting port.pin
Declare LCD_ENPin PORTA.7 ;LCD EN line
Declare LCD_RSPin PORTA.4 ;LCD RS line
Declare LCD_Interface 4   ;LCD 4 line interface
Declare 
LCD_Lines 2       

Dim tecla 
As Byte  
Dim var1 
As Byte

Cls

inicio
:
 
DelayMS 500
var1 
InKey '0 1 2   4 5 6   8 9 10 12  13 14   'leido de teclado
tecla 
LookUp   var1, [1,2,3,0,4,5,6,0,7,8,9,0,10,11,12]
                                                     
                                                     
                                                     
Print 
At 1,1,  Dec tecla                                      
DelayMS 2000 
Cls                                        
GoTo inicio 
26/11/2010 #90


Gracias Chapin por el dato, uhm... pos le he dado pero no se cual sea el error, aqui publico para ver si es posible, sin animo de abusar claro, que alguno de nuestros expert echen un empujon a ver cual es el error.
Archivos Adjuntos
Tipo de Archivo: rar INKEY.rar (9,7 KB (Kilobytes), 199 visitas)
28/11/2010 #91


Aquí yo,

Me corrijo, para el pic16f877A me funcionó la lectura eliminando la conexión de las resistencias a las columnas del teclado, no he probado en físico por lo que no estoy seguro si sea correcto, pero la simulación corre bien.
28/11/2010 #92

Avatar de viczea2002

Agradecimiento
Colegas como estan ya solucione mi problema gracias al colega ATRICIO, a quien le agradesco un monton.

Saludos
29/11/2010 #93


Venga!!! aquí estamos otra vez,

El siguiente código es la versión clásica de la clave de acceso vista en pic basic pro, ahora en proton, no he agregado el cambio de clave, eso para alguien interesado. El siguiente código, si no estoy errando, sirve para calcular los kilometros x hora, eso sí, tomando en cuenta el metraje de cada llanta, supongo que el calculo funciona, pero acepto cualquier comentario al respecto de los compas.

Código PHP:
 'CLAVE DE ACCESO CON PROTON

 Device = 16F877A
 Xtal = 4

 All_Digital=true
 Keypad_Port PORTB
 PortB_Pullups true

 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

Print Cls
Dim I    As Byte
Dim x    As Byte
Dim y    As Byte
Dim CONT      As Byte
Dim flag      As Byte
Dim numero[4] As Byte
Dim LEER[4]   As Byte
Dim SALIDA As PORTC.0

EWrite 0,[5,6,7,8]        '
Guarda en la memoria los numeros 5678

INICIO
:
Print 
Cls
Low SALIDA
CONT
=0
GoSub MENSAJE

TECLEAR
:
x=InKey
x
LookUp x, [1,2,3,255,4,5,6,255,7,8,9,255,"*",0,"#",255,255]
If 
<> 255 Then
Print At 2,1+CONT"*"
DelayMS 400
numero
[CONT]=x
CONT
=CONT+1
EndIf
If 
CONT=4 Then 
GoSub COMPARAR_CLAVE
Else
GoTo 
TECLEAR
EndIf 
 GoTo 
INICIO
 
COMPARAR_CLAVE
:
flag=1
Print Cls
Print At 1,1,"A Ingresado:"
For I=0 To 3
 
Print Dec numero[I]
 
Next
 DelayMS 1000
 
Print Cls
 
For I0 To 3                      
 LEER
[I]=ERead I                         
 Next I              


For I=0 To 3
 
If numero[I]<>LEER[IThen flag=0
 Next I
 
Print Cls
 
If flag=1 Then 
 
Print "CLAVE CORRECTA"
 
DelayMS 1500
 High SALIDA
 DelayMS 1000
 Low SALIDA
 
Else
 Print 
"CLAVE INCORRECTA"
 
DelayMS 1600
EndIf
Return


MENSAJE:
Print 
At 1,1"Digite la clave "
Return 
Device = 16F628A
Xtal = 4
LCD_DTPin = PORTB.4
LCD_RSPin = PORTB.1
LCD_ENPin = PORTB.3
LCD_Interface = 4
LCD_Lines = 2
LCD_Type = 0
All_Digital = True


Dim FLT As Float
Dim centimetros As Float
Dim metros As Float
Dim kilometros As Float
Dim medida As Float

Symbol Pin = PORTB.0
Cls

INICIO:
FLT = Counter Pin,1000
metros=1.97*FLT

kilometros=metros/1000*3600
Print At 1,1,"VELOCIDAD ACTUAL"
Print At 2,1, Dec1 kilometros,"K/h"
GoTo INICIO
29/11/2010 #94

Avatar de atricio

gracias alguien me podria ayudar como debo configurar el 16F628A para usarlo con oscilador externo porque quisiera usarlo para hacer un seguidor de linea y si tienen un ejemplito de un seguidor no tan complejo les agradeceria mucho
29/11/2010 #95


Hola atricio,

Aunque yo todavia no he llevado nada al protoboard con proton, creo que la configuración es tan sencilla como la que muestro en los ejemplitos anteriores.
Device = 16F628A
Xtal = 4 ; cristal externo de 4 MHZ

Si lo que quieres configurar son los fuses, es decir, el watchdog, protección, etc, ya te tocaría echar mano de algun tuto, de cualquier forma te anexo el que tengo, en ingles, por si acaso te parece para leer.
Archivos Adjuntos
Tipo de Archivo: rar PROTON 3.07 BETA 7 MANUAL.rar (1,93 MB (Megabytes), 475 visitas)
29/11/2010 #96

Avatar de ByAxel

Buen manual; como dato, el Proton tiene un plugin llamado "Fuse Configurator" que es una manera fácil de configurar los fuses que genera un código para el PIC16F628A con oscilador externo tipo XT:
Código:
Config BOREN_OFF, CP_OFF, DATA_CP_OFF, PWRTE_OFF, WDT_OFF, LVP_OFF, MCLRE_ON, XT_OSC
PIC Fuse Configurator (Ver 1.2.2.4)

saludos
29/11/2010 #97


Ah, claro, Excelente....

Como tengo la version 2.0.4 no puedo instalar ese plugin, será después, también recordé que existe otro complemento que me parece muy bueno, es el proton Header, este permite además de configurar los fuses, realizar todo el encabezado del programa segun nuestras necesidades, agregar la configuración para lcd, activar pull up internas, timer, I2c.
30/11/2010 #98

Avatar de atricio

gracias por la ayuda axel una maquina tus aportes pero me ensenarias a usarlo por favor depredadorx1 puedes colocar el plugin para checarlo y ver como va
01/12/2010 #99


Hola Axel,

Buscalo en google que te sale enseguida, no tiene perdida, si no lo consigues entonces ahi si te lo puedo pasar, claro, si no hay problemas con las normas del foro, la verdad no sé.

Suerte!
01/12/2010 #100

Avatar de ByAxel

Si DEPREDADORX1, ya lo encontré gracias.

atricio, luego de instalarlo debe aparecer en "View > PlugIn > JGB Tools > Fuse configurator"; tan solo debes de declarar el PIC que vas a usar con Device, luego ejecutas el Fuse Configurator e inmediatamente te aparecen los fuses del PIC respectivo, seleccionas lo que quieres, luego clic en el botón "Finish" y aceptas... lo que hace es pegar el código de los fuses en la hoja actual de tu programa y lo pone justo donde se queda el cursor; por eso antes de usar "Finish" ubica el cursor debajo de Device.

saludos
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.