Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 33

microcontrôleur AVR



  1. #1
    0Sekful

    microcontrôleur AVR

    Bonjour à tous.

    Semi-débutant en électronique, je travaille depuis un certain temps maintenant avec ma platine arduino, j'adore ça pour sa simplicité notamment.
    Puis est venu un temps où j'ai voulu rendre mes montages portables, j'ai donc découvert le monde des uC attiny, très simple à programmer ( directement avec le logiciel arduino ) et programmable avec ma carte arduino ( en faisant quelques connexions )
    Mais voilà, le point négatif est qu'on est très vite limité avec leur 5 broche i/o ( plus pour les 2313 mais bref ), j'ai donc eu l'idée d'acheter quelques uC atmega 8 pour avoir plus de broche utilisables.
    Le problème, c'est que ceux-ci ne se programment pas aussi facilement, j'ai trouvé quelques tutos ( en anglais ), et cela reste très vagues, différents logiciels sont utilisés selon les tutos, et pour finir, ils se programment en c++, langage que je connais absolument pas, j'ai exclusivement utilisé le logiciel fourni par arduino pour la programmation d'uC (et j'ai fais du C# dans ma jeunesse).

    Comme les atmega 8 ne se programment pas avec l'arduino, j'ai acheté ce programmateur qui programme plus de 50 AVR donc l'atmega 8. Le truc, c'est que je ne sais pas comment l'utiliser .

    Ou je veux en venir, c'est que j'aimerais programmer mes atmega avec le langage arduino, c'est à dire sans c++. tout d'abord est-ce possible? j'ai entendu parler de bootloader, mais encore une fois je sèche.

    Si c'est possible, comment puis-je utiliser mon programmateur pour les programmer à la manière d'un arduino ( je ne parle pas des librairies, seulement d'utiliser des i/o en digital et analogique pour commencerpar exemple) ? quel logiciel utiliser? quel brochage? etcc.. Merci d'avance

    -----

    Dernière modification par 0Sekful ; 01/05/2014 à 19h34.

  2. Publicité
  3. #2
    Yoruk

    Re : microcontrôleur AVR

    Salut,

    Si tu nous indiquait le programmateur que tu as acheté...

    Le bootloader, tu peux oublier pour le moment. C'est un petit morceau de code qui permet, dans le cas de l'atmega 328 de la arduino, que le micro se programme sur lui même, sans programmateur externe.

    J'ai commencé aussi à flasher des attiny (2313 et 85 sont mes préférés) avec l'IDE arduino. Depuis, j'ai acheté un programmateur générique, et je travaille avec Atmel Studio, disponible chez Atmel, qui permet de programmer tout ce petit monde. La programmation se fait en C ou en assembleur, mais le C n'est pas insurmontable. Effectivement, les bibliothèques ne sont pas les mêmes, mais le langage reste compréhensible. Pour le brochage, mon programmateur à un port ICSP, qui est compatible avec tout les micros. J'ai réalisé de petites cartes filles qui contiennent le port ICSP sur lequel je viens brancher le programmateur.

    Après si tu veux rester en Arduino, c'est sans doute possible.
    La robotique, c'est fantastique !

  4. #3
    0Sekful

    Re : microcontrôleur AVR

    Oui j'ai oublié de mettre le lien, voici la bête : http://www.dx.com/p/usbasp-usbisp-do...e-black-265121
    Je ne cherche pas à éviter le C à tout prix ( et l'assembleur, kézako? ), mais je ne veux pas apprendre complètement le langage, uniquement ce qui concernerait mes uC, et je ne sais pas ou trouver ce genre de tuto.
    puis j'ai installé Atmel Studio, mais je ne comprends pas tout avec les extensions à installer etc.. moi qui connais uniquement la simplicité de l'arduino
    Sais-tu utiliser ce programmateur ?

  5. #4
    Fred_du_92

    Re : microcontrôleur AVR

    L'Arduino aurait très bien pu programmer ton atmega8 en mode ISP. Je crois même qu'il y a un sketch pour ça dans les exemples fournis avec Arduino.

    Quant aux différences AtTiny-AtMega, elles sont minimes. C'est le même coeur, la même architecture, les mêmes langages, les mêmes outils. Les seules différences sont que les Atmega disposent d'une instruction de multiplication hardware et sont mieux lotis en périphériques.
    Dernière modification par Fred_du_92 ; 01/05/2014 à 21h13.

  6. #5
    r4ph

    Re : microcontrôleur AVR

    Salut,

    quand tu connais le C++, le C n'est pas une si grosse affaire. Bien sûr, partir avec un autre environnement que l'IDE Arduino et sa foulitude de fonctions destinées a ne pas avoir besoin de connaitre le hrdware d'un micro c'est une autre affaire.

    Toutefois, (je ne l'ai jamais essayé), l'environnement Arduino est capable de programmer les cartes Arduinos à l'aide d'un programmateur dont l'USBasp.... C'est sur, il ne va probablement pas reconnaitre tous les uC Atmel, mais on voit le 8 dans la liste. Il faudra juste câbler ton uC comme sur ladite carte (je pense notamment au quartz) et utiliser le port ICSP (in circuit serial programming) pour la programmation. Cela te permettra d'utiliser toutes les fonctions de l'IDE Arduino sur un uC sans bootloader....

    Qu'est ce qu'un bootloader???? Google pourra surement t'aider, mais en 2 mots, c'est un bout de code flashé (à l'aide d'un programmateur) dans le uC. Au reset (ou a la mise sous tension) ce code checke le port série du uC pendant un laps de temps, si il reçoit des données qu'il identifie comme du code venant d'un IDE, il va aller écrire ce code dans la mémoire flash du uC. Et voila ta programmation Arduino (ou autre) est maintenant dans le uC et ce, sans utiliser de programmateur dédié....

    Essaie, tu verra par toi-même!

    Edit: A voir, Fred pense la même chose...
    Dernière modification par r4ph ; 01/05/2014 à 21h35.

  7. A voir en vidéo sur Futura
  8. #6
    0Sekful

    Re : microcontrôleur AVR

    J'apprends aujourd'hui que je peux programmer mes uC avec ma carte arduino. Je suis en train d'appliquer ce tuto(http://arduino.cc/en/Tutorial/ArduinoISP), seul soucis, je n'arrive pas à lire la valeur de l'oscillateur sur l'image, et elle n'est notée nulle part.
    Je vais essayer avec un 8Mhz au hasard en attendant une réponse.
    En tout cas si ça fonctionne, j'aurai résolu mon problème de programmation d'avr puisque je les programmerai depuis l'IDE arduino directement si j'ai bien compris !

  9. Publicité
  10. #7
    0Sekful

    Re : microcontrôleur AVR

    Je viens de terminer la réalisation du tuto et,.. ça fontionne!
    J'ai fait les connexions demandées, j'ai "gravé la séquence d'initialisation" comme demandé ( ça sert à quoi au fait? ), puis j'ai fais mon petit programme qui fait clignoter une LED, elle clignote sous mes yeux en ce moment. ( et tout ça depuis l'IDE arduino )
    Maintenant je vois que l'atmega dispose de 2 GND, d'un VCC et d'un AVCC. à quoi servent les 2 GND, pourquoi ne sont-ils pas pontés? et le AVCC? quand j'alimenterai mon uC je devrai toujours connecté les 2 GND et les 2 VCC entre eux?
    aussi j'ai remarqué qu'en enlevant les connexions de l'oscillateur le programme s'arrête, comme si il était mis en pause, et redémarre dès que je remet le fil sur l'oscillateur, les atmega ont-ils systématiquement besoin de cet oscillateur externe et de ces 2 condensateurs pour fonctionner?
    (j'ai utilisé un 8MHz comme j'avais dis, j'ai eu de la chance ou ça fonctionne avec une grande partie des oscillateurs, lequel choisir?? mes Condos sont des 20 pico)
    Dernière modification par 0Sekful ; 03/05/2014 à 09h40.

  11. #8
    Yoruk

    Re : microcontrôleur AVR

    Si tu enlèves l'oscillateur, le micro s'arrête... C'est comme si tu interrompait le fonctionnement d'un cœur sur un organisme vient. Non, tu peux utiliser un oscillateur interne si tu le souhaites.

    La séquence d'initialisation, je vois pas trop de quoi tu parles. Sur le atmega de la arduino ? C'est le bout de programme qui va la transformer en programmateur.
    La robotique, c'est fantastique !

  12. #9
    0Sekful

    Re : microcontrôleur AVR

    Un oscillateur interne, comment on fait ça?
    et pour les GND et VCC, il faut les ponter alors?

  13. #10
    Yoruk

    Re : microcontrôleur AVR

    Je ne sais pas trop comment il faut faire en passant avec l'IDE arduino... Quand tu sélectionnes le chip dans la liste, certains sont proposés à différentes vitesses (@1 MHz, @8 MHz....)

    Oui, il arrive que certains chips possèdent plusieurs VCCs et GNDs. Les ponter ne peut être qu'une bonne idée. (Après je ne sais pas trop pourquoi il y en a plein... Pour simplifier le routage ?)
    La robotique, c'est fantastique !

  14. #11
    0Sekful

    Re : microcontrôleur AVR

    Voici la liste proposée :

    list.png

  15. #12
    PA5CAL

    Re : microcontrôleur AVR

    Citation Envoyé par 0Sekful Voir le message
    j'ai "gravé la séquence d'initialisation" comme demandé ( ça sert à quoi au fait? )
    Il s'agit du bootloader, l'amorce du programme qui est programmée séparément du programme principal, et qui sert dans le cas de l'Arduino à reprogrammer le programme principal seul, et plus simplement.

    Citation Envoyé par 0Sekful Voir le message
    Maintenant je vois que l'atmega dispose de 2 GND, d'un VCC et d'un AVCC. à quoi servent les 2 GND, pourquoi ne sont-ils pas pontés? et le AVCC? quand j'alimenterai mon uC je devrai toujours connecté les 2 GND et les 2 VCC entre eux?
    Il ne faut pas confondre l'alimentation des circuits numériques (VCC) avec l'alimentation des circuits analogiques (AVCC), même si c'est la même valeur de tension qu'on applique sur l'une et l'autre. En effet, d'un côté, le fonctionnement des circuits numériques provoque des pics de courant, et génère de fortes perturbations sur l'alimentation VCC. De l'autre côté, les circuits analogiques réclament une alimentation AVCC exempte de perturbations afin de garantir autant que possible l'exactitude des résultats produits. Il est important de faire en sorte que VCC réponde aux appels de courant des circuits du µC et que AVCC soit suffisamment stabilisée et filtrée.

    Pour maximiser la précision des circuits analogiques, il est nécessaire de produire séparément les deux alimentations. Mais si la précision n'est pas importante, alors on peut relier directement les deux alimentations ensemble.

    Il y a deux GND, car chacune accompagne son pôle positif d'alimentation. Même si ces deux entrées sont électriquement reliées à l'intérieur du µC, il ne faut pas perdre de vue que l'électricité est toujours transportée dans deux fils (un pour l'aller, un pour le retour), et que l'émission et la réception de perturbations électromagnétiques est d'autant plus grande que la surface entre ces fils est importante. Pour des raisons de CEM (compatibilité électromagnétique), sur le PCB le parcours de la piste d'alimentation positive (VCC ou AVCC) doit donc être tenu aussi près que possible de celui de la piste d'alimentation négative correspondante (GND), et accompagné d'un condensateur de découplage soudé au plus près des pattes du µC.

    Sur les µC ATmega, les entrées de l'alimentation analogique et de l'alimentation numérique sont situéss à l'opposé l'une de l'autre sur la puce. D'un côté on a AVCC, VREF et GND (analogique), et de l'autre VCC et GND (numérique).

    Citation Envoyé par 0Sekful Voir le message
    j'ai remarqué qu'en enlevant les connexions de l'oscillateur le programme s'arrête, comme si il était mis en pause, et redémarre dès que je remet le fil sur l'oscillateur, les atmega ont-ils systématiquement besoin de cet oscillateur externe et de ces 2 condensateurs pour fonctionner?
    Un oscillateur est obligatoire pour faire tourner le µC.

    En revanche, il n'est pas nécessaire d'avoir recours à un oscillateur ou à un quartz extérieur, car il existe déjà un oscillateur à l'intérieur du µC, mais il est limité en fréquence et en précision.

    Le choix de l'oscillateur utilisé est fixé par la programmation des fuses de configuration, qui est réalisée indépendamment de la programmation du programme principal.

    Citation Envoyé par 0Sekful Voir le message
    j'ai utilisé un 8MHz comme j'avais dis, j'ai eu de la chance ou ça fonctionne avec une grande partie des oscillateurs, lequel choisir?? mes Condos sont des 20 pico
    C'est l'application visée qui devrait déterminer la fréquence du quartz choisi, en respectant les limitations spécifiées par le constructeur du µC (la fréquence maximale dépend de la tension d'alimentation).

    Les caractéristiques de l'oscillateur, du quartz et des condensateurs sont liées, et doivent se conformer aux spécifications du constructeur. En la matière, on ne peut pas faire n'importe quoi, sous peine de s'exposer à un mauvais fonctionnement.


    Compte tenu des questions que tu poses, je devine :
    - que tu n'as pas lu la datasheet du µC (i.e. le document de référence du constructeur), dans laquelle figure déjà la plupart des réponses. Il est impératif de commencer par là ;
    - que tu présentes des lacunes importantes en électronique numérique, et dans les µC en particulier. Je ne saurais trop te conseiller de lire des cours sur ces sujets avant d'aller plus avant, afin de t'éviter par la suite d'inutiles déboires.
    Dernière modification par PA5CAL ; 03/05/2014 à 11h24.

  16. Publicité
  17. #13
    0Sekful

    Re : microcontrôleur AVR

    Tout d'abord, merci Pascal pour cette réponse plus que complète, tu as répondu à la plupart de mes questions, et même appris d'autres choses.
    Le datasheet, ce document de 300 pages en anglais avec des graphes? j'avoue qu'il m'effraie un peu.
    Tu devines juste également pour les lacunes,je ne fais aucune formation dans l'électronique, j'en fais chez moi depuis 1 ans et j'essaie d'apprendre comme je peux avec le matériel dont je dispose.
    Puisque tu as l'air de bien t'y connaître, oserais-je te demander si tu as une idée pour programmer mes uC en utilisant l'horloge interne par l'IDE arduino?
    Dernière modification par 0Sekful ; 03/05/2014 à 11h38.

  18. #14
    0Sekful

    Re : microcontrôleur AVR

    Et est-ce normal que l'on doive graver la séquence avant chaque upload de programme? si je ne le fais pas j'ai un erreur : avrdude: verification error, first mismatch

  19. #15
    0Sekful

    Re : microcontrôleur AVR

    j'ai appliqué dans mon code une période T de 20 secondes pour le clignotement de ma LED,
    avec un oscillateur 8MHz je mesure T = 40s, avec un 20MHz, je mesure T = 16s.
    pourquoi ce décalage entre mon code et la réalité?

  20. #16
    Fred_du_92

    Re : microcontrôleur AVR

    Citation Envoyé par 0Sekful Voir le message
    j'ai appliqué dans mon code une période T de 20 secondes pour le clignotement de ma LED,
    avec un oscillateur 8MHz je mesure T = 40s, avec un 20MHz, je mesure T = 16s.
    pourquoi ce décalage entre mon code et la réalité?
    Ton micro ne sait pas lui-même à quelle vitesse il fonctionne. Pour calculer les délais et autres réglages de timer, tu dois régler une constante dans ton programme qui indique la fréquence (en Hertz).

    De mémoire, c'est une ligne du style
    Code:
    #define XTAL 16000000
    Vu les temps que tu constates, c'est que tu n'as pas changé cette constante.

  21. #17
    0Sekful

    Re : microcontrôleur AVR

    J'ai essayé les 2 formes suivantes :
    #define XTAL 16000000
    #define XTAL 16E6

    Malheureusement les valeurs chronométrées sont différentes de celle que j'attends. 16 secondes de T au lieu de 20s

    voici le code, bien que je doute que ça serve:

    #define XTAL 16000000
    int LED = 9;

    void setup()
    {
    pinMode(LED, OUTPUT);
    }

    void loop(){
    digitalWrite(LED, HIGH);
    delay(10000);
    digitalWrite(LED, LOW);
    delay(10000);

    }

    Sinon personne ne sait comment utiliser l'horloge interne? ( Je suis toujours sous l'IDE arduino )
    Dernière modification par 0Sekful ; 03/05/2014 à 17h50.

  22. #18
    adrien4607

    Re : microcontrôleur AVR

    Petite incrustation de ma part
    Si tu veux programmer ton atmega8 avec ton USBASP, il te faut :
    - l'usbasp et ces driver
    -WinAVR
    -AVR Burn-O-Mat
    -Atmel Studio

    Si tu as du mal à configurer AVR Burn-O-Mat voici ma configuration
    1472.jpg

    Et un bon petit tuto en Anglais mais très compréhensible même si on ne connais pas trop l'anglais http://iamsuhasm.wordpress.com/tutsp...-gcc-tutorial/

    Voici un exemple de code :

    Code:
    #define F_CPU 16000000UL //Fréquence horloge à 16Mhz
    #include <avr/io.h> //Inclus les entrée sortie
    #include <util/delay.h> //Inclus la "temporisation" 
    
    int main(void)
    {
    	DDRB |= 0x01; //Configure PB0 (Pin 14) en sortie
    	while(1)
    	{
    		PORTB |= 0x01; //Met la pin 14 à 1
    		_delay_ms(500);
    		PORTB &= ~(0x01); //Met la pin 14 à 0
    		/*Attention il est fortement dé-conseil de faire :
    		PORTB = 0x01;
    		et
    		PORTB = 0x00;
    		Car se serais tous les PINs 14 à 19 qui changerais d’état pour les pin en sortie
    		et les résistance pull-up qui serons activée ou désactivée pour les pins en entrée
    		*/
    	}
    }

    Sinon si tu veux juste rendre plus transportable ton arduino, tu peux toujours le programmer pour ensuite enlever le µc et le câbler sur se que tu veux
    Atmega168PinMap2.png


    Edit :
    Je crois que si tu n'as pas changé (ou l'IDE Arduino) les "fuse" de ton µc, il devrais automatiquement être configurer pour fonctionner avec l'horloge interne


    Bonne continuation
    Dernière modification par adrien4607 ; 03/05/2014 à 18h44.

  23. Publicité
  24. #19
    0Sekful

    Re : microcontrôleur AVR

    Toute incrustation est bonne à prendre
    Merci bien pour le tuto du programmateur. (bien que je serai content de régler ceci avec mon arduino maintenant que je suis à 2 doigts de mon but, mais je met de côté ) En effet, je cherche à avoir une sorte d'arduino transportable.
    quand je tente de programmer mon uC sans oscillateur, ce message d'erreur s'affiche:
    avrdue : Yikes! invalid device signature
    double check connexions and try again, or use -F to override this check.

    Mes notions d'anglais me font comprendre que d'utiliser "-F" permet d'outrepasser le check de l'oscillateur? cela veut-il dire qu'il va utiliser l'interne? Comment utiliser "-F"? Quelques explciations? Merci

  25. #20
    adrien4607

    Re : microcontrôleur AVR

    Si les fuses ne sont pas bien configurer, il faut les configurer (en espérent que l'ide arduino ne les configure pas), pour cella il faut le datasheet et on peut voir à la page 26 la config pour pouvoir configurer l'oscillateur.
    A confirmer mes voici la configuration que tu devrais avoir sur AVR Burn-O-Mat pour une fréquence interne de 1Mhz
    0001.PNG
    0002.PNG
    Dernière modification par adrien4607 ; 03/05/2014 à 19h08.

  26. #21
    0Sekful

    Re : microcontrôleur AVR

    Si j'ai bien compris, pour utiliser les fuses je dois impérativement passer par le programmateur.
    Est-ce que je peux configurer les fuses avec le programmateur et continuer de transférer mon code par l'IDE arduino ? ou dois-je tout faire grace au progammateur? ça devient compliqué là pour une histoire d'horloge..

  27. #22
    0Sekful

    Re : microcontrôleur AVR

    Car je vois que l'IDE arduino peut également utiliser l'USBAsp en tant que programmateur, mais quand je le sélectionne et que je branche mon programmateur, je n'arrive pas à choisir les COM 3 (option grisée, rien à faire)

  28. #23
    0Sekful

    Re : microcontrôleur AVR

    Le driver est pourtant bien installé dans mon gestionnaire de périphériques.

  29. #24
    adrien4607

    Re : microcontrôleur AVR

    Dans l'ide Arduino,de se que je sais, l'USBASP ne sert qu'à graver le bootloader de l'arduino (se qui permet d'utiliser le port série pour programmer la bête), Pour configurer les fuse je ne pensse pas que se sois possible avec l'ide Arduino et via le port série, donc passage de l'usbasp obligatoire


    Maintenant comme je l'ai déja dis, tu peux tous coder en arduino et programmer ton arduino pour ensuite enlever l'atmega et le mettre dans le circuit que tu veux, au post #18 il y a une image qui te montre le détaille des pins de l'atmega328 et leurs nom sur l'arduino


    Edit : /!\ L'usbasp n'utilise pas de port série (sauf peut-être sous certaine version qui pourais inclurle un convertisseur USB -> Port série)
    Dernière modification par adrien4607 ; 04/05/2014 à 15h35.

  30. Publicité
  31. #25
    0Sekful

    Re : microcontrôleur AVR

    Oui j'ai bien lu ton post #18 et c'est vrai que c'est totalement ce que je recherche, les atmega c'est juste pour en avoir plusieurs car je bricole plusieurs montages à la fois de temps en temps, mais merci pour l'idée!
    Qui dit USBASP dit langage C, je crois que le plus simple c'est que je m'attarde pour apprendre ce dont j'ai besoin pour le langage ( pour commencer au moins ).
    J'ai téléchargé un blink.hex pour voir si je réussis à la transférer correctement pour commencer.
    Donc j'ai fais les connexions suivant les 2 images suivantes avec des fils à breadboard.
    usbasp_pinout.jpg
    atmega8_pinout_lrg.gif

    Puis je vais dans AVR8 Burn-O-Mat V2, je règle les fuses selon les options que tu m'as proposé, je choisis mon fichier hex ( tout ça dans la zone flash ) et je n'ai plus qu'à brancher le programmateur et presser Write?

    Le problème c'est que dès que j'essaie d'écrire les fuses ou le programme, j'ai ce même message d'erreur : Cannot run program "C:\WinAVR\bin\avrdude.exe ": CreateProcess error=2, the system cannot find the file specified
    Je fais quoi de faux?

  32. #26
    0Sekful

    Re : microcontrôleur AVR

    Comme tel :
    Untitled.png

  33. #27
    adrien4607

    Re : microcontrôleur AVR

    Ou as tu installer WinAVR ?
    Car il faut mettre son emplacement !

  34. #28
    0Sekful

    Re : microcontrôleur AVR

    Je viens de modifier le directoire vers mon avrdude et le message d'erreur ne s'affiche plus. Maintenant quand je presse Write plus rien ne se passe.

  35. #29
    0Sekful

    Re : microcontrôleur AVR

    Et quand j'essaie d'écrire les fuses:

    2222.png

  36. #30
    adrien4607

    Re : microcontrôleur AVR

    Dans les configuration tu as surement oublier de mettre usb dant port ( post #18 )

Sur le même thème :

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Choix d'un microcontroleur / carte à microcontroleur
    Par bisou10 dans le forum Électronique
    Réponses: 29
    Dernier message: 25/10/2013, 14h33
  2. Microcontroleur et USB
    Par Cyrjam dans le forum Électronique
    Réponses: 2
    Dernier message: 17/10/2011, 12h13
  3. Microcontroleur à CNA
    Par Ferdaousnina dans le forum Électronique
    Réponses: 20
    Dernier message: 17/03/2011, 11h27
  4. microcontroleur
    Par jeremppe dans le forum Électronique
    Réponses: 6
    Dernier message: 04/05/2009, 21h33
  5. MicroControleur PIC
    Par Xblade71 dans le forum Électronique
    Réponses: 9
    Dernier message: 01/10/2008, 18h15