Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Probleme avec 16F1619 I2C Hw OLED 128x32 (Résolu)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » jeu. 2 janv. 2020 11:16

Bonjour à tous

Mes meileurs voeux de Santé pour cette nouvelle année 2020
pour etre en forme et reussir vos projets.

Je commence mal avec ce 16F1619
Impossible de faire reconnaitre la presence de mon mini LCD OLED 128x32 sur le bus I2C (Hardw)
(Nota : c'est pareil avec Softw I2C )
le corps du programme est le meme que celui que j'ai utilisé avec mon 18F26K22 ... qui va bien !
mais la particularité de ce 16F est le mode PPS pour les PINs
Je pense avoir correctement configuré le PPS .
L'UART est OK
J'ai bien les signaux sur SCL et SDA sur le bus I2C ...
MAIS je trouve le bit STOP , à plus de 6mS apres le START bit et 8 bits datas pour l'adresse ... PAS BIEN !
Le bit ACK semble etre present , mais on reconnu par l'Analyser comme tel .. d'autant qu'il n'est pas suivi de la remontée
du SCL et pas de STOP accolé.

J'ai posé le probleme sur MikroC forum ...
Si l'un de vous peut y jeter un oeil .. je ne sais pas si c'est un bug ou une erreur Neuronique de ma part.

16F1619_OLED_I2C_Pinout.jpg


Bug_MSSP_I2C_Master_16F1619_diagram.jpg



_16F1619_Test_UART_Mini_OLESD_LCD_I2C_2020.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le jeu. 23 janv. 2020 09:37, modifié 1 fois.
Aide toi, le ciel ou FantasPic t'aidera

Probleme avec 16F1619 I2C Hw OLED 128x32
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » jeu. 2 janv. 2020 19:24

Bonsoir à tous,

Je ne sais pas si cela va t'aider :

les Résistances de tirage font entre 3.3K et 10K ? ( classiquement 4.7K)

Sur un autre PIC voici ma séquence de déverrouillage du PPS, elle pourrait t'inspirée pense a stopper les INT au départ:

Code : Tout sélectionner

//---------------------------     PPS     --------------------------------------------------
    // Séquence de déverouillage des PPS page 218 de la DS
    INTCON.GIE = 0;               // On désactive les INT
    Unlock_IOLOCK();              // On deverouille les PPS
    RX1PPS = 0x17 ;               // RC7->EUSART1:RX1;
    RC6PPS = 0x09;                // RC6->EUSART1:TX1;
    RX2PPS = 0x0F;                // RB7->EUSART2:RX2;
    RB5PPS = 0x0B;                // RB5->EUSART2:TX2;
    Lock_IOLOCK();                // On verouille les PPS  


Tu peux également changer l'ordre des initialisation et reconfigurer l'OSC en dernier, j'ai rencontré une fois des problèmes de ce genre. Genre les librairies qui te change un petit détail dans la conf.
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Probleme avec 16F1619 I2C Hw OLED 128x32
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#3 Message par paulfjujo » jeu. 2 janv. 2020 20:44

bonsoir Jeremy,

Bonne Année 2020 , la santé et tout le toutim
et un maximum d'echanges et de nouveaux participants sur Fantaspic


merçi de ton support

Je n'ai qu'un seul UART sur ce 16F
et de ce coté tout va bien ..


j'ai verifie via MCC MPLABX que ma config PPS etait OK ..

c'est coté I2C que ça gargouille .. avec le bit ACK/Nack et le bit stop.

je me mefie de MikroC avec les changements de regles sur l'usage de l'adresse device
soit passée en 8 bits comme sur le 18F26K22 , soit en 7 bits comme sur le 16F1847
mais j'ai testé les 2 cas d'adresse 0x3C (7 bits adresse device) ou 0x78 (8bits =adresse device +R/W bit)..
et la gestion I2C completement differente sur le 16F1847 .. mais rien n'est specifié pour le 16F1619
..à suivre
Aide toi, le ciel ou FantasPic t'aidera

Probleme avec 16F1619 I2C Hw OLED 128x32
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#4 Message par paulfjujo » mar. 21 janv. 2020 11:47

bonjour à tous,


Presque 20 j plus tard .. aucun avancement
Avec MPLABX , ça ne fonctionne pas non plus !

mes derniers tests avec microC montre un semblant de ACK (large de 400nS !)
qui repond à une adresse 7 bits établie sur 8 bits , au lieu de 7 bits +R/W
j'envoie 0x3C au lieu de 0x78 sur l'appli basée 18F26K22..
mais de toute façon je n'ai pas un VRAI "ACK" ..

ce MCU en 8/14/20 Pin , de plus en PPS reserve un peu trop de surprise...
J'ai reposté mon probleme sur MikroC
qui d'ailleurs oublie que l'affectation PPS change en fonction du Boitier MCU .. vu pour l'UART ..

au cours de mes test j'ai pu decouvir la (NON) fonctionalité de I2C1_SetTimeoutCallback(2, I2C1_TimeoutCallback);

Code : Tout sélectionner

 I2C1_Remappable_Init(400000);
   // set timeout period and callback function  @Fosc=16MHz
   // timeout=2000 =>   9 à 13mS ??
   // timeout =200 => 1,3mS
   // timeout =50 => 366µS
   // timeout=20 => 170µS
   // timeout=2 => 14.2µS
   // timeout=1 => 7µS
   // Delai entre AC/Nack et bit de STOP
   I2C1_SetTimeoutCallback(2, I2C1_TimeoutCallback);


en gros, puisque c'est vide , c'est une tempo entre le dernier bit sensé fournir le ACK ou NAK et le bit de stop

I2C1_SetTimeoutCallback.jpg


Encore faudrait-il savoir quoi mettre dans cette fonction ?
L'absence de ACK ne semble pas y etre traitée

Code : Tout sélectionner


void I2C1_TimeoutCallback
(char errorCode) {

   if (errorCode == _I2C_TIMEOUT_RD) {
     // do something if timeout is caused during read
   }

   if (errorCode == _I2C_TIMEOUT_WR) {
     // do something if timeout is caused during write
   }

   if (errorCode == _I2C_TIMEOUT_START) {
     // do something if timeout is caused during start
   }

   if (errorCode == _I2C_TIMEOUT_REPEATED_START) {
     // do something if timeout is caused during repeated start
   }
}





:cry:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Probleme avec 16F1619 I2C Hw OLED 128x32
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » mer. 22 janv. 2020 19:13

:sifflotte:

SOLVED !


probleme du a une microcoupure intempestive du fil entre la sortie sortie PIC (sur breadboard) SDA et Pin afficheur OLED
=> pas de retour Device -> PIC

:!!: que de temps perdu pour cette connerie.
de plus ça m'était déja arrivé !
on ne soupconne pas un fil neuf de 10 cm ! MAIS SI, IL LE FAUT :furieux:

saleté de fil dupont ! made in RPC


je recois bien le ACK ave cl'adresse 0x78 !

I2C_Master_16F1619_Ack_from_OLED.jpg



au fait, comment on marque un Post SOLVED ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Probleme avec 16F1619 I2C Hw OLED 128x32
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#6 Message par venom » mer. 22 janv. 2020 21:01

Bonjour paulfjujo et bonjour à tous.

Arf... En effet voilà une panne pas évidente a soupçonné au premier abord. (Avec du matos neuf par dessus le marché)

paulfjujo a écrit :comment on marque un Post SOLVED


Tu dois te rendre au premier post et cliquer sur l'icône en haut a droite :wink:







@++
Mon site web
Mon discord : venom#4888

Probleme avec 16F1619 I2C Hw OLED 128x32
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#7 Message par Jérémy » mer. 22 janv. 2020 21:37

venom a écrit :Source du message Tu dois te rendre au premier post et cliquer sur l'icône en haut a droite


Parfait et merci Venom ! LE but est de modifier ton titre .

Panne récurrente mais qu'on oublie souvent ... hhalala les bread board !
Bravo pour ta perséverence
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Probleme avec 16F1619 I2C Hw OLED 128x32
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » jeu. 23 janv. 2020 09:31

bonjour à tous,


Pour limiter ce genre de deboire, je vais m'equiper d'une carte Curiosity DM 164137 ( qui comporte aussi un chargeur/debuger sur USB)
et permet de tester des PIC DIP8,14 et 20
dont ce 16F1619
et de meme
1 carte Curiosity nano 18F47Q10 famille qui va remplacer les 18Fx6K22
une carte qui comprte aussi un chargeur et un debugger pour 13,50e ( promo jusqu'au 31/01/2020)

j'avais deja fait une carte de base circuit imprimé pour le 18F26K22
déja plus pratique qu'une breadboard
neanmoins utilise aussi des "fils dupont" pour les liaisons aux interfaces externe (RTC,OLED ,..)
humour!! mais maintenant J'EN VAUT DEUX !

un petit detail : mes fils dupont concernés avaient été commandés en FRANCE
10 fils 10cm M-M et 10 fils 10cm F-F pour 3,80€ !
bien plus cher que si commandés en RPC .. et AUCUNE GARANTIE de plus

Resolution pour 2020 :
maintenant je vais tester auparavant tous mes fils avec mon "Ohmetre à pile" = une lampe de poche avec pile plate de 4,5V
et ampoule avec 2 bornes pour fiche bannane montées aux bornes de l'interrupteur.
bien plus fiable que l'ohmetre (multimetre lectronique) ou il circule trop peu de courant.
et une ampoule idea ! qui s'allume c'est parlant :sifflotte:
* ne pas utiliser in-situ du montage! car Risky pour le MCU
Aide toi, le ciel ou FantasPic t'aidera

Probleme avec 16F1619 I2C Hw OLED 128x32 (Résolu)
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#9 Message par venom » jeu. 23 janv. 2020 21:03

:roll: hum... pas bête un petit testeur de fil avec une led :wink:
Je pense que je vais te piquer l’idée. :sifflotte:






@++
Mon site web
Mon discord : venom#4888

Probleme avec 16F1619 I2C Hw OLED 128x32 (Résolu)
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#10 Message par paulfjujo » ven. 24 janv. 2020 10:46

venom a écrit ::roll: hum... pas bête un petit testeur de fil avec une led :wink:
Je pense que je vais te piquer l’idée. :sifflotte:
@++


C'est vrai que la led est à la page , mais

j'ai gardé le principe avec une ampoule (la vielle ampoule à incandescence )
car une led est unidirectionnelle et presente un seuil de > 1V ,
et avec le couple pile plate 4,5V + ampoule => le courant de test est > 100mA.
donc detection facile d'une resistance dans une connection : sertissage pin ou fil lui meme..
à noter la tres faible section de fil cuivre dans ces "fils dupont" !
je ne sais pas pourquoi les vendeurs RPC les ont nommés ainsi .. fil pour faire un pont ?
humour!! mais je connais UN PONT TROP LOIN , ça fini mal.

:sifflotte: sinon, il y avait ceci, à l'oreille !
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 36 invités