Electronique > PublicationsMikroPascal et microcontrôleurs > Au secours !

Dernière mise à jour : 16/03/2017

Présentation

Cette page est prête à recueillir vos questions restées sans réponse après lecture du livre. Je les note au fur et à mesure, afin de ne pas les oublier, mais y répond quand j'ai le temps. Afin de me faciliter la tâche ainsi que la votre, je classe les questions par chapitre et non par ordre d'arrivée. Voir aussi :

Questions

-

Pascal A. (mail) - 16/03/2017
Page 141: vous dites que l'interruption n'est déclenchée qu'une seule fois alors que toute les conditions sont réunies pour retourner dans le programme d'interruption comme cela est expliqué dans le cours de Bigonoff (16F84).
Si le bit indicateur d'état de l'interruption (INTF dans l'exemple en question) n'est pas remis à zéro après traitement de l'interruption, le programme retourne bien là où il avait été interrompu, mais aucune interruption ultérieure ne peut se produire pour cet embranchement (ici INTF lié à la broche RB0). Cela n'empêche pas d'autres sources d'interruption de provoquer une nouvelle interruption.
Page 154: La RAZ du bit RBIF est suivie d'une lecture du Port B alors que dans  le Data Sheet c'est l'inverse qui est préconisé.
Vous avez raison, le datasheet préconise que le bit RBIF soit remis à zéro après lecture du PORTB, et la rigueur voudrait que j'adopte cette méthode. Ceci dit, le code proposé dans ce chapitre fonctionne aussi, bien que l'ordre des deux routines soit inversé.
Page 217: Vous utilisez l'instruction ADC Read avec Vref+ et Vref-. Dans l'aide de mickoPascal, il est mentionné que cette instruction ne fonctionne pas avec les sources de référence externes.
Cette limitation a du exister dans d'anciennes versions de MikroPascal, et je pense que l'aide en ligne n'a pas été mise à jour. Le code compilé avec la routine ADC_Read tient bien compte de la tension de référence externe (ici Vref+ sur RA3).
Page 272: Quelle est la différence entre ADC_Read et ADC_Get_Sample ?
La routine ADC_Read procède à une initialisation systématique du module CAN avant la lecture effective de l'échantillon. La routine ADC_Get_Sample (qui a été intégrée plus tard dans MP) ne fait que lire l'échantillon et de ce fait est beaucoup plus rapide et conseillée. 

Julien P. (mail) - 11/05/2016
Bonjour, je me permets de vous signaler une erreur dans votre ouvrage "les microcontrôleurs PIC pour les débutants". 1ère édition, 1er tirage. J'ai lu au moins 10 fois le passage et je pense que vous vous êtes trompé sur un mot employé. Page 52, au point 5.2.1. "Petite parenthèse, [...], mais à un rythme plusieurs fois inférieur. ..." Au lieu de "inférieur", ce n'est pas plutôt "supérieur"? Bonne journée.
Bonjour Julien, merci beaucoup de l'intérêt porté à mon livre. Supposons que le quartz oscille à 1 MHz, ce qui correspond à une période de 1 us. Une instruction qui réclame 4 cycles d'horloge demandera 4 us, ce qui correspond à une fréquence de 250 kHz. La vitesse d'exécution de cette instruction (250 kHz) est établie à un rythme 4 fois inférieur à celui de la fréquence d'oscillation de l'horloge FOSC (1 MHz).
 
Guillaume G. (mail) - 31/01/2016
Bonjour Rémy, je pense qu'il y'a une petite erreur page 57 de votre livre chapitre 5.2. je cite : "Le 16F628A propose par exemple deux valeurs de fréquences internes : 4 MHz et 37 kHz..." Il me semble que le datasheet indique 48 kHz pour la fréquence interne la plus basse.
Bonjour Guillaume, et merci pour votre retour. En effet, si on consulte le datasheet du 16F628A daté de 2006, il est fait mention de deux oscillateurs internes de 4 MHz et de 48 kHz. Mais si on consulte le datasheet du 16F628A daté de 2002, il est fait mention de deux oscillateurs internes de 4 MHz et 37 kHz. C'est évidement celui de 2002 que j'avais sous forme imprimée, entre les mains. Comme la valeur de 48 kHz est plus récente et juste, je reporte cette remarque à la page Corrections.

Gilles N. (mail) - 28/03/2015
Bonjour Rémy, Une petite précision SVP. PIC12F675, convertisseur A/D, registre ANSEL. Les bits <6:4> règlent la fréquence d'horloge de la convertion. Par exemple, pour une fréquence d'oscillation interne à 4 MHz du PIC, quelle est la sélection idéale de ANSEL bits <6:4> ? Pouvez-vous m'expliquer succintement. Dans l'exemple de votre livre, vous mettez ces trois bits à 000 soit Fosc/2 pour un PIC16F88. Cette fonction me cause des soucis. Je ne comprends pas bien. Merci d'éclairer ma lanterne. Cordialement, Gilles.
Bonjour Gilles et merci pour le livre. Pour un fonctionnement correct du CAN intégré au PIC, la durée d'acquisition de l'échantillon doit durer un certain temps, en fait le temps nécessaire au condensateur mémoire de se charger. Le document constructeur (datasheet) du 12F675 indique que ce temps d'acquisition Tad doit être de 1,6 us au minimum. Avec une horloge de 4 MHz, on peut avoir ADCS2:ADCS0 = 001 (Tad = 2 us) ou ADCS2:ADCS0 = 101 (Tad = 4 us). On peut bien sûr adopter un temps d'acquisition plus long mais cela consomme du temps pour rien. Quand on utilise l'horloge interne du PIC, la routine ADC_Init de MikroPascal ajuste automatiquement les 3 bits idoines du registre ANSEL. Si vous utilisez une routine maison, vous devez spécifier manuellement la valeur de ces trois bits.

Pascal A. (mail) - 25/02/2014
Bonjour Rémy, j’ai relevé deux erreurs (à confirmer) dans votre excellent livre :
1) Page 78 : il me semble que la ligne de code PORTA.1 := 0 devrait se trouver en-dessous du end de la deuxième boucle.
2) Page 79 : il me semble que le mot supérieur doit être remplacé par inférieur : "sans que le watchdog ne provoque de reset est un peu supérieur à 2s".
Encore bravo pour votre livre. Bien cordialement.
Bonjour Pascal et merci pour vos compliments, je suis heureux si mon livre vous plaît.
1) le code est juste, mais l'indentation peut laisser penser que la ligne PORTA.1 := 0 fait partie de la seconde boucle while, ce qui n'est pas le cas. Cette ligne n'est exécutée que si on relâche rapidement SW1, c'est-à-dire avant que le watchdog entre en action. Le terme "end" auquel vous faites allusion s'applique à "if" et non "while".
2) Je comprends ce que vous avez compris. En fait, la durée avant activation du watchdog est voisine de 2,3 s, elle est donc un peu supérieure à 2 s. Mais il faut réagir avant ces 2,3 s, c'est là que le terme inférieur devrait être employé.