Bonsoir à tous,
Voici une nouvelle technique de mise au point,
l'envoi d'une trame de bits sur oscilloscope. J'ai un oscilloscope analogique de presque 40 ans d'âge sans possibilité de mémorisation et je me suis demandé comment l'utiliser pour afficher des séquences binaires pour la mise au point.
L'image ci-après montre le résultat obtenu, pour le moment avec un programme de test basé sur une instruction
_delay_us, à remplacer par une routine d'interruption pilotée par un timer pour un timing plus précis. La résolution horizontale est de 50 us / division, la résolution verticale est de 2 V / division. La valeur affichée est: 11010000.
Le principe est de commencer par une impulsion à 5 V, ensuite les 1 sont représentés par 3 V et les 0 par 0 V.
L'impulsion de 5 V permet de voir où le nombre affiché commence.
Le trigger de l'oscilloscope est réglé pour se déclencher entre 3V et 5V, si on le règle plus bas, les bits représentés par 3 et 0 V se mélangent. Ainsi le trigger ne se déclenche qu'au début de l'affichage de la valeur.
Il suffit d'une broche du microcontrôleur et 2 résistances: 2.2 K entre la sortie et 5 V, 3.3 K entre la sortie et la masse.
En C, sans librairie Arduino, j'ai défini la broche reliée à l'oscilloscope.
#define OSCILLO _BV(PB1)
Arduino
#define OSCILLO 13
Affichage de l'impulsion initialeConfigurer la broche en sortie.
Écrire un 1.
DDRB |= OSCILLO;
PORTB |= OSCILLO;
Arduino
pinMode (OSCILLO, OUTPUT);
digitalWrite (OSCILLO, HIGH);
Afficher un 0Configurer la broche en sortie.
Ẽcrire un 0.
DDRB |= OSCILLO;
PORTB &= ~OSCILLO;
Arduino
pinMode (OSCILLO, OUTPUT);
digitalWrite (OSCILLO, LOW);
Afficher un 1Broche en entrée, sans résistance pullup interne.
Le diviseur de tension constitué par les résistances maintient la broche à 3.3 / 5.5 de 5 V, soit 3 V.
DDRB &= ~OSCILLO;
Arduino
pinMode (OSCILLO, INPUT);
Cette technique est peut-être moins nécessaire avec un Arduino où les serial.print permettent de tracer l'exécution, mais sur les petits Attiny elle peut s'avérer utile.
Bonne fin de semaine à tous.