[Tutorial] y manejo de Proton IDE

La simulación y la compilación de Protón subida dice 18F4520 y funciona perfectamente.

Cambiando el micro por el susodicho 18F2550, agregando los fusibles que me parecieron correctos( no se si esto es así ya que nunca trabaje/estudie la serie 18) no funciona la comunicación serie(al menos en la recepción.

Realice al vuelo unas modificaciones a lo subido para probar si era problemas de puerto serie y efectivamente solo recibe "0"
Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2021 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 24/11/2021                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

        Device = 18F2550
        Xtal = 4
        

Config_Start
PLLDIV = 1 ;No prescale (4 MHz oscillator input drives PLL directly)
CPUDIV = OSC4_PLL6 ;[Primary Oscillator Src: /1][96 MHz PLL Src: /2]
USBDIV = 1 ;USB clock source comes directly from the primary oscillator block with no postscale
FOSC = HS  ;HS oscillator (HS) XT_XT
FCMEN = OFF ;Fail-Safe Clock Monitor disabled
IESO = OFF ;Oscillator Switchover mode disabled
PWRT = OFF ;PWRT disabled
BOR = OFF ;Brown-out Reset disabled in hardware and software
VREGEN = OFF ;USB voltage regulator disabled
WDT = OFF ;WDT disabled (control is placed on the SWDTEN bit)
PBADEN = OFF ;PORTB<4:0> pins are configured as digital I/O on Reset
LPT1OSC = OFF ;Timer1 configured for higher power operation
MCLRE = OFF ;RE3 input pin enabled; MCLR pin disabled
STVREN = OFF ;Stack full/underflow will not cause Reset
LVP = OFF ;Single-Supply ICSP disabled
XINST = OFF ;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
Debug = OFF ;Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
Config_End

 All_Digital = true 
        
            


Declare Hserial_Baud = 9600 ' velocidad del puerto serie
Declare Hserial_RCSTA 144
Declare Hserial_TXSTA 36
Declare Hserial_Clear = On           

Declare LCD_Type = 0       
Declare    LCD_DTPin        PORTB.0
Declare    LCD_RSPin        PORTB.4
Declare    LCD_ENPin        PORTB.5
Declare LCD_Lines        2
Declare LCD_Interface    4

TRISB = 0

Dim latitud As String *8
Dim longitud As String *9
Dim valido As String *1
Dim tes As Byte

Cls
DelayMS 10

    inicio:
    
    'Cls
    DelayMS 100
    Print At 1,3,"    buscado"
    Print At 2,1,"    satelite"
    HSerIn 100,[ tes ]'[Wait( "$GPGGA" ),skip 37 ,Str valido]
    Toggle PORTB.7
   ' If Val(valido,Dec)<>1 Then GoTo inicio
      
    programa:
  
    DelayMS 100
    'Espera hasta Recibir $GPGGA lo que venga detras es guardado en las variables: latitud,longitud
      
   ' HSerIn [Wait( "$GPGGA" ),skip 12 ,Str latitud,skip 3 ,Str longitud]
    
        
    Print At 1,1, Dec tes'valido'Str latitud,"  Latitud"
    Print At 2,1,Str longitud," Longitud"
    DelayMS 100       
    
    'GoTo programa
   GoTo inicio

Como para verificar que pasa por la instrucción de recepción y lo que "recibe" lo pone en linea 1, posición 1 e invariablemente muestra "0"

Hay algo en la configuración del puerto/fusibles, etc que se me escapa.
 

D@rkbytes

Moderador
Hay algo en la configuración del puerto/fusibles, etc que se me escapa.
Los fuses no son correctos para FOsc = 4 Mhz. (Usa cristal)
Bad_Config.jpg
Yo usaría esta para 4 MHz usando el oscilador interno, aunque preferiría usar los 8 MHz.
Código:
Config_Start
    PLLDIV = 1, CPUDIV = OSC1_PLL2, USBDIV = 1
    FOSC = INTOSC_XT
    FCMEN = OFF, IESO = OFF, PWRT = On
    VREGEN = OFF, WDT = OFF, PBADEN = OFF, LVP = OFF
Config_End
4MHz IntOsc.jpg
 
Gracias por responder.

D@rkibytes , tienes razón el archivo .rar no corresponde con el nombre del micro(18f4520), fue un error al ponerle el nombre.

En el código del 18f4520 no hizo falta la configuración para poder simularlo y funciona bien.

En el código del 18f2550 si no lo configuro NO funciona ni la lcd, use tu configuración y tampoco funciona.



Ricbevi , tienes razón, yo creo también que es problema de configuración( me tiene loco del todo el 18f2550).

Saludos y gracias.
 
Creo que deberías de empezar por algo muy simple para verificar detalles del programador, etc e ir descartando.
Conforme empiecen las cosas a funcionar vas añadiendo cosas.
 
Es lo que hice Scooter

E l programa original es extremadamente simple, imprime leyenda en pantalla, espera entrada por el puerto serie de una cierta cadena de caracteres que usa como referencia, salta una serie de posiciones en la cadena recibida, extrae el dato y lo muestras en las líneas del LCD.

Reforme el programa para que en un lazo cerrado solo reciba un byte del puerto serie y lo muestre en la primera linea del display sin esperar ninguna cadena en especial de caracteres y siempre muestra "0" por lo que deduje que el problema esta en el puerto serie.

La configuración básica del emisor y el receptor esta bien en cuanto a la velocidad, etc (de echo con el otro modelo de PIC funciona correctamente), el problema se plantea al seleccionar este modelo.

Dada esta circunstancia me inclinaba por pensar que la falla proviene de la configuración de algún fusible del PIC o la UART o falla directamente el modelo simularle en Ares.

Acabo de probar y con los pic mas grandes funciona perfectamente con la configuración por defecto de los fusibles del PIC en Proton (Ej:18F4550, 18F46K20 ) pero con la misma familia 18F4455,18F2455 y 18F2250 ni siquiera arranca el programa si no se programa los fusibles.
 
Bueno, de momento dejare este proyecto parado hasta que consiga los gps, luego vere en real lo que ocurra.
En estos dias estube haciendo lo mismo(18f2550) en mikroc(el codigo no es mio, solo modifique algunas cosas) y simularlo en proteus.
Lo dejo por si alguno lo quiere ver.

Saludos a todos
 

Adjuntos

  • gps_2550.rar
    214.5 KB · Visitas: 1
Arriba