Objectif : Le but de ce projet est d'utiliser des programmes d'assemblage qui seront intégrés dans l'environnement Arduino C mais également d'être initié à la réalisation d'une entrée et d'une sortie depuis la carte Arduino. L'entrée sera un interrupteur pour démarrer le programme avec une résistance pull-up ou pull-down et la sortie pilotera une LED clignotant un SOS en code Morse. Cela semble compliqué, mais des indices vous sont donnés à chaque étape du processus. Et vous pouvez utiliser la fonction de retard de laboratoire précédente et R16 pour les différents temps de retard.
À l'époque du télégramme et de la radiotélégraphie, avant et même après le codage de la voix, le moyen de communication consistait en un « tapper » ou un interrupteur sophistiqué, utilisant le code Morse, grâce auquel l'expéditeur pouvait taper un message en utilisant des codes longs et courts. durées ou « taps ». À la réception, il y aurait un relais ou une tonalité qui répéterait les coups afin que l'on puisse l'entendre et le traduire en mots. En code Morse, la lettre S est codée avec 3 points courts ou durées et le O est codé avec trois tirets longs ou durées. Le code Morse pour Mayday ou Help est SOS qui ressemble à …---… …---… et ainsi de suite.
Ce laboratoire enverra un SOS en code Morse à une LED lorsqu'un interrupteur est allumé et s'arrêtera après avoir envoyé le SOS complet lorsque l'interrupteur est éteint.
Voici un exemple de ce à quoi cela devrait ressembler : https://www.youtube.com/watch?v=Zsb7stKelq4
Création d'une entrée pour un commutateur. Une opération aussi simple en apparence nécessite une certaine réflexion lorsqu’elle est réalisée sur un microprocesseur.
Voici quelques étapes générales pour effectuer une saisie :
Référencez la section 14 de la fiche technique AVR sur les ports d'E/S. Notez ci-dessous le matériel pour une broche d'E/S dans l'AVR.
Matériel interne pour une broche d'E/S dans l'AVR
Tout ce matériel est nécessaire pour pouvoir configurer la broche comme entrée ou sortie, ainsi que d'autres fonctionnalités telles que les résistances pullup internes, les modes veille et la synchronisation avec l'horloge. Bien entendu, les broches d'E/S ne sont pas simples mais nous ne nous intéresserons pour ce TP qu'à une simple entrée ou sortie. Pour cela, nous avons besoin du registre DDR et du port pour l'entrée ou la sortie que nous utiliserons.
Nous avons vu précédemment comment les sorties étaient configurées pour que la LED du bit 5 du PORTB clignote.
Vous pouvez sélectionner n'importe quelle broche de port disponible pour cela sur votre Arduino, mais vous devez ensuite déterminer son port et son bit.
Sortie : PORTB, registre 5, bit 5, est utilisé en interne pour la LED et est également connecté à un connecteur (broche 13 sur l'UNO), mais ne l'utilisez pas en externe : il n'a pas une capacité de courant suffisante pour piloter deux LED.
• Suggestion : utilisez PORTB, enregistrez 5 bits 4 (broche 12 sur l'UNO) pour la sortie.
Entrée : Il existe de nombreux autres choix que vous pouvez utiliser (sauf ne pas utiliser les broches d'E/S 0 ou 1 car celles-ci sont nécessaires pour communiquer avec l'ordinateur). • Suggestion : PORTB, registre 5 bit 3 (broche 11 sur l'UNO) peut être utilisé comme entrée.
Configuration typique : vous choisissez les broches pour l'entrée et la sortie.
Lecture d'une entrée : pour lire une entrée connaissant le port, vous utiliserez l'instruction IN indiquée ci-dessous et l'adresse des broches du port que vous utilisez. Par exemple, pour lire le PORTB, bit 4 (broche 18 de UNO), vous utiliserez cette instruction pour lire le port.
Boucle:
DANS r17, 0x03 ; //lire les broches PORTB dans le registre 17
Vous devez maintenant sélectionner le bit 4 en lui faisant un AND avec 0x10 pour masquer tous les autres bits. Après cela, cela dépend de votre configuration d'entrée et si vous utilisez un pull-up ou un pull-down. Ici, nous utilisons une résistance pulldown.
Si vous utilisez une résistance Pull-up, la fermeture du commutateur entraînera un 0 sinon c'est un 1, vous pouvez donc faire l'instruction AND puis effectuer une branche si elle est nulle.
ANDI r17, 0x08 ; //ET r17 à 08h
Démarrage BRNE ; // si le commutateur n'est pas fermé (c'est à dire 1) alors revenez en arrière et faites une boucle
Si vous utilisez une résistance pull-down, la fermeture de l'interrupteur donnera un 1, sinon c'est un 0 :
ANDI r17, 0x08 ; //ET r16 à 08h
Début du BREQ ; // si le commutateur n'est pas fermé (c'est à dire 0) alors revenez en arrière et faites une boucle
La création d'une sortie est très similaire à la création d'une entrée. Vous devez définir la broche du port comme sortie. Ensuite, vous pouvez utiliser le CBI ou le SBI pour en faire un zéro ou un un.
Voici quelques étapes générales pour créer une sortie :
Conception du programme Ce TP est très similaire au TP précédent pour la LED clignotante. Ce croquis est joint comme base pour commencer. Il vous suffit de modifier la structure pour créer le SOS selon les règles ci-dessus et d'utiliser une entrée pour le commutateur pour exécuter le SOS et une sortie pour piloter la LED. Utilisez le sous-programme de délai pour configurer différents délais pour les points, les tirets, etc., comme indiqué ci-dessous dans l'encadré.
Consultez le document définissant les relations temporelles et suivez ces règles lors de la conception de votre programme pour le code SOS Morse.