Non classé
Dernière mise à jour le 07/09/18
Présentation de la fenêtre de commande Python
Dans cet exemple nous allons tester des lignes de commandes via l’interface Python. L’interface python est en définitive une console de commande identique à la commande d’invitation (CMD) que vous avez dans le menu démarrer de votre ordinateur.
Hello World!
Nous allons commencer par le strict minimum, c’est-à-dire d’afficher le fameux Hello World sur l’affichage d’une console.
Pour cela, il vous suffit de taper dans la ligne de commande et de faire entrer:
print("Hello World!")
Une fois ceci réalisé il suffit de taper sur la touche entrer, et vous devez voir ceci
Vous pouvez bien entendu mettre ce que vous désirez à l’intérieur des guillemets, mais l’écriture (la chaîne de caractères) doit toujours être situés entre les guillemets.
Vous pouvez aussi ecrire du texte dans un variable et que cette variable soit lue ce qui donne:
Variable = "Hello World!"
print(variable)
Dans ce cas la variable na pas besoin de guillemet puisque dans cette variable “Hello World!” est déja entre guillemet
Créer un dossier sur le bureau
Nous allons voir maintenant comment créer un dossier sur le bureau avec un terminal. Pour cela il suffit de faire:
import os
path = "C:/Users/Julien/Desktop/Dossier_Python"
os.mkdir(path)
Ainsi, si vous retrouné sur votre bureau vous devriez voir le dossier nommé “Dossier_Python”
Supprimer un dossier sur le bureau
Nous avons vu comment créer un dossier, maintenant nous allons voir comment le supprimer. Pour cela il suffit de faire:
import os
path = "C:/Users/Julien/Desktop/Dossier_Python"
os.rmdir(path)
Ainsi, le dossier nommé “Dossier_Python” est supprimé de l’ordinateur
Renommer un dossier sur le bureau
Nous allons renommer le dossier qui a été crée précédemment.
import os
OldFodler = "C:/Users/Julien/Desktop/Dossier_Python"
NewFolder = "C:/Users/Julien/Desktop/Nouveau_Dossier_Python"
os.rename(OldFodler,NewFolder)
Ainsi, le dossier nommé “Dossier_Python” est passé en “Nouveau_Dossier_Python
Créer un bloc note dans un dossier sous le bureau
On va créer une dossier, et ensuite créer un bloc note dans ce dossier:
import os
Folder = "C:/Users/Julien/Desktop/Dossier_Python"
NewFile = "C:/Users/Julien/Desktop/Dossier_Python/Fichier_Python.txt"
os.mkdir(Folder)
File = open(NewFile,"x")
File.close()
Ainsi, vous trouverez dans le dossier “Dossier_Python” un bloc note nommé “Fichier_Python.txt”.
Créer un bloc note dans un dossier sous le bureau et écrire dedans
Nous allons maintenant créer un dossier, créer un bloc note, et écrire dans ce bloc note ce qui nous donne:
import os
Folder = "C:/Users/Julien/Desktop/Dossier_Python"
NewFile = "C:/Users/Julien/Desktop/Dossier_Python/Fichier_Python.txt"
os.mkdir(Folder)
File = open(NewFile,"x")
File.close()
WriteFile = open(NewFile,"w")
WriteFile.write("Ceci est une ligne\n")
WriteFile.write("Ceci est une 2eme ligne\n")
WriteFile.close()
Lire un bloc note situé dans un dossier
Nous allons lire le bloc note situé dans le dossier.
import os
NewFile = "C:/Users/Julien/Desktop/Dossier_Python/Fichier_Python.txt"
ReadFile = open(NewFile,"r")
print(ReadFile.read())
Plus d’informations
r => pour une ouverture en lecture (READ).
w => pour une ouverture en écriture (WRITE), à chaque ouverture le contenu du fichier est écrasé. Si le fichier n’existe pas python le crée.
a => pour une ouverture en mode ajout à la fin du fichier (APPEND). Si le fichier n’existe pas python le crée.
b => pour une ouverture en mode binaire.
t => pour une ouverture en mode texte.
x => crée un nouveau fichier et l’ouvre pour écriture
Dernière mise à jour le 28/04/18
Présentation
En quelques ligne, cette interface, vous permettra d’observer si la communication entre le PIC et le PC est bien établie.
Fonctionnement
Oh!! vous savez rien de bien compliqué!! L’interface proposée ici, permet de piloter par une liaison USB n’importe quel PIC (PIC18/PIC24/PIC32/…). Bien entendu!!! il faut que ces PIC puissent communiquer avec les données USB (D+/D-).
Lorsque le logiciel Interface UsbHid est ouvert, il suffit de cliquer sur le bouton « Connection » afin d’établir une première connection entre le port USB de votre ordinateur et le PIC. Pour le reste il suffit de visualiser les indicateurs qui vous permettra de voir si les données via le PIC sont bien transmises.
Attention!!
L’interface fonctionne si le PIC que vous utilisé est configuré avec un PID = 1234 et VID = 0001, merci de vous basé sur ce numéro de produit et son numéro d’identification pour le bon fonctionnement si vous ne savez plus comment créer le PID/VID je vous laisse consulter l’article
Configuration port USB – VID/PID
PIC18F4550
Vous utilisé un PIC de la famille 18F comme le célèbre 18F4550 ou bien le 18F2455 ou encore le 18F2550 voir même le 18F4455 ?
Je vous laisse le programme à télécharger en MikroC et en MikroPascal afin de tester la connection entre le port USB et le PIC18F4550, et aussi de vous permettre à avoir une première approche sur les lignes de programmation utilisé pour faire fonctionner votre PIC 18F4550 grâçe à l’interface UsbHid.
Pour les plus pressés je vous laisse le fichier Fichier HEX afin de le flasher directement dans le PIC18F4550. Ensuite il vous suffira d’utiliser l’interface UsbHid.
Logiciel
Problèmes rencontrés
- 1) Vous rencontrés des problèmes lors de la connection ? Vous vous êtes assuré d’avoir créé le VID/PID ? Dans ce cas je vous laisse regarder les manipulations dans cet article Configuration port USB – VID/PID
- 2) Pour le fonctionnement merci d’utiliser PID = 1234 et VID =0001, si vous ne le fait pas dans ce cas l’interface UsbHid ne fonctionnera pas !! En effet, celui-ci a été conçu avec un PID = 1234 et VID = 0001 – je sais c’est sa petite faiblesse on fera mieux la prochaine fois 😉
Historiques
28/04/18
– Première mise à disposition
Dernière mise à jour le 17/03/18
Présentation
En quelques ligne, cette interface, vous permettra en cliquant sur les boutons prévus à cet effet d’allumer ou d’éteindre les leds qui sont reliées à votre PIC, afin d’observer si la communication entre le PC et le PIC est bien établie.
Fonctionnement
Oh!! vous savez rien de bien compliqué!! L’interface proposée ici, permet de piloter par une liaison USB n’importe quel PIC (PIC18/PIC24/PIC32/…). Bien entendu!!! il faut que ces PIC puissent communiquer avec les données USB (D+/D-).
Lorsque le logiciel Interface UsbHid est ouvert, il suffit de cliquer sur le bouton « Connection » afin d’établir une première connection entre le port USB de votre ordinateur et le PIC. Pour le reste il suffit d’appuyer sur chaque bouton prévu à cet effet afin de pouvoir allumer ou éteindre les leds.
Je vous laisse un exemple Interface USB – PIC32 – Sorties numériques à cette adresse ou j’utilise le Mini-32 (PIC32).
Attention!!
L’interface fonctionne si le PIC que vous utilisé est configuré avec un PID = 1234 et VID = 0001, merci de vous basé sur ce numéro de produit et son numéro d’identification pour le bon fonctionnement si vous ne savez plus comment créer le PID/VID je vous laisse consulter l’article
Configuration port USB – VID/PID
PIC18F4550
Vous utilisé un PIC de la famille 18F comme le célèbre 18F4550 ou bien le 18F2455 ou encore le 18F2550 voir même le 18F4455 ?
Je vous laisse le programme à télécharger en MikroC et en MikroPascal afin de tester la connection entre le port USB et le PIC18F4550, et aussi de vous permettre à avoir une première approche sur les lignes de programmation utilisé pour faire fonctionner votre PIC 18F4550 grâçe à l’interface UsbHid.
Pour les plus pressé je vous laisse le fichier Fichier HEX afin de le flasher directement dans le PIC18F4550. Ensuite il vous suffira d’utiliser l’interface UsbHid.
Logiciel
Interface UsbHid
Problèmes rencontrés
- 1) Vous rencontrés des problèmes lors de la connection ? Vous vous êtes assuré d’avoir créé le VID/PID ? Dans ce cas je vous laisse regarder les manipulations dans cet article Configuration port USB – VID/PID
- 2) Pour le fonctionnement merci d’utiliser PID = 1234 et VID =0001, si vous ne le fait pas dans ce cas l’interface UsbHid ne fonctionnera pas !! En effet, celui-ci a été conçu avec un PID = 1234 et VID = 0001 – je sais c’est sa petite faiblesse on fera mieux la prochaine fois 😉
Historiques
17/03/18
– Première mise à disposition
Dernière mise à jour le 17/03/18
Présentation
Nous allons voir pour ce montage électronique comment “piloter” les 8 bits de sorties du Mini-32 (composé du PIC32MX534F064H) en utilisant le port USB.
Pour assurer le pilotage des 8 bits de sorties, un petit logiciel sans prétention a été conçu et que vous pouvez télécharger sur mon site à cet adresse Interface UsbHid – communication PC -> PIC
Schéma
Fonctionnement
Pour que ce montage électronique fonctionne, il faut avant tout faire une Configuration port USB – VID/PID. Si vous utilisé l’interface UsbHid, merci de bien mettre un VID = 1234 et un PID = 0001 afin que la communication PC vers PIC se fasse correctement.
Une fois tout ces réglages réalisés, il suffira d’insérer ces ligne dans votre comparateur,de compiler, puis de flasher votre Mini-32.
Logiciel du PIC
Ici vous trouverez le langage en MikroC et en MikroPascal et enfin le Fichier HEX prêt à être flashé dans le PIC32 (Mini-32)
Prototype en vidéo
Une connection par USB et une interface on peu encore imaginer plein de choses ….
Historiques
– 17/03/18
Première mise à disposition.
Dernière mise à jour le 27/03/18
Présentation
Dans ce présent article nous allons voir comment réaliser ou bien plutôt créer un numéro d’identification du périphérique, afin de pouvoir relier un PIC à l’ordinateur via le port USB.
Nous allons voir en détails les manipulations à effectuer et comment rattacher le numéro d’identification à votre programme.
VID/PID
Le VID est le nom court pour Numéro d’identification du Vendeur et PID Numéro d’identification du produit. En général, le VID, PID de périphérique est composé d’une série de caractères comme VID_05A9&PID_2800. La valeur concrète est affichée derrière «-». La valeur de VID, PID est en fait le numéro d’identification unique du périphérique de USB connecté au système Windows. Le numéro d’identification peut être utilisé comme l’information de périphérique, et le pilote pour un périphérique, qui est relié à l’ordinateur via USB dépend de ce numéro.
Afin de créer ce numéro d’identification je vous laisse lire les présentation ci-dessous
Création du VID et PID
Une fois le logiciel MikroC ou MikroPascal ouvert cliquer afin de créer un nouveau projet
Ensuite il faudra choisir l’emplacement du répertoire la ou vous voulez enregistrer votre projet.
Ensuite faire “Next” jusqu’à ce que vous obtenez la figure ci-dessous (Dans l’exemple il s’agit de MikroPascal, mais cela ne change rien en MikroC vous faites exactement les même manipulation)
Maintenant que vous êtes arrivé jusqu’ici, j’ai récupérer dans l’aide de MikroPascal (et MikroC) un morceau de code il suffit juste de le copier et de le coller dans la page la ou vous êtes situé. Vous avez le choix en MikroPascal et en MikroC (je tiens aussi à préciser que ces 2 programmes sont utilisés pour les PIC de la famille 32F (Mini-32 de chez MikroElectronika).
Une fois votre programme copié et collé dans la page du code, il suffit de faire “CTRL + F9” simultanément afin de pouvoir compiler votre programme, et normalement vous dévirez obtenir ces erreurs
Pas d’inquiétude c’est tout à fait normal!! c’est ici que nous allons voir comment créer VID/PID. Pour cela il suffit de cliquer sur “tools” et de sélectionner “HID terminal”
Lorsque la fenêtre est ouverte, je vous ai encadrés les parties que vous devez remplir. A vous de mettre les valeurs que vous voulez mais attention!!! il ne faut pas que ces valeurs soient identiques avec un de vos périphériques qui sont déjà connectés à votre ordinateur!!
Une fois terminé, il suffit de sauvegarder en cliquant sur “save descriptor” dans le répertoire ou se trouve votre projet, et normalement si vous n’avez pas changer le nom du fichier,vous devriez retrouvez ce fichier la:
Je vous promet!! c’est bientôt terminé maintenant il suffit de l’ajouter à votre projet pour cela faite ceci cliquer sur “projet” et ensuite “add file to projet”et recherche le fichier (pour ceux qui utilise MikroC il faut recherche le fichier nommé USBdsc.c)
Ajouter le fichier identifié précédemment
il ne reste plus qu’à faire “CTRL + F9” et le tour est joué!!!
Pour le PIC32 (Mini-32) Réglage dans “Edit Project”
Vous allez me dire que rien ne fonctionne!! Oui c’est sur!! nous avons créer uniquement le VID/PID, mais il reste une chose importante encore c’est de régler l’horloge. Je vous laisse vérifier si les capture écran sont en adéquation avec vos paramètres.
Remarque importante!! Les captures d’écran ci-dessous ont été réalisé sur un PIC32 (Mini-32) à vous de bien faire la différence.
Maintenant vous pouvez faire un “CTRL + F9” pour de bon!!.
Pour la familles des PIC 18F Réglages dans “Edit Project”
Je me disais pourquoi pas aussi évoquer les PIC de la famille 18F comme le 18F4550, le 18F2455, mais encore le 18F2550 et pourquoi pas finir aussi avec le 18F4455? Merci à vous de vérifier les captures écrans ci-dessous
Vérification de la connexion USB
Vous pouvez retournez dans le HID terminal et vérifier que votre PIC est bien connecté à votre ordinateur en faisant cette manipulations
Vous pouvez remarquer que cela correspond tout à fait à ce qu’on a rentré précédemment
Les tests
Pas très compliqué, il suffit d’ouvrir le HID terminal d’aller dans l’onglet “Terminal” et ensuite d’écrire dans la fenêtre de communication puis faire envoyer en cliquant sur “Send” et vous verrez en dessous votre message s’afficher instantanément. Cela veut dire que votre PIC et opérationnelt et utilise bien la liaison USB.
Historiques
– 27/03/18
Première mise à disposition.
Dernière mise à jour le 18/02/2018
Présentation
Comment afficher une valeur analogique en une valeur numérique et que celle-ci peut être lue sur un afficheur 7 segments multiplexé ? En voilà une de bonne question !
Le microcontrôleur qui sera utilisé pour lire une valeur analogique sera de la famille 18F plus précisement le 18F4550 qui celui-ci sera testé sur la platine EasyPic 7.
L’entrée analogique se fait sur 10 bits ce qui donne 1023 possibilités. Pour une tension maxi de 5V à ses broches, la tension analogique et convertie en une valeur numérique qui correspond pour 5V 1023, pour 0V nous avons 0, il suffit de faire le produit en croix (ou règle de trois) pour trouver la valeur numérique. Mais vous avez de la chance car cette règle est déjà intégrée dans le programme du PIC donc nul besoin de prendre de calculette.
Schéma
Fonctionnement
Le schéma électronique est une amélioration de l’Afficheur 002 puisqu’ici, nous utilisons un PIC18F4550 et nous avons 3 afficheurs qui permettent de lire 2 chiffres après la virgule.
On parle de signaux multiplexés lorsque sur un seul fil nous envoyons plusieurs données les unes à la suite des autres. L’avantage de multiplexer des informations, c’est que nous utilisons moins de fils de liaisons électriques.
La lecture de la tension est faite sur la broche RA5 du PIC. En faisant varier le potentiomètre RV1 celui-ci fera varier la tension qui est comprise entre 0 et 5V.
La broche RA0 étant configurée comme une entrée analogique, cette tension analogique (0 ..5V) sera convertie en une valeur numérique (0..1023), c’est ce qu’on appel une conversion Analogique/Numérique (A/N).
Affichage des valeurs converties
Comme son non l’indique l’afficheur permettra de donner les informations des tensions lues sur la broche RA0 du PIC 18F4550 avec 2 chiffres significatif après la virgule ce qui donne à ce montage une meilleur performance.
Réglages “EDIT PROJECT”
Merci de respecter ces captures ci-dessous pour le bon fonctionnement du programme que vous pouvez télécharger ci-dessous
Pour tout le reste il suffit de désactiver.
Logiciel du PIC
Vous allez trouver la programmation en:
– MikroPascal
– MikroC
– Et le Fichier.HEX afin de tester directement
Prototype
Utilisation d’un filtre
Au niveau de la persistance rétinienne j’ai mis du papier sur l’afficheur pour filtrer la fréquence d’allumage des afficheurs 7 segments. En effet, il est plus facile à lire les chiffres lorsqu’un filtre est présent et on arrive mieux à les distinguer l’un de l’autre. Il est aussi possible d’utiliser d’autre sorte de filtre plutôt que du papier.. Mais bon je n’avais que ça sous la mains!!
Circuit imprimé
Aucun, juste une vue en 3D pour faire jolie.
Historiques
– 18/02/17
Première mise à disposition.
Dernière mise à jour le 10/02/18
Présentation
Le Mini-32 de chez MikroElectronika s’agit d’un outil de développement miniature et puissant et qui peut être utilisé sur la Carte EasyPic puiqu’il dispose de 40 broches (DIP40). A vous de bien mettre les cavalier sur la platine EasyPic (pour ma part j’utilise la platine EasyPic 7). Je ne connais pas les autres platines EasyPic mais je pense que si il est possible de pouvoir utiliser le Mini-32 si la platine possède des DIP40.
Le MINI-32 est pré-programmé avec le bootloader USB HID donc il n’est pas nécessaire d’avoir un programmeur externe puisque il est possible de compiler et d’envoyer directement le fichier (.hex) via la liaison USB en utilisant le bootloader que vous pouvez télécharger gratuitement sur le site de Mikroe
Réglages
Avant de se lancer tête dans le guidon dans la programmation, nous allons effectuer des réglages afin que vous puissiez faire fonctionner votre Mini-32. Dans le menu nommé “EDIT PROJECT” (vous pouvez l’ouvrir en faisant CTRL+SHIFT+E), vous allez avant tout vérifier si tout ce qui va suivre ci-dessous est exactement identique avec votre “EDIT PROJECT”.
Voilà!! c’est terminé pour le code Edit Project!
Quartz non représenté?
Dans tout les schémas électroniques effectivement je n’ai jamais représenté le quartz de 8Mhz, puisque celui-ci est intégré directement sur le Mini-32. Ce composant Mini-32 intègre 2 quartz:
– 8Mhz
– 32.768kHz
Je ne vais pas rentrer trop dans les détails pour le moment.
MikroPascal et MikroC
Et oui enfin!! j’avais envie de me mettre sérieusement à la programmation en MikroC puisque cette programmation est très utilisée. Mais je vous rassure je ne laisse pas tomber le MikroPascal, cela permettra de vous faire la mains sur ces 2 modes de programmation et de pouvoir observer les différences entre les deux. Ne prenez pas peur !! car oui il y’a bien des changements au niveau de la syntaxe mais ce n’est pas la mer à boire!!
Historiques
– 10/02/18
Première mise à disposition.
16/12/17
– [Programmations C#] Mise à jour Ecrire dans un fichier texte (ou bloc note)
– [Programmations C#] Mise à jour Effacer fichier texte (ou bloc note)
01/11/17
– [Théories] Mise à jour Théories montage RC avec diode
22/10/17
– [Electronique] Mise à jour Générateur de courant constant – AOP
09/10/17
– [Théories] Mise à jour Théories fonction de transfert transistor JFET
– [Théories] Mise à jour Théories Fonction de transfert transistor NPN
30/09/17
– [Théories] Mise à jour Théories transistor JFET (calculs/amplification…)
– [Théories] Mise à jour Théories fonctionnement de la technologie infrarouge
– [Electronique] Mise à jour Oscillateur CD4011
– [Electronique] Mise à jour Trigger de Schmitt
22/09/17
– [Théories] Mise à jour Théories charge / décharge d’un condensateur
19/09/17
– [Logiciels] Mise à jour Easy HDL – Proteus – Protocole RC5
09/09/17
– [Logiciels] Mise à jour Easy HDL – Proteus – Protocole RC5
– [Electronique] Mise à jour Mesure d’une largeur d’impulsion
30/04/17
– [Programmations C#] Mise à jour Comment remplir un ComboBox
– [Programmations C#] Mise à jour Activer ou désactiver RowHeaderVisible pour un DataGridView
– [Programmations C#] Mise à jour Export DataGridView vers Excel avec enregistrement du fichier Excel
08/04/17
– [Programmations C#] Mise à jour Couleur d’une ligne DataGridView par double clic
– [Programmations C#] Mise à jour Couleur d’une Colonne DataGridView par double clic
– [Programmations C#] Mise à jour Mettre titre de colonnes en gras dans un DataGridView
01/04/17
– [Programmations C#] Mise à jour Ajouter des lignes dans un datagridview
– [Programmations C#] Mise à jour Ecrire dans cellule d’un datagridview
– [Programmations C#] Mise à jour Insérer couleur dans une cellule d’un datagridview par double clic
25/03/17
– [Programmations C#] Mise à jour Export datagridview vers excel
– [Programmations C#] Mise à jour Import excel vers datagridview
– [Programmations C#] Mise à jour Effacer contenu d’un datagridview
18/03/17
– [Programmations C#] Mise à jour Ajouter/modifier/supprimer colonnes ListView
– [Programmations C#] Mise à jour Export ListView vers Excel
– [Programmations C#] Mise à jour Supprimer ligne dans une ListView
12/03/17
– [Programmations C#] Mise à jour Tableur – C# – 001
– [Programmations C#] Mise à jour Tableur – C# – 002
08/03/17
– [Programmations C#] Mise à jour Boîte de dialogue
07/03/17
– [Programmations C#] Mise à jour Ouvrir un fichier en C#
05/03/17
– [Electronique] Mise à jour PIC32
11/02/17
– [Site] Mise à jour Mise à jour du site
05/02/17
– [Electrotechnique] Mise à jour Moteur asynchrone
14/01/17
– [Electrotechnique] Mise à jour Moteur asynchrone
– [Electrotechnique] Mise à jour Transformateur triphasé
Dernière mise à jour le xx/xx/18
En cours et pas terminé…
Présentation
Le Mini-32 possèdes 5 broches qui fournissent des sorties de comparaison (PWM) avec plusieurs possibilités que nous allons détailler ci-dessous. Mais avant de rentrer dans ces détails, ciblons ces 5 broches de comparaisons.
– PIN 46 (Broche RD0 du PIC) = OC1 correspond à la sortie de comparaison 1
– PIN 49 (Broche RD1 du PIC) = OC2 correspond à la sortie de comparaison 2
– PIN 50 (Broche RD2 du PIC) = OC3 correspond à la sortie de comparaison 3
– PIN 51 (Broche RD3 du PIC) = OC4 correspond à la sortie de comparaison 4
– PIN 52 (Broche RD4 du PIC) = OC5 correspond à la sortie de comparaison 5
Configuration des broches
Registre OCxCON
Le registre OCxCON (avec « x » à remplacer par 1 ou 2 ou 3 ou 4 ou 5 qui correspond aux 5 sorties de comparaisons toutes indépendantes) permet d’attribuer des bits correspondant dans chaque registres que nous désirons utiliser.
Ce registre est composé de plusieurs bits avec le bit :
ON : Permet d’activer le module de comparaison (non fonctionnel si le bit est à «0 »)
SIDL : Utilisation quand le CPU est en sommeil ou non
OC32 : Soit on utilise le timer sur 32 bits (plus de comptage) ou 16 bits (moins de comptage)
OCFLT : Une condition est survenue
OCTSEL : Permet de choisir le Timer 3 ou le Timer2
OCM : Encore là aussi beaucoup de choix (des pulsations en continu/ un seul impulsion/… (voir DataSheet)
Historiques
– xx/xx/18
Première mise à disposition.
Dernière mise à jour le 10/02/18
Présentation
Le MINI-32 possédant le PIC32MX534F064H dispose sur ces broches de 5 captures d’entrées (Input capture). Ces broches sont :
PIN 42 (Broche RD8 du PIC) = IC1 correspond à l’entrée de la capture 1
PIN 43 (Broche RD9 du PIC) = IC2 correspond à l’entrée de la capture 2
PIN 44 (Broche RD10 du PIC) = IC3 correspond à l’entrée de la capture 3
PIN 45 (Broche RD11 du PIC) = IC4 correspond à l’entrée de la capture 4
PIN 52 (Broche RD4 du PIC) = IC5 correspond à l’entrée de la capture 5
La particularité de ces broches, c’est qu’elles peuvent au total réaliser 5 captures différentes!! Reste à savoir ce qu’est une capture, et quelles sont les plus prioritaires par rapport aux autres situés sur ces 5 entrées.
Configuration des broches
Essayons de comprendre comment fonctionne ces captures en entrée de notre PIC32
Les cadres rouge représentes les entrées de capture.
Registre ICxCON
Le registre ICxCON (avec « x » à remplacer par 1 ou 2 ou 3 ou 4 ou 5 qui correspond 5 captures toutes indépendantes) permet d’attribuer des bits correspondant dans chaque registres que nous désirons utiliser.
Si nous décidons uniquement d’activer le module via le bit « ON » , il faudra donc attribuer le chiffre 1 dans la case ou est situé ON ce qui donnera d’après le tableau sur 32 bits :
00000000 00000000 10000000 00000000
(de gauche à droite 1er ligne du tableau de 8bits, 2ème ligne du tableau de 8 bits, 3ème ligne de tableau de 8 bits, etc…)
Si pour une autre raison vous décidez de rajouter le bits ICI ( sur 2 bits : bit 0 et bits 1) à 1 cela nous donne :
00000000 00000000 10000000 01100000
Vous voyez cela en fait des « 0 » et des « 1 » à écrire !! Vous ne trouvez pas ? La chance que vous avez puisque c’est uniquement sur 32 bits quand serait-t-il de 64 bits ou voir même 128 ??!! Attention aux tendinites !!!
Routine MikroPascal nous sauves !!!
Ouf !!! Oui !! Comme dis précédemment, heureusement que les routines sont là pour nous faciliter la tâche. Plutôt que d’attribuer des « 0 » ou des « 1 » logique, il suffit de récupérer ces bits situés dans la routine MikroPascal. En reprenant les exemples précédents cela nous donnerais :
L’activation du module “ON” devient avec la routine de MikroPascal:
ON__IC1CON_bit:=1;
|
Et pour activer “ICI” sur les 2 bits cela devient:
ON__IC1CON_bit:=1;
ICI0_bit:=1; // bit « 0 » à l’état logique 1 ICI1_bit:=1; // bit « 1 » à l’état logique 1 |
On s’aperçoit que c’est beaucoup plus parlant, plus simple et cela nous évite de faire des erreurs qu’en pensez-vous ?
Les autres bits ?
ON/SIDL/FEDGE/C32/ICTMR/ICI/ICOV/ICBNE/ICM ???? Mais c’est quoi tout ça? Et à quoi cela peut bien servir ? Si vous voulez des détails vous pouvez voir sur le DataSheets du constructeur.
Pour faire simple :
ON : Permet d’activer le module de capture 1/2/3/4/5 capture en même temps à vous de choisir
SIDL : soit en mode sommeil soit en mode continu (tout le temps actif)
FEDGE : la capture sur l’entrée correspondante se fait soit sur un front montant soit sur un front descendant
C32 : Vous utiliser soit un compteur qui compte sur 32 bits (de 0 à 429 496 72 95) soit sur 16 bit (de 0 à 65535)
ICTMR : Timer 2 / Timer 3 pour compter soit sur 16 bits soit sur 32 bits.
ICI : Un déclenchement d’interruption est réalisé soit sur 1 évènement soit sur 2 évènements soit sur 3 ou voir même sur 4 événements.
Remarques : Lorsque vous réglé le bit ICI , ce bit est à mis à l’état 1 logique sur le premier événements de capture et restera à l’état logique 1 tant que tous les événements de captures non pas été lus à partir du FIFO ou buffer (ICxBUF). Il en résulte qu’il faut lire ces évènements pour vider le Buffer.
– 1 évènement, il faut lire le buffer au moins 1 fois ou plus pour le vider
– 2 évènements, il faut lire le buffer au moins 2 fois ou plus pour le vider
– 3 évènements, il faut lire le buffer au moins 3 fois ou plus pour le vider
– 4 évènements, il faut lire le buffer au moins 4 fois ou plus pour le vider
Attention !! Ceci est primordial afin de pouvoir vider complétement et correctement le buffer !!
ICOV/ICBNE : sont des bits en lectures seules on ne peut uniquement lire ces bits mais on ne peut pas écrire dedans seul le PIC pilote ces bits !!
Le bit ICBNE est utilisé afin de vérifier si le buffer est vidé totalement. Le buffer se vide via le bit ICxBUF (x à remplacerpar 1 ou 2 ou 3 ou bien 4) voir plus bas…
ICM : l’entrée permet de compter le nombre de front qui arrive sur ces broches ICx (x à remplacer soit par 1 ou 2 ou 3 ou 4 ou 5). Soit un seul front soit 4 soit 16 ou bien un front montant et un front descendant il suffit de tester pour en avoir le cœur net !!
ICxBUF
Ce bit permet de lire le Buffer et par la même occasion une fois lu, le buffer est vidé en fonction de nombre d’évènements autorisés (1 événement = 1 lecture /2 événements = 2 lecture / etc…)
Schéma
Programme PIC32 Input Capture – 1 évenement et 4 fronts montant
Programme disponible aussi en MikroC
program PIC32_Input_Capture;
var |
Dans cet exemple, j’ai programmé le PIC32 afin qu’il puisse réaliser une capture sur chaque 4ème front montant en paramétrant correctement le bit ICM (bit 0/1/2). Le 4ème capture sur front montant déclenchera une interruption qui celle-ci allumera la led verte.
Petite précision tout de même au niveau du déclenchement de l’interrutpion. Il faut avant tout sélectionner le nombre d’événements qui correspond au bit ICI, celui-ci est mis à l’état logique “0” pour le bit 1 ainsi que le bit 0 de qui donne :
ICI0_bit:=0; // | Déclenchement de l’interruption
ICI1_bit:=0; // | sur le 1er événement |
Ces bits permettent de contrôler les événements, et il permet de “retarder” les interruptions en fonction du nombre d’événement choisi en agissant sur ces 2 bits. Dans notre cas, puisque ces 2 bits sont à l’état « 0 » il s’agit d’un événement et celui-ci va se produire au bout de la 4ème capture (ou 4ème front montant) puisque je le rappel nous avons régler le bit ICM sur 4 front montant.
Lorsque chaque front montant vont se produire sur la broche RD8 du PIC32, le 4ème front montant déclenchera l’interruption « IVT_INPUT_CAPTURE_1 » ainsi la led verte s’allumera et 1 seconde après nous viderons le buffer qu’une seule fois puisque il s’agit d’un seul événement. Attention !! Ne pas confondre l’événement et la capture.
Mais c’est quoi un événement ? Un événement correspond à un cycle, et on règle le nombre d’événement via le bit ICI. Reprenons l’exemple précédent. Puisque nous avons sélectionné une capture sur chaque 4ème front montant et que nous avons sélectionné 1 seul événement, il en résulte que tout les 4èmes fronts montant une interruption va se produire.
Je vais prendre un autre exemple afin que vous puissiez bien assimilé. Gardons toujours 4 front montant, mais cette fois-ci réglons les bits ICI afin d’obtenir 3 événements ! ! Cela nous donnerais ceci en termes de programmation :
ICI0_bit:=0; // | Déclenchement de l’interruption
ICI1_bit:=1; // | sur le 3ème évenement |
Il en résulte qu’il faudra 12 front montant pour déclencher l’interruption
– 1er événement = 4 front montant;
– 2ème événement = 8 front montant;
– 3ème événement = 12 front montant;
4 événements et 4 fronts montants encore un exemple!
Continuons sur un autre exemple tout en gardant le même schéma électronique. Ici le programme qui va suivre est réalisé sur 4 événements et 4 fronts montants. Je vous laisse lire le programme qui va suivre. Notez que le buffer est vidé 4 fois!!
ICI0_bit:=1; // | Déclenchement de l’interruption
ICI1_bit:=1; // | sur le ‘ème événement |
Ces bits permettent de contrôler les événements, et il permet de “retarder” les interruptions en fonction du nombre d’événement choisi en agissant sur ces 2 bits. Dans notre cas, puisque ces 2 bits sont à l’état « 0 » il s’agit d’un événement et celui-ci va se produire au bout de la 4ème capture (ou 4ème front montant) puisque je le rappel nous avons régler le bit ICM sur 4 front montant.
Lorsque chaque front montant vont se produire sur la broche RD8 du PIC32, le 4ème front montant déclenchera l’interruption « IVT_INPUT_CAPTURE_1 » ainsi la led verte s’allumera et 1 seconde après nous viderons le buffer qu’une seule fois puisque il s’agit d’un seul événement. Attention !! Ne pas confondre l’événement et la capture.
Mais c’est quoi un événement ? Un événement correspond à un cycle, et on règle le nombre d’événement via le bit ICI. Reprenons l’exemple précédent. Puisque nous avons sélectionné une capture sur chaque 4ème front montant et que nous avons sélectionné 1 seul événement, il en résulte que tout les 4èmes fronts montant une interruption va se produire.
Je vais prendre un autre exemple afin que vous puissiez bien assimilé. Gardons toujours 4 front montant, mais cette fois-ci réglons les bits ICI afin d’obtenir 3 événements ! ! Cela nous donnerais ceci en termes de programmation :
Programme disponible aussi en MikroC
program PIC32_Input_Capture;
var |
Comment Allumée la led rouge?
êtes vous posé la question concernant la led rouge? et bien si vous voulez quelle s’allume reprenez le code ci-dessus et supprimer juste cette ligne:
ViderBufferLecture4:=IC1BUF; // 4ème lecture pour effacer la 4ème évenement de capture
|
Mais pourquoi elle s’allume maintenant Et bien comme dis précédemment sur 4 événements il faut vider 4 fois le buffer tout simplement 😉
Historiques
– 10/02/18
Programmation disponible aussi en MikroC.
– 03/02/18
Première mise à disposition.