pic32mx460f512l การกำหนด Crystal Oscillator
การเริ่มต้นใช้งาน pic32 เราจำเป็นจะต้องตั้งค่าของสัญญาณนาฬิกา การตั้งค่าสัญญาณนาฬิกาสามารถตั้งค่าได้ 2 รูปแบบดังนี้
ตั้งค่าสัญญาณนาฬิกาจากภายนอก
ในการตั้งค่าแบบนี้เราจำเป็นจะต้องต่อคริสตัลจากภายนอกเข้ามาที่ขาของตัวอุปกรณ์ไมโครคอนโทรลเลอร์จากนั้นเขียนโค้ดตามด้านล่างนี้
// *****************************************************************************
// *****************************************************************************
// Section: Configuration bits
// SYSCLK = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
// PBCLK = 40 MHz
// Primary Osc w/PLL (XT+,HS+,EC+PLL)
// WDT OFF
// Other options are don't care
// *****************************************************************************
// *****************************************************************************
// Configuration Bit settings
#ifndef OVERRIDE_CONFIG_BITS
#pragma config UPLLEN = ON // USB PLL Enabled
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider
#pragma config FPLLODIV = DIV_1 // PLL Output Divider
#pragma config FPBDIV = DIV_1 // Peripheral Clock divisor
#pragma config FWDTEN = OFF // Watchdog Timer
#pragma config WDTPS = PS1 // Watchdog Timer Postscale
#pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock Monitor
#pragma config OSCIOFNC = OFF // CLKO Enable
#pragma config POSCMOD = HS // Primary Oscillator
#pragma config IESO = OFF // Internal/External Switch-over
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable (KLO was off)
#pragma config FNOSC = PRIPLL // Oscillator Selection
#pragma config CP = OFF // Code Protect
#pragma config BWP = OFF // Boot Flash Write Protect
#pragma config PWP = OFF // Program Flash Write Protect
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select
#pragma config DEBUG = ON // Background Debugger Enable
#endif // OVERRIDE_CONFIG_BITS
/*
อธิบาย
การทำงานขอโค้ดตัวนี้คือการตั้งค่า config bit เริ่มต้นโดยใน code จะมีการ์ดรับสัญญาณนาฬิกาจาก crystal
เข้ามาและทำการเปิด PPL เพื่อทำการทวีคูณสัญญาณ crystal ให้มีความถี่สูงขึ้นจากใน code จะใช้ความถี่ที่ 80 MHz
และมีการปิด config bit อื่นๆเพิ่มเติมสามารถหาอ่านได้จากใน datasheet
ตั้งค่าสัญญาณนาฬิกาจากภายใน
ในการตั้งค่าสัญญาณนาฬิกาจากภายในในตัวไมโครคอนโทรลเลอร์จะมีออกซิเลชั่นภายในอยู่แล้ว
เราสามารถนำมาใช้ได้เพียงแต่ว่าค่าความผิดพลาดจะสูงมากประมาณ 1 เปอร์เซ็นต์แต่ก็สามารถใช้ในงาน
ที่ไม่ต้องการความละเอียดสูงได้การตั้งค่าสัญญาณนาฬิกาจากภายในเขียนโค้ดตามนี้
// *****************************************************************************
// *****************************************************************************
// Section: Configuration bits
// SYSCLK = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
// PBCLK = 40 MHz
// Primary Osc w/PLL (XT+,HS+,EC+PLL)
// WDT OFF
// Other options are don't care
// *****************************************************************************
// *****************************************************************************
// Configuration Bit settings
#ifndef OVERRIDE_CONFIG_BITS
#pragma config UPLLEN = ON // USB PLL Enabled
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider
#pragma config FPLLODIV = DIV_1 // PLL Output Divider
#pragma config FPBDIV = DIV_1 // Peripheral Clock divisor
#pragma config FWDTEN = OFF // Watchdog Timer
#pragma config WDTPS = PS1 // Watchdog Timer Postscale
#pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock Monitor
#pragma config OSCIOFNC = OFF // CLKO Enable
#pragma config POSCMOD = HS // Primary Oscillator
#pragma config IESO = OFF // Internal/External Switch-over
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable (KLO was off)
#pragma config FNOSC =FRCPLL // Internal Fast RC oscillator (8 MHz) w/ PLL
#pragma config CP = OFF // Code Protect
#pragma config BWP = OFF // Boot Flash Write Protect
#pragma config PWP = OFF // Program Flash Write Protect
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select
#pragma config DEBUG = ON // Background Debugger Enable
#endif // OVERRIDE_CONFIG_BITS
/*
อธิบาย
จากใน code เราจะเห็นว่ามีการเน้นคำตัวหนังสือสีแดงไว้นั่นหมายถึง
ตั้งค่าให้เป็นการเชื่อมต่อสัญญาณนาฬิกาจากภายในใช้ความถี่ที่ 8 MHz ส่วนตัวอื่นๆไม่ได้มีการเปลี่ยนแปลงอะไร
ความคิดเห็น
แสดงความคิดเห็น