Ajustes de configuración de 18F4550

1

Tengo los siguientes valores de configuración para 18F452 en mi código;

#pragma config  FOSC=HS
#pragma config  PWRT = OFF
#pragma config  BOR = OFF
#pragma config  BORV = 3
#pragma config  WDT = OFF
#pragma config  WDTPS = 128
#pragma config  CCP2MX = OFF
#pragma config  STVREN = OFF
#pragma config  LVP = OFF
#pragma config  DEBUG = OFF

Ahora, quiero cambiar al 18F4550, pero mi código se ejecuta demasiado rápido en comparación con el 18f452. Tengo la misma configuración de hardware (básicamente, sustituyo los PIC en el panel). Y mis valores de configuración para 18F4550 son;

#pragma config PLLDIV   = 5         // 20Mhz external oscillator
#pragma config CPUDIV   = OSC1_PLL2   
#pragma config USBDIV   = 2         // Clock source from 96MHz PLL/2
#pragma config FOSC     = HSPLL_HS
#pragma config IESO     = OFF
#pragma config PWRT     = OFF
#pragma config BOR      = OFF
#pragma config BORV     = 3
#pragma config VREGEN   = ON
#pragma config WDT      = OFF
#pragma config WDTPS    = 128
#pragma config MCLRE    = ON
#pragma config LPT1OSC  = OFF
#pragma config PBADEN   = OFF
#pragma config CCP2MX   = ON
#pragma config STVREN   = ON
#pragma config LVP      = OFF
#pragma config ICPRT    = OFF
#pragma config XINST    = OFF
#pragma config CP0      = OFF
#pragma config CP1      = OFF
#pragma config CP2      = OFF
#pragma config CP3      = OFF
#pragma config CPB      = OFF
#pragma config CPD      = OFF
#pragma config WRT0     = OFF
#pragma config WRT1     = OFF
#pragma config WRT2     = OFF
#pragma config WRT3     = OFF
#pragma config WRTB     = OFF
#pragma config WRTC     = OFF
#pragma config WRTD     = OFF
#pragma config EBTR0    = OFF
#pragma config EBTR1    = OFF
#pragma config EBTR2    = OFF
#pragma config EBTR3    = OFF
#pragma config EBTRB    = OFF

Para ser honesto, uno podría pensar que esto es algo bueno debido a la mayor velocidad. Pero he implementado un software UART y los retrasos requeridos para mi velocidad de transmisión se basan en ciclos de reloj. Este aumento de velocidad arruinó toda mi comunicación serial. ¿Alguna idea para sincronizar dos escenarios? Gracias de antemano,

    
pregunta JuniorDev

1 respuesta

1

Si solo desea ejecutar el '4550 de la misma manera que el' 452, use la misma configuración del oscilador. Aparentemente, estabas usando un cristal de 20 MHz, que habría estado sin el PLL ya que lo habría hecho fuera de especificaciones. Puedes hacer lo mismo con el '4550. Utilice el modo de oscilador HS sin PLL. Esa parte tiene una cadena de reloj más complicada debido a la necesidad de admitir el periférico USB, pero puede hacer que funcione de la misma manera que un '452 desde el mismo cristal.

¿Por qué cambiar al '4550 si no va a utilizar sus nuevas funciones? El '452 más antiguo todavía está en producción y probablemente lo estará durante bastante tiempo. Microchip tiene un historial muy bueno, no partes obsoletas.

Estos chips tienen un hardware UART. ¿Por qué hacerlo en firmware?

Incluso si está utilizando un UART suave, debería poder cambiar la velocidad del reloj, cambiar una constante de ensamblaje en consecuencia y hacer que el código del UART suave se configure automáticamente a la nueva velocidad del reloj.

Hay demasiadas cosas que no tienen sentido en tu pregunta.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas