Arduino DEL clignotante en pure C
L'IDE Arduino contient un langage simplifié pour développer pour la plateforme Arduino. Ce langage s'appelle Wiring et est une version dialectale simplifiée de C et C++. Les opérations courantes d'entrée et de sortie sont simplifiées, ce qui rend l'environnement idéal pour le prototypage pour les concepteurs et les fabricants.
Mais parfois, vous souhaitez programmer en "vrai" C et utiliser directement la chaîne d'outils AVR. Par exemple, vous pouvez vouloir regarder derrière les scènes ou avoir besoin de programmer une bibliothèque. Il devient alors nécessaire d'utiliser la chaîne d'outils AVR.
Comment programmer une simple DEL clignotante en C pur, c'est ce que je veux montrer dans cet article.
Installation
Afin de pouvoir compiler et exécuter le programme C en code machine AVR, vous devez installer un compilateur croisé, un linker et un uploader pour le microcontrôleur AVR.
Sous Ubuntu Linux, cela se fait en exécutant la commande suivante :
sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude make
Ceci installe tous les outils nécessaires au développement de l'AVR C sur votre machine.
Configuration du matériel Arduino
Le programme C suppose que vous avez un Arduino Uno avec une DEL connectée au port 13.
Cette image Fritzing montre la configuration :
Led.c
#include <avr/io.h>
#define F_CPU 16000000
#define BLINK_DELAY_MS 5000
#include <util/delay.h>
int main (void)
{
// Broche numérique Arduino 13 (broche 5 de PORTB) pour la sortie
DDRB |= 0B100000 ; // PORTB5
while(1) {
// Allumez la DEL
PORTB |= 0B100000 ; // PORTB5
_delay_ms(BLINK_DELAY_MS) ;
// éteint la DEL
PORTB &= ~ 0B100000 ; // PORTB5
_delay_ms(BLINK_DELAY_MS) ;
}
}
Dans cet exemple en C, la DEL s'allume pendant 5000 ms (5 secondes), puis s'éteint à nouveau. Vous devez importer deux fichiers d'en-tête, l'un pour la définition des ports IO et l'autre pour la fonction de la fonction de retard.
Il est important que sous C pur, vous devez calculer la broche exacte sur laquelle vous voulez écrire. Dans notre cas, la broche 13 de la DEL est sur le port B5 (ou en binaire : 0B100000). Vous pouvez trouver le port et les broches brutes dans les schémas Arduino que vous pouvez consulter sur le site Web d'Arduino.
Compilation et téléchargement
Avec le fichier Makefile ci-joint, il devient facile de compiler le fichier C.
Il suffit de l'exécuter :
make
Dans les coulisses, le Makefile appelle le compilateur C de l'AVR (avr-gcc) et convertit le le fichier au format hexadécimal correct que l'uploader peut utiliser. Avant de pouvoir télécharger, vous devez trouver à quel endroit de votre machine l'Arduino Uno est connecté sur votre machine. Le chemin est alors écrit dans le Makefile comme variable ARDUINO_USB.
Une fois que c'est fait, téléchargez le fichier sur votre Arduino Uno avec :
make deploy
L'uploader que nous utilisons dans le Makefile est appelé Avrdude.
Conclusion
La famille Arduino est un excellent terrain de jeu pour le prototypage matériel. Mais vous pouvez plonger plus profondément et programmer l'Ardunio Uno sans l'IDE Arduino en utilisant le langage C d'AVR. J'espère que j'ai pu lever les premiers obstacles dans cette aventure.
Références
- Source du projet DEL en C pur : https://github.com/tderflinger/arduino-blink-purec
- Schémas de l'Arduino Uno : https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf
- Chaîne d'outils AVR : http://nongnu.org/avr-libc
- Merci à Sagar : https://github.com/sagarsp/arduino-blink-c
Pour une meilleure qualité, regardez-le via ce lien : https://www.youtube.com/watch?v=IP4Ikw3KtAU
Publié le
14 oct. 2021