[elektro] PIC32 Idle mode

Huszti András kyrk.5.dpg.hu at freemail.hu
Wed Feb 3 22:56:36 CET 2016


Hello,

Ezzel a PIC32-es panellal kiserletezgetek:
https://www.olimex.com/Products/Duino/PIC32/PIC32-PINGUINO-MICRO/

Epitettem egy kapcsolast ahol probalom lejebb vinni az aramfelvetelt. Megoldaskent arra gondoltam, hogy elkuldom a uC-t Idle mode-ba. Ha valami feladat akad akkor jon interrupt es az inditja. Mukodik a dolog egyetlen egy problemam van csak. Idle mode nelkul az 1ms-es idoalapom (Timer interrupt) valoban 1 ms. Ha Idle modba megyek akkor hirtelen felmaszik 3 ms kore.

Szeretnem megerteni, hogy honnan jon ez az ido. Az en olvasatomban az adatlap szerint az IDLE modeban az osszcilator nincs leallitva. Ezt ugy ertelmezem, hogy az IDLE mode elhagyasakor a processzor azonnal tovabb tud futni a regi sebessegen. Az adatlapban van egy tablazat, hogy mekkora kesleltetesekre kell szamitani osszcilator valataskor. Ez a tablazat azonban a SLEEP mode alatt van. Az en ertelmezesem szerint ez a tablazat ram nem vonatkozik. A meresek viszont azt mutatjak, hogy a tavlazatban szereplo hivatkozott ido megiscsak ott van. Kb 2 ms. Ami ugye ossze jon mert 1ms+2ms az pont 3ms.

Mas is tapasztalt hasonlo kesleltetest IDLE mode eseten? Valamit rosszul csinaltam vagy az adatlapot nem ertelmezem helyesen?

Az IDLE modhoz a beepitett fuggvenyt hasznalom: PowerSaveIdle();

Osscilator beallitasok:
// Configuration Bit settings
// 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
//
    #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_2         // 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


Koszonom





More information about the Elektro mailing list