Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: kenan_re - 13 Haziran 2013, 16:11:43

Başlık: Pic18f4550 dahili osilatör
Gönderen: kenan_re - 13 Haziran 2013, 16:11:43
iç osilatörle başlayıp daha sonra harici osilatöre geçiş için bilgi verebilecek var mı arkadaşlar ?
Başlık: Ynt: Pic18f4550 dahili osilatör
Gönderen: Tagli - 13 Haziran 2013, 16:29:07
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.
Başlık: Ynt: Pic18f4550 dahili osilatör
Gönderen: kenan_re - 13 Haziran 2013, 17:47:28
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);
     }

}
Başlık: Ynt: Pic18f4550 dahili osilatör
Gönderen: hamza777 - 22 Haziran 2013, 14:34:29
Alıntı YapYUKSEK = read_sensor();