Bonjour/bonsoir,
Ayant quelques problèmes pour faire marcher mon code one-wire, j'ai voulu voir le temps nécessaire pour changer les état des sorties.
Un code tout bete:
Avec cette configuration, le PIC doit tourner à 80MHz (8MHz en entrée, division par 2 et PLLx20).Code:#include <p32xxxx.h> #include <plib.h> #include <stdint.h> #pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select #pragma config BWP = OFF // Boot Flash Write Protect #pragma config CP = OFF // Code Protect #pragma config FNOSC = PRIPLL // Oscillator Selection #pragma config FSOSCEN = OFF // Secondary Oscillator Enable #pragma config IESO = OFF // Internal/External Switch-over #pragma config POSCMOD = HS // Primary Oscillator #pragma config OSCIOFNC = OFF // CLKO Enable #pragma config FPBDIV = DIV_2 // Peripheral Clock divisor #pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock Monitor #pragma config WDTPS = PS1 // Watchdog Timer Postscale #pragma config FWDTEN = OFF // Watchdog Timer #pragma config FPLLIDIV = DIV_2 // PLL Input Divider #pragma config FPLLMUL = MUL_20 // PLL Multiplier #pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider #pragma config UPLLEN = OFF // USB PLL Enabled #pragma config FPLLODIV = DIV_1 // PLL Output Divider #pragma config PWP = OFF // Program Flash Write Protect #pragma config DEBUG = OFF // Debugger Enable/Disable int main( void ) { mPORTBSetPinsDigitalOut( BIT_3 ); while(1) { PORTToggleBits(IOPORT_B, BIT_3); } }
Or en sortie j'ai un beau signal carré à ... 312kHz
J'ai donc remplacé le ToggleBit par une mise à une mise au nivau bas puis au niveau haut:
(les déclarations ne changent pas)Code:while(1) { mPORTBClearBits(BIT_3); mPORTBSetBits(BIT_3); }
La j'ai un temps haut de 490ns, et un temps bas de 310ns (différence de temps due au rebouclage), soit une periode de 1.250MHz, encore une fois c'est loin des 80MHz d'horloge...
(Les modules de sorties fonctionnent sur la fréquence du cœur, divisée par 2, soit 40MHz)
J'ai vu un post de RISC ici qui dit d'utiliser uniquement les librairies de C32, c'est ce que je fait, et pourtant, ca foire :s
Ma carte de dev a un programmateur/debugger intégré, est ce qu'il peut ralentir le PIC32?
J'ai fait des routines de tempos avec le timer, les délais sont parfaitement exacts, le PIC tournerai donc bien à 80MHz, mais pourtant les instructions prendraient beaucoup plus de temps...
Des idées?
Merci d'avance
-----