A savoir avant de commencer

Avant de commencer à programmer le microcontrôleur, il ya quelques notions de base à bien avoir en tête. Ces notions sont abordées dans la page de cours sur la programmation qui sera prochainement en ligne.

Ecrire un premier programme

 
Récupérer l'archive bumper.c.txt (Download en bas de la page), renommez-le en bumper.c. Ce fichier écrit en langage C est incomplet. Il faut le compléter de manière à tester le fonctionnement d'un bumper relié à la carte. Lisez bien ce qui suit avant de commencer.
 
L'entête du programme contient les fichiers annexes au fonctionnement du programme bumper(ces fichiers annexes sont inclus dans le programme grâce à #include). Ces fichiers contiennent des constantes ou des fonctions nécessaires au fonctionnement du programme.
 
L'entête contient également des définitions de constantes :
    - exemple : #define LED_RED PD7 permet d'utiliser LED_RED dans tout le code à la place de PD7 pour plus de clarté. Il s'agit uniquement d'une substitution syntaxique.
 
La fonction principale du programme qui se lance à l'execution est la fonction main(). On appellera dans cette fonction les autres fonctions définies dans le fichier pour effectuer ce que doit réaliser le programme.
 
Il y a deux fonctions à compléter en dehors de la fonction main() pour réaliser ce programme :
    - la fonction init_led() configure LED_RED et LED_BLUE en sortie. Elle doit permettre de commander la sortie par un niveau logique 0 ou 1 sur la PIN.
    - la fonction init_interruptor() configure les pins INTERRUPTOR0 et INTERRUPTOR1 en entrée. Cette fois-ci on va relever l'état des pins et non imposer leur état.
 
La fonction main() doit donc utiliser ces deux fonctions pour configurer les entrées et sorties puis être capable de déceler lorsqu'un bumper est actionné. On écrit donc une boucle dite "d'attente active" qui permet de vérifier l'état des bumpers (appuyés ou relachés) en permanence et de réaliser l'action désirée en réaction, par exemple allumer une LED.
 

Aide :

 
Pour configurer une PIN d'un port donné (A,B,C ou D) en entrée ou en sortie, il faut aller dans le registre adéquat, par exemple le port DDRX pour le port X (cf p81 de la data sheet). Dans tous les cas quand vous avez un doute, vous pouvez toujours regarder la datasheet. Pour la configuration d'une pin en entrée ou en sortie il faut aller voir dans la datasheet s'il faut mettre un 1 ou un 0 dans la datasheet.
 
Opérateur OU logique : le symbole |= permet de faire un OU logique avec soi-même. C'est un opérateur très utile pour mettre un bit à 1 sans changer les autres bits du nombre!
 
Pour lire l'état d'une PIN il faut aller lire le registre PINXY pour la PIN Y du port X. Mais c'est aussi marqué dans la datasheet smile