Table des matières:

Premiers pas avec Bascom AVR : 5 étapes
Premiers pas avec Bascom AVR : 5 étapes

Vidéo: Premiers pas avec Bascom AVR : 5 étapes

Vidéo: Premiers pas avec Bascom AVR : 5 étapes
Vidéo: Régler son dvr de vidéo surveillance 2024, Juillet
Anonim
Premiers pas avec Bascom AVR
Premiers pas avec Bascom AVR

Ceci est le début d'une série pour vous apprendre à programmer votre microcontrôleur AVR avec Bascom AVR.

Pourquoi je fais ça.

La plupart des exemples de programmes de cette série peuvent être créés avec Arduino.

Certains plus faciles et d'autres plus difficiles, mais à la fin, les deux fonctionneront sur le même contrôleur.

Mais la manière de programmer est différente dans chaque environnement de développement. Arduino a besoin d'une bibliothèque pour tout sauf les fonctions de base. Bascom fonctionne également avec des bibliothèques, mais je dois rarement en inclure une. Avec Arduino, tous les paramètres spécifiques au matériel sont effectués via les bibliothèques. vous avez très peu d'influence sur la puissance réelle du microcontrôleur. À commencer par les minuteries dont dispose le contrôleur. avec arduino, vous avez à nouveau besoin d'une bibliothèque. si vous avez la minuterie jusqu'à ce qu'elle fonctionne, il se peut qu'une autre bibliothèque entre en collision avec vos paramètres. Chez bascom, vous avez un accès gratuit au matériel complet, y compris le secteur de démarrage occupé par arduino. par exemple, certaines bibliothèques de bascom vous demandent quelle minuterie vous souhaitez utiliser. d'autre part, comme arduino permet de créer très facilement une bibliothèque vous-même, cela en fait naturellement une plate-forme où les nouveaux matériels et capteurs ont généralement une bibliothèque directement. ce qui est souvent associé à de nombreuses recherches chez bascom et les fonctions qu'une bibliothèque devrait normalement assumer doivent ensuite être minutieusement incorporés dans le code du programme. mais bonne nouvelle, la communauté bascom est également très grande, c'est pourquoi il existe une solution pour chaque idée.

Cela dépend donc en partie du projet qui est utilisé pour un environnement de développement et en partie du savoir-faire du programmeur.

mais pourquoi je fais cette série. d'une part, cela permet d'économiser beaucoup d'argent. Je n'ai pas besoin d'acheter une carte Arduino pour chaque projet. Par exemple: Un noname Arduino uno coûte environ 12 € le contrôleur qui s'y trouve ne coûte que 2,5 € avec le minimum de circuits requis pour une fonction stable, il coûte environ 4 €. d'autre part, vous disposez de la sélection complète des puces avr prises en charge. atmegas 8 à 256 et attiny 8 à 2313 et de nombreux types xmega sur lesquels je n'ai aucune expérience. Si vous souhaitez simplement utiliser un servo et un capteur à ultrasons capables de reconnaître une main, par exemple, puis d'ouvrir le couvercle d'une poubelle, vous pouvez utiliser la plus petite puce possible. Il y a donc plusieurs raisons d'apprendre une deuxième langue.

Alors, commençons

Fournitures

Il s'agit d'une liste des pièces minimales requises pour un fonctionnement stable de la puce et de la programmation.

Planche à pain pour les tests

Atmega 8-16PU (mieux vaut en acheter 2 ou 3 si vous les tuez par erreur)

7805 Régulateur de tension 5V

Résistance 10Kohm

Condensateur à film 100nF

Condensateur électrolytique 10µF

Condensateur électrolytique 100µF

quelques fils pour la planche à pain

PC Windows 7/8/8.1/10

Programmeur ISP (j'utiliserai ici l'USBasp, vous pouvez l'acheter chez amazon pour peu d'argent)

Bascom AVR (vous pouvez télécharger ici une DEMO. Toutes les fonctions sont déverrouillées, mais vous ne pouvez écrire du code que jusqu'à une taille de 4 Ko, ce qui est suffisant pour beaucoup de code).

Pièces en option:

LED avec résistances

interrupteurs à poussoir

pièces spécifiques au projet

Étape 1: Installation de Bascom et configuration

Installation de Bascom et configuration
Installation de Bascom et configuration
Installation de Bascom et configuration
Installation de Bascom et configuration
Installation de Bascom et configuration
Installation de Bascom et configuration

Téléchargez le fichier et installez Bascom AVR. Installez toutes les parties de celui-ci, y compris la dernière case à cocher après l'installation.

Après cela, redémarrez votre PC, sinon bascom ne démarrera pas.

Après le redémarrage, démarrez bascom.

Allez dans Options -> Programmer et choisissez USBasp dans la liste, enregistrez les paramètres et fermez Bascom.

Utilisez ce programme pour installer usbasp. Après cela, redémarrez votre PC à nouveau. Connectez maintenant l'USBasp à votre PC et démarrez le gestionnaire de périphériques. USBasp devrait apparaître sur les périphériques libusb.

Stat Bascom à nouveau et créez un nouveau fichier. Enregistrez-le sur votre PC et appuyez sur le bouton F7 de votre clavier.

Le compilateur démarre et compile le programme vide. Vous pouvez maintenant tester la fonctionnalité du programmeur.

Appuyez sur le bouton F4 de votre clavier pour démarrer la fenêtre du programmeur. Allez maintenant dans puce -> identifier pour démarrer une interaction. Les LED de l'USBasp devraient maintenant clignoter brièvement. Vous devriez recevoir un message tel que l'ID de puce FFFFFF n'a pas pu lire le périphérique. C'est un bon signe que le programmeur fonctionne mais il n'a trouvé aucune puce.

Nous pouvons maintenant commencer à construire le premier circuit.

Étape 2: Regardons de plus près la puce

Regardons de plus près la puce
Regardons de plus près la puce

Si vous regardez le brochage de la puce, il semble que la puce n'a aucune similitude avec la carte arduino. Bien sûr, nous utilisons un Atmega8 et sur l'Arduino uno est un Atmega328. Mais le Pinout est presque le même mais la puce de la carte Arduino Uno a plus de fonctions. Voici les noms des broches. VCC et GND sont les broches pour l'alimentation.

AREF et AVCC sont des broches pour la tension de référence et l'alimentation du convertisseur analogique-numérique.

PB 0-7 PC 0-6 PD 0-7 sont des broches d'entrée-sortie à usage général à occupation multiple.

broche de réinitialisation est ce que le nom dit. Pour redémarrer la puce. La ligne au-dessus du nom de réinitialisation signifie la négation. Cela signifie que pour réinitialiser la puce, vous devez la ramener à 0V.

Pour les broches suivantes, séparez les instructables à venir.

RXD TXD sont des broches matérielles pour la communication série UART.

INT0 INT1 sont des broches d'interruption matérielle

XCK /T0 UART Source d'horloge / Minuterie/Compteur0 Source d'horloge

Les broches XTAL/TOSC sont pour un cristal externe jusqu'à 16MHz (différents modèles jusqu'à 20MHz)/Les broches en cristal pour un RTC interne

T1 est similaire à T0

Les broches AIN sont pour le comparateur analogique

ICP1 est similaire à T0/T1

OC1A est la broche de sortie matérielle pour pwm timer1 canal A

Broche de sélection de puce SS/OC2 pour SPI/comme OC1B mais canal B

MOSI MISO SCK/OC2 sont les broches SPI matérielles et les broches pour la programmation/minuterie de sortie PWM2

ADC0 à ADC5 sont les entrées analogiques

SDA SCL sont les broches pour le matériel I2C

La puce normale peut fonctionner de 4, 5V à 5, 5V, l'Atmega 8L peut fonctionner avec une tension beaucoup plus basse.

Vous voyez que même cette puce peut faire plus qu'un Arduino Uno ne semble pouvoir faire. Mais l'Arduino peut le faire aussi, il suffit de le programmer.

Étape 3: Le premier circuit

Le premier circuit
Le premier circuit
Le premier circuit
Le premier circuit

Il est maintenant temps de construire votre premier circuit.

Quel est généralement le premier circuit ? Droit! Faisons clignoter une LED.

La LED est connectée à PB0. La résistance à côté de la puce a 10k Ohms.

La résistance à côté de la LED a 470 Ohms.

Vous pouvez maintenant connecter l'USBasp avec l'Atmega comme indiqué sur l'image.

Mais avant de mettre sous tension, écrivons le programme.

Étape 4: écrivez le premier programme

Écrire le premier programme
Écrire le premier programme

Créez un nouveau fichier dans Bascom et tapez le texte suivant.

$regfile "m8def.dat"

$crystal = 1000000 config portb.0 = sortie do portb.0 = 1 wait 1 portb.0 = 0 wait 1 loop

après cela, compilez-le en appuyant sur F7 sur votre clavier.

Maintenant, nous pouvons programmer la puce en appuyant sur F4. La fenêtre du programmeur apparaît. Il est maintenant temps d'allumer la planche à pain. Vous devez appliquer quelque chose entre 6 et 12 Volts.

Allez maintenant dans puce -> programme automatique. Si la fenêtre du programmateur se ferme automatiquement, la programmation a réussi.

La LED doit clignoter à une fréquence d'une seconde.

Maintenant, regardez de plus près le programme pour comprendre la syntaxe.

$regfile "m8def.dat"

$cristal = 1000000

avec $regfile nous indiquons au compilateur le type de puce utilisée le nom de la puce Arduino serait "m328pdef.dat"

avec $crystal, nous lui indiquons la vitesse du processeur d'environ 1MHz.

config portb.0 = Sortie

cela signifie que PB0 devrait agir comme sortie.

Soit dit en passant, l'abréviation PB0 signifie port B bit 0. La puce est divisée en plusieurs ports. Chaque port reçoit une lettre pour une identification claire. et chaque portpin un peu de 0 à 7. Par exemple, je peux écrire un octet complet dans le registre de sortie du port, qui sera émis via les broches de port individuelles.

faire

boucle

C'est ce que signifie l'instruction void loop dans Arduino. Tout entre ces deux commandes se répétera indéfiniment. (avec quelques exceptions mais plus tard plus à ce sujet)

Portb.0 = 1

attendre 1 portb.0 = 0 attendre 1

Ici, nous générons le clignotement de la led.

Portb.0 = 1 indique à la puce de commuter la sortie PB0 à 5V

la commande wait 1 laisse la puce attendre une seconde. Si vous voulez changer la led plus rapidement, vous devez remplacer la commande wait par waitms now, vous pouvez entrer un certain temps maintenant en millisecondes, par exemple. waitms 500. (waitus signifie attendre en nanosecondes)

Portb.0 = 0 indique à la puce de commuter la sortie PB0 sur 0V.

Étape 5: ajouter un bouton pour utiliser les entrées

Ajouter un bouton pour utiliser les entrées
Ajouter un bouton pour utiliser les entrées

Maintenant, nous ajoutons un bouton pour allumer la led si le bouton est enfoncé.

Insérez le bouton comme indiqué sur l'image.

tapez maintenant le programme suivant.

$regfile "m8def.dat"

$crystal = 1000000 config portb.0 = sortie config portd.7 = entrée Portd.7 = 1 do if pind.7 = 0 then portb.0 = 1 else portb.0 = 0 loop

Si vous téléchargez ce programme sur la puce, la LED ne s'allume que lorsque le bouton est enfoncé. Mais pourquoi?

le programme démarre à l'identique comme le précédent jusqu'à

config portd.7 = entrée. Cela signifie que la broche PD7 connectée au bouton agit comme une entrée.

Portd.7 = 1 ne fait pas passer la broche à l'état haut, mais il active la résistance de rappel interne de l'Atmega.

L'instruction if a l'air un peu bizarre si vous êtes habitué à arduino.

si vous utilisez l'instruction if, vous devez utiliser l'instruction "then". Dans cet exemple, l'instruction if est utilisée pour les opérations de commande unique. Si vous souhaitez utiliser plus de commandes, vous devez l'écrire comme ceci.

si pind.7=0 alors

portb.0=1 un certain code un certain code un autre code portb.0 = 0 end if

pour cette utilisation de l'instruction if, vous devez utiliser l'instruction "end if" à la fin.

ce qui est encore important. Peut-être l'avez-vous déjà vu. les entrées ne sont pas interrogées avec portx.x, mais avec pinx.x. Vous pouvez facilement vous en souvenir. Les sorties ont le "o" (port) dans le mot et les entrées ont le "i" (broche).

Maintenant, c'est à votre tour de jouer un peu.

Mon prochain instructable arrivera bientôt (instructions standard comme while, select case, for et variables.)

Si vous aimez mon instructable et que vous voulez plus, dites-le moi dans les commentaires.

Conseillé: