Hola compañeros,
Me estoy desenganchando del CCS
...es como una droga...y estoy metiendome con el C18...pero no puedo configurar el oscilador...le he puesto al HW un cristal a 25MHz a un PIC y no sé como configurarlo en C18...¿alguna idea please?
Cuando ejecuto desde linea de comandos la siguiente sentencia,
mcc18 --help-config -p=18f97j60
Aparece las siguientes opciones de configuración de bits
Configuration settings available for processor 18F97J60
Background Debugger Enable bit:
DEBUG = ON Background debugger enabled; RB6 and RB7 are dedicated t
o In-Circuit Debug
DEBUG = OFF Background debugger disabled; RB6 and RB7 configured as
general purpose I/O pins
Extended Instruction Set Enable bit:
XINST = OFF Instruction set extension and Indexed Addressing mode di
sabled (Legacy mode)
XINST = ON Instruction set extension and Indexed Addressing mode en
abled
Stack Overflow/Underflow Reset Enable bit:
STVR = OFF Reset on stack overflow/underflow disabled
STVR = ON Reset on stack overflow/underflow enabled
Watchdog Timer Enable bit:
WDT = OFF WDT disabled (control is placed on SWDTEN bit)
WDT = ON WDT enabled
Code Protection bit:
CP0 = ON Program memory is code-protected
CP0 = OFF Program memory is not code-protected
Fail-Safe Clock Monitor Enable bit:
FCMEN = OFF Fail-Safe Clock Monitor disabled
FCMEN = ON Fail-Safe Clock Monitor enabled
Two-Speed Start-up (Internal/External Oscillator Switchover) Control bit:
IESO = OFF Two-Speed Start-up disabled
IESO = ON Two-Speed Start-up enabled
Default/Reset System Clock Select bit:
FOSC2 = OFF INTRC enabled as system clock when OSCCON<1:0> = 00
FOSC2 = ON Clock selected by FOSC1:FOSC0 as system clock is enabled
when OSCCON<1:0> = 00
Oscillator Selection bits:
FOSC = HS HS oscillator
FOSC = HSPLL HS oscillator, PLL enabled and under software control
FOSC = EC EC oscillator, CLKO function on OSC2
FOSC = ECPLL EC oscillator, PLL enabled and under software control, C
LKO function on OSC2
Watchdog Timer Postscale Select bits:
WDTPS = 1 1:1
WDTPS = 2 1:2
WDTPS = 4 1:4
WDTPS = 8 1:8
WDTPS = 16 1:16
WDTPS = 32 1:32
WDTPS = 64 1:64
WDTPS = 128 1:128
WDTPS = 256 1:256
WDTPS = 512 1:512
WDTPS = 1024 1:1024
WDTPS = 2048 1:2048
WDTPS = 4096 1:4096
WDTPS = 8192 1:8192
WDTPS = 16384 1:16384
WDTPS = 32768 1:32768
External Bus Wait Enable bit:
WAIT = ON Wait states for operations on external memory bus enable
d and selected by MEMCON<5:4>
WAIT = OFF Wait states for operations on external memory bus disabl
ed
Data Bus Width Select bit:
BW = 8 8-Bit Data Width mode
BW = 16 16-Bit Data Width mode
External Memory Bus Configuration bits:
MODE = XM20 Extended Microcontroller mode, 20-Bit Address mode
MODE = XM16 Extended Microcontroller mode,16-Bit Address mode
MODE = XM12 Extended Microcontroller mode,12-Bit Address mode
MODE = MM Microcontroller mode, external bus disabled
External Address Bus Shift Enable bit:
EASHFT = OFF Address shifting disabled; address on external bus refle
cts the PC value
EASHFT = ON Address shifting enabled; address on external bus is off
set to start at 000000h
Ethernet LED Enable bit:
ETHLED = OFF RA0/RA1 function as I/O regardless of Ethernet module st
atus
ETHLED = ON RA0/RA1 are multiplexed with LEDA/LEDB when Ethernet mod
ule is enabled and function as I/O when Ethernet is disabled
ECCP MUX bit:
ECCPMX = OFF ECCP1 outputs (P1B/P1C) are multiplexed with RH7 and RH6
; ECCP3 outputs (P3B/P3C) are multiplexed with RH5 and RH4
ECCPMX = ON ECCP1 outputs (P1B/P1C) are multiplexed with RE6 and RE5
; ECCP3 outputs (P3B/P3C) are multiplexed with RE4 and RE3
ECCP2 MUX bit:
CCP2MX = OFF ECCP2/P2A is multiplexed with RE7 in Microcontroller mod
e (80-pin and 100-pin devices) or with RB3 in Extended Microcontroller mode (100
-pin devices only)
CCP2MX = ON ECCP2/P2A is multiplexed with RC1
Por otro lado, el código fuente es muy sencillo,
#include <p18f97j60.h>
#include <delays.h>
#include <stdlib.h>
#include <usart.h>
#pragma config FOSC=HS, WDT=OFF, DEBUG=ON
void main (void)
{
Open1USART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25);//9600,8,n,1
RCONbits.IPEN=0;//Deshabilitamos prioridades
INTCONbits.PEIE=1; //Habilitamos interrupción de periféricos
INTCONbits.GIE=1; //Habilitamos interrupcion global
while(1)
{
putc1USART("Prueba \r\n");
}
}
Como siemrpe, mil gracias.