18F26K22 et I2C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

18F26K22 et I2C



  1. #1
    Gérard

    18F26K22 et I2C


    ------

    Bonjour,

    Ici le PIC qui me pose soucis : http://ww1.microchip.com/downloads/e...Doc/41412F.pdf
    J'ai réussi à mettre en oeuvre la PLL et l'oscillateur interne de 16MHz, résultat, il tourne bien à 64MHz.

    C'est là que ça se complique.
    Je souhaite utiliser le module MSSP pour le bus I2C (l'esclave est un MCP23016, expander d'I/O)
    Sauf que je crois bien que le PIC va trop vite, quand je configure l'oscillateur à 4MHz, le 23016 obéit.

    Doc du PIC :
    page 258, table 15-4, il est dit quelle valeur charger dans SSP1ADD pour rester dans les specs de vitesse. Même en chargeant $FF, le 23016 refuse de fonctionner, j'ai d'ailleurs l'impression que la valeur dans SSP1ADD ne change rien quant à la vitesse du bus.
    SSP1CON1 (page 260), les bit <3:0> sont configurés 1000
    SSP1ADD (page 265)

    Merci pour vos idées et conseils.

    PS : j'ai lu un exemple de chez Microchip où le bit SMP de SSP1STAT est positionné à 1. (slew rate control disable) page 259

    -----

  2. #2
    paulfjujo

    Re : 18F26K22 et I2C

    bonjour,

    Quel compilateur C18 ?
    Valeur des resistance de tirage au +5V sur le bus I2C ?
    2,2K dans mon cas..

    J'ai utilisé l'I2C hardware C18 à 10Mhz sans probleme avec des MCP23017 ...
    Code:
    // i2C init
     OpenI2C(MASTER,SLEW_OFF);	// Setup MSSP for master I2C
     SSPADD = 5; //0x3F; 			// 10MHz  100Khz
    mais effectivement pas testé à 64Mhz ( c'etait avec un 18F252 Q=10Mhz!)

  3. #3
    Gérard

    Re : 18F26K22 et I2C

    Bonjour,

    Compilateur Basic Proton+ http://www.protonbasic.co.uk/
    Les pull up sont des 4K7, j'utilise le module hardware MSSP.

    Peut-être les pull up trop élevées ?
    Même à 8MHz, il n'y a rien à faire.

  4. #4
    paulfjujo

    Re : 18F26K22 et I2C

    Essayer avec R=2,2K pour les pull up bus I2C ..
    Au fait bus à 100Khz ou 400 Khz ?

  5. A voir en vidéo sur Futura
  6. #5
    Gérard

    Re : 18F26K22 et I2C

    Concernant la vitesse, je n'en sais rien. En modifiant SSP1ADD, les oscillogrammes ne changent pas. Ai-je loupé quelque chose ?

  7. #6
    paulfjujo

    Re : 18F26K22 et I2C

    bonsoir,

    Le reglage de SSPADD agit bien sur l'horloge bus I2C
    je l'ai testé pour SSPAD=39 100Khz FOSC=16MHz
    et SSPAD=9 pour 400Khz toujours avec FOSC=16MHz
    verifié à l'oscillo sur SCL


    config: 18F26K22 avec DS1307, LCD I2C + le MCP23017 sur le meme bus I2C
    R pull up=2,7K
    Le MCP23017 reagit bien sur ses 8 sorties portA et ses 8 Entrees Port B.

    ma sequence d'init :
    Code:
     OpenI2C1(MASTER,SLEW_OFF);
       Delay10KTCYx(250);
       SSPADD = 39 ;    // at 16Mhz for I2C 100Khz;
       BusI2C=100;
       // SSPADD =9 ;     // at 16Mhz for I2C 400Khz;
       // BusI2C=400;
       // SSPADD = 49 ; // at 20MHz for I2C 100Khz;
       // SSPADD = 24 ; // at 10Mhz for I2C 100Khz;
       StartI2C();
       IdleI2C();
       Delay10KTCYx(250);
      
       k=fprintf(_H_USART,(const rom char *)"\n\r Init UART1 à 19200bds\n\r "); 
       k=fprintf(_H_USART,(const rom char *)" Freq bus I2C=%03d Khz SSPADD= %02d \r\n ",BusI2C,SSPADD);
       k=fprintf(_H_USART,(const rom char *)"Init DS1307 à :  20/01/2014 le 01 15H59M00S \n\r");
       sec=0x00;min=0x59;hr=0x15;week_day=1;
       day=0x20;mn=0x01;year=0x14;
       writeDS1307();  // init time en dur !
       
        k=fprintf(_H_USART,(const rom char *)"\r\n Init MCP23017\r\n ");  
        //On initialise le MCP23017
        I2C_MCP23017_Init(MCP23017_1);
        Tempo(1000L);
        I2C_MCP23017_Write(MCP23017_1,255);

  8. #7
    Gérard

    Re : 18F26K22 et I2C

    En fait, je n'arrivais pas à faire fonctionner le module MSSP.
    Il existe une instruction Basic qui permet de se passer de ce module d'où l'incapacité de modifier la vitesse avec SSP1ADD.

    Je viens de trouver, j'ai honte ...
    Dans le registre PMD1, j'ai mis MSSP1MD à 1 au lieu de 0
    J'avais mal lu la description du registre.

    Maintenant, ça fonctionne à 64MHz, avec SSP1ADD = 161, le bus est à 100kHz !

    Merci Paul pour ton aide.

  9. #8
    invitee5da1686

    Re : 18F26K22 et I2C

    sa me rappelle une lecture sur un bus avec un chip sélect

    dans mon prog je fessait


    pause 10µs
    chip select a 1
    lecture des donnes sur le port
    chip select a 0

    au lieu de


    chip select a 1
    pause 10µs
    lecture des donnes sur le port
    chip select a 0

    du coup la moindres capacité additionnelle sur le bus (riens q'un doigts a moins d'un centimètre des pistes la valeur lue était erronée ...

    jais chercher longtemps ....

  10. #9
    Gérard

    Re : 18F26K22 et I2C

    C'est dans des cas comme ça, quand on cherche et qu'enfin on trouve, qu'on se rappelle de l'erreur.

Discussions similaires

  1. Liaison RS232 entre un pic 18f26k22 et un pc
    Par jojo150393 dans le forum Électronique
    Réponses: 4
    Dernier message: 10/02/2013, 18h06
  2. timer et config pic 18f26k22
    Par jojo150393 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/12/2012, 01h06
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...