iç osilatörle başlayıp daha sonra harici osilatöre geçiş için bilgi verebilecek var mı arkadaşlar ?
Daha önce denemedim ama datasheet'ten anladığım kadarıyla durum şöyle:
Konfigurasyon bitlerinde başta dahili osilatör seçilmeli. Ayrıca, IESO (Internal/External Oscillator Switchover) biti de 1 yapılmalı.
Daha sonra çalışma sırasında OSCCON register'ının küçük 2 biti (SCS0 ve SCS1) ile değişiklik yapılabiliyor.
Teşekkürler. Datasheet inde bakarak bişeyler yaptım. 8Mhz olarak ayarlardım 9600 baud seri haberleşmeyle gayet güzel çalıştı.
#include <pic18.h>
#include <usart.h>
#include <delays.h>
#include "fuse.h"
// CONFIG1H
#pragma config FOSC = HSPLL_HS //INTOSCIO_HS Oscillator Selection bits (HS oscillator, PLL enabled (HSPLL))
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = ON // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)
#define _XTAL_FREQ 8000000L //48000000L
void main()
{
TRISA=0x00; TRISB=0x00; TRISC=0b01000000; TRISD=0x00; TRISE=0x00;
PORTA=0; PORTB=0; PORTC=0; PORTD=0; PORTE=0;
CCP1CON=0x00;CCP2CON=0x00;
OSCTUNE=0b10000000;
OSCCON =0b01110110;
baudUSART (
BAUD_IDLE_RX_PIN_STATE_HIGH &
BAUD_IDLE_TX_PIN_STATE_HIGH &
BAUD_IDLE_CLK_LOW &
BAUD_8_BIT_RATE &
BAUD_WAKEUP_OFF &
BAUD_AUTO_OFF);
// configure USART
OpenUSART((USART_ADDEN_OFF &
USART_TX_INT_OFF
&USART_RX_INT_ON
&USART_ASYNCH_MODE
&USART_EIGHT_BIT
&USART_CONT_RX
&USART_BRGH_HIGH),51 ); //1249
//USART Kesme ayarları
RCIF =0x00; // usart alma kesmesi açık(PIR,5 biti)
TXIE =0x00; // usart gönderme kesmesi kapalı(Pie1,4 biti)
RCIE =0x01; // usart alma kesmesi açık(Pie1,5 biti))----Gönder/Alma esnasında açıp kapatıyorum
PEIE = 0x01; // Yardımcı kesme izni veriliyor(INTCON,6. biti)
GIE = 0x01; // Genel kesme izni veriliyor(INTCON,7. biti)
while(1)
{
PORTB=0x00;
Delay10KTCYx(150);
PORTB=0xff;
Delay10KTCYx(150);
}
}
static void interrupt // Kesme fonksiyonu
kesme(void) // Kesme fonksiyon ismi (önemsiz)
{
if(DataRdyUSART())
{
PORTD = ReadUSART();
WriteUSART(PORTD);
}
}
Alıntı YapYUKSEK = read_sensor();