Étape 12 : Votre premier programme
Comme pour l’ensemble de la programmation, permet de faire une demande de base « hello world » juste pour s’assurer que tout fonctionne et que l’AVR est mis en place ok.On ne plaisante pas avec les horloges externes, nous allons juste faire un clignotement de la LED sur et en dehors à intervalles réguliers. Le code est joint ci-dessous et est appelé « led_blinker.c », est également dans le dossier de la bibliothèque de délai précis, que nous avons besoin pour ce projet et un makefile. Vous devez modifier votre makefile pour qu’ils correspondent à la puce que vous utilisez - si vous n’avez pas, il ne fonctionne pas quand vous le télécharger !
Jetons un oeil sur le code puis :
#include « adelay.h »
#include < avr/io.h >
Tout d’abord, nous déclarons quels en-têtes/bibliothèques que nous utilisons. Tout ce dont vous avez besoin pour cela est l’AVR/sortie Bibliothèque et la bibliothèque de délai précis.
IO init
Sub init_io(void)
{
Toutes les sorties sur
DDRC = 0XFF ;
}
Cette fonction est appelée au début du programme, il prend sans qu’une entrée et ne renvoie aucune valeur, mais il met en place la puce prêt pour les opérations d’entrée et de sortie. DDDR désigne le registre de la direction, dans ce cas, nous définissons la valeur hexadécimal 0xFF tend, en binaire, 1111 1111. Cela affecte toutes les quilles sur Port C à être sorties. Il peut sembler étrange d’avoir juste une commande à l’intérieur d’une fonction, mais cela va grossir que nous ajoutons plus de code.
int main (void)
{
init_io() ;
while(1)
{
PORTC ^ = (1 << 1) ;
PORTC ^ = (1 << 2) ;
Delay_ms(1000) ;
}
Return 1 ;
}
La fonction principale est vraiment simple, tout d’abord, nous appelons la fonction init pour obtenir tout mis en place. Ensuite, nous entrons dans une boucle infinie (AVRs ne devraient jamais quitter cette fonction principale). La fonction suivante utilise des opérateurs de bits, si vous avez l’intention de faire aucune programmation pour les périphériques embarqués, vous devriez obtenir familier avec cela. Un bon tutoriel est ici:. Que fait le code, à la rigueur, c’est alterne le sur off État pour Pin 1 et 2 sur Port C.
Pour certaines raison instructables formats ^ = dans un exposant parfois, alors excuses. Il n’est pas aussi aimé le < et > autour comprend (je suppose qu’il pense que c’est une balise html de voyous).
La fonction Delay_ms(1000) rend le programme en pause pendant 1000ms (ou une seconde), puis continue.
Ainsi, il devrait être assez évident où cela va, il y a une boucle infinie (comme while(1) est toujours vrai) et chaque fois que la boucle effectue une itération, il active/désactive le code pin et retarde une seconde, ce qui nous donne une belle clignotant de 1Hz.
Utiliser le makefile ci-dessous, mais renommer en « makefile » abord.
Ensuite nous envoyer cela au programmeur et téléchargez-le !