De l'Arduino au langage C standard avec AVR Studio - Page 9
Discussion fermée
Page 9 sur 21 PremièrePremière 9 DernièreDernière
Affichage des résultats 241 à 270 sur 614

De l'Arduino au langage C standard avec AVR Studio



  1. #241
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio


    ------

    Hello Mourad

    Mon problème de port semble réglé ce matin. Peut-être qu'hier j'étais un peu fatigué et que je faisais tout de travers.

    Mes tests de ce matin m'ont permis de découvrir qu'avec la carte Arduino et son branchement ordinaire par l'USB, on peut non seulement flasher un fichier hex en utilisant AVRdude (soit depuis Studio6 comme external tool, soit avec l'aide de AVRDUDESS, soit encore en ligne de commande pour les linuxiens) mais aussi utiliser un programme de Terminal sans modifier la connexion USB.

    Jusqu'à aujourd'hui, je croyais que pour brancher un Terminal il fallait nécessairement passer par les lignes Rx/Tx et un adaptateur USB-->USART TTL.

    Pour passer du Terminal à la programmation, la seule précaution à prendre est de relâcher la liaison COM du Terminal. Dans le Terminal de Bray, il suffit de cliquer sur le bouton "Disconnect".

    @laveplusblanc
    Merci pour toutes les aides précieuses que tu nous apportes.

    @Gégé
    Bonnes vacances.
    Pour le cours de Lausanne, j'ai obtenu 99% mais je suis loin d'avoir assimilé tout ce qui a été dit au cours. J'ai tout enregistré, pour pouvoir revoir certaines parties plus dures.

    -----

  2. #242
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello les amis

    J'adresse ici une question à ceux qui connaissent la programmation en C des AVR.

    Le petit programme d'USART que j'ai proposé marche bien mais on ne fait pas encore grand-chose avec ça.
    En-dehors d'une aide au debugging de programme, les µC ont souvent des informations utiles à transmettre à l'utilisateur. Par exemple, il serait utile de disposer d'une fonction du genre print ("la température est de ",T,"°C",ctrl_R) avec T étant une variable provenant de la lecture d'une sonde thermique et ctrl_R représentant un carriage return.

    Ma question est la suivante. Comment implémenter ce type de fonction ? Faut-il la construire soi-même ? Est-ce possible ? Vaut-il mieux utiliser les fonctions STDIN et STDOUT de AVR-libc vers l'USART comme expliqué sur ce site ?

    J'ai essayé de lire le chapitre stdio.h de AVR-libc mais c'est totalement incompréhensible pour un débutant comme moi.

  3. #243
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Jean-Marie45 Voir le message
    Hello les amis

    J'adresse ici une question à ceux qui connaissent la programmation en C des AVR.

    Le petit programme d'USART que j'ai proposé marche bien mais on ne fait pas encore grand-chose avec ça.
    En-dehors d'une aide au debugging de programme, les µC ont souvent des informations utiles à transmettre à l'utilisateur. Par exemple, il serait utile de disposer d'une fonction du genre print ("la température est de ",T,"°C",ctrl_R) avec T étant une variable provenant de la lecture d'une sonde thermique et ctrl_R représentant un carriage return.

    Ma question est la suivante. Comment implémenter ce type de fonction ? Faut-il la construire soi-même ? Est-ce possible ? Vaut-il mieux utiliser les fonctions STDIN et STDOUT de AVR-libc vers l'USART comme expliqué sur ce site ?

    J'ai essayé de lire le chapitre stdio.h de AVR-libc mais c'est totalement incompréhensible pour un débutant comme moi.
    je suis en train d'écrire un librairie pour l'UART, je me suis basé sur la librairie HardwareSerial de l'arduino. j'ai réalisé les deux version une en C et l'autre presque la même que celle d'arduino en C++. c'est une version Alfa, la transmission marche bien, mais la réception non, j'ai fais une gaffe dans le code des fonctions de réceptions.
    voila, ci dessus deux projet exemple (c et c++) sous Atmel Studio pour l'atmega328p.
    pour la version c++, c'est simple, on initialise l'UART par Serial.begin(baude) ou Serial.begin(unsigned long baud, uint8_t config).
    et on utilise les fontion Serial.print et println.

    par contre dans le c, les fonctions diffèrent un petit peu, les fonctions qui débutent par "Serial." deviennet "Serial_". et les fonctions sont plus typées que la version C++.

    Code:
    void Serial_begin(unsigned long baud, uint8_t config); // une seule fonction begin avec deux parametres
    // les fonctions Print suivant la valeur a transmetre
    uint8_t Serial_printStr(const char[]); // transmision d'une chaine de cara
    uint8_t Serial_printChar(char); // print charactere
    uint8_t Serial_printuChar(unsigned char, int); //print unsigned  charactere
    uint8_t Serial_printInt(int, int); // print interger
    uint8_t Serial_printuInt(unsigned int, int);
    uint8_t Serial_printLong(long, int );
    uint8_t Serial_printuLong(unsigned long, int);
    uint8_t Serial_printDouble(double, int );
    
    
    uint8_t Serial_printlnStr(const char[]);
    uint8_t Serial_printlnChar(char);
    uint8_t Serial_printlnuChar(unsigned char, int );
    uint8_t Serial_printlnInt(int, int);
    uint8_t Serial_printlnuInt(unsigned int, int );
    uint8_t Serial_printlnLong(long, int);
    uint8_t Serial_printlnuLong(unsigned long, int);
    uint8_t Serial_printlnDouble(double, int);
    uint8_t Serial_println(void);
    Fichiers attachés Fichiers attachés

  4. #244
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    pour afficher une ligne complexe comme celle-là :
    Code:
    print("la température est de ",T,"°C",ctrl_R);
    on mets chaque élément dans une ligne a part:
    Code:
    Serial_printStr("la température est de ");
    Serial_printInt(T,DEC);
    Serial_printlnStr("°C");
    
    Serial_println();  // pour un autre retour a la linge au lieu de ctrl_R

  5. #245
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Mourad,

    Je viens de jeter un très rapide coup d’œil sur ton code (en C).
    Whaou ! C'est impressionnant !

    Je n'aurai peut-être pas l'occasion de tester rapidement car demain je m'absente jusqu'à lundi soir. Mais j'ai bien l'impression que tu vas avoir pas mal de choses à nous expliquer dans les jours qui viennent.
    En tout cas, merci pour ce travail que tu as fait dans l'ombre.

  6. #246
    gegel62

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Jean-Marie45 Voir le message
    Hello Mourad,
    .....
    En tout cas, merci pour ce travail que tu as fait dans l'ombre.
    au Maroc c'est surtout du soleil, non ?

  7. #247
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par gegel62 Voir le message
    au Maroc c'est surtout du soleil, non ?
    on se bronze trop ici même en ombre.
    j'ai essayé d'alléger le code et de minimaliser l'utilisation a des envois de chaine de caractères et de simple caractères, d'entier 32bit ou moins, d'affichage en hexadécimal/binaire d'un octet ou d'un word ou double Word. j'ai tjrs un problème d'afficher correctement les nombres a virgule flottante.

  8. #248
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par gegel62 Voir le message
    au Maroc c'est surtout du soleil, non ?
    Pour pondre un tel code, Mourad à dû travailler à 10 pieds sous terre et la tête dans les glaçons

    Mourad, ne t'inquiète pas trop pour l'affichage des réels à virgule flottante. Je suppose qu'on peut les type-caster dans un type entier et les afficher plus facilement.
    Je viens de rentrer chez moi et je vais essayer ton code d'ici quelques minutes.

  9. #249
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Voila,
    Bonsoir Tout le monde.
    tout est dans le projet Atmel Studio 6 ci-dessous: à vous de tester et reporter les bugs. je n'est fais que traduire la librairie déjà existante d'arduino, mais je l'ai réduit au strict minium.
    Code:
    /*
    uart_lib.h - UART library for AVR 8bits
    Copyright (c) 2006 Nicholas Zambetti.  All right reserved.
    //
    Modified 22 July 2014 by Mourad MKHAKH
    */
    
    #ifndef UART_LIB_H
    #define UART_LIB_H
    
    #ifndef F_CPU
    /* prevent compiler error by supplying a default value */
    #define F_CPU 16000000UL
    #endif
    
    #include <avr/interrupt.h>
    
    ......
    
    
    // Define config for Serial_begin(baud, config);
    #define SERIAL_5N1 0x00
    #define SERIAL_6N1 0x02
    #define SERIAL_7N1 0x04
    #define SERIAL_8N1 0x06
    #define SERIAL_5N2 0x08
    #define SERIAL_6N2 0x0A
    #define SERIAL_7N2 0x0C
    #define SERIAL_8N2 0x0E
    #define SERIAL_5E1 0x20
    #define SERIAL_6E1 0x22
    #define SERIAL_7E1 0x24
    #define SERIAL_8E1 0x26
    #define SERIAL_5E2 0x28
    #define SERIAL_6E2 0x2A
    #define SERIAL_7E2 0x2C
    #define SERIAL_8E2 0x2E
    #define SERIAL_5O1 0x30
    #define SERIAL_6O1 0x32
    #define SERIAL_7O1 0x34
    #define SERIAL_8O1 0x36
    #define SERIAL_5O2 0x38
    #define SERIAL_6O2 0x3A
    #define SERIAL_7O2 0x3C
    #define SERIAL_8O2 0x3E
    
    #define BYTE 1
    #define WORD 2
    #define DWORD 4
    
    // lineEndingChar caracter de fin de line
    #define LF '\n'		// Line Feed, '\n', 0x0A , 10
    #define CR '\r'		// Carriage return, '\r', 0x0D, 13
    #define	TAB '\t'	// Tabulation \t, 9
    #define	VTAB '\v'	// vertical tab '\v', 11
    
    #define _ubrrh UBRR0H
    #define _ubrrl UBRR0L
    #define _ucsra UCSR0A
    #define _ucsrb UCSR0B
    #define _ucsrc UCSR0C
    #define _udr UDR0
    
    
    .....
    
    void Serial_begin(uint32_t baud, uint8_t config);
    void Serial_end();
    uint8_t Serial_available(void);
    uint8_t Serial_readChar(void);
    uint8_t Serial_readStr(char* str,uint8_t size, uint8_t lineEndingChar);
    
    void Serial_flush(void);
    
    // write functions
    uint8_t Serial_printChar(int8_t c);
    void Serial_printBinByte(uint8_t b);
    void Serial_printBinWord(uint16_t w);
    uint8_t Serial_printHex(uint32_t n, uint8_t _bytes);
    uint8_t Serial_printStr(const char *str);
    uint8_t Serial_printInt(int32_t n);
    uint8_t Serial_printuInt(uint32_t n);
    uint8_t Serial_printDouble(double n,  uint8_t digits);
    
    uint8_t Serial_printlnChar(int8_t);
    uint8_t Serial_printlnStr(const char[]);
    uint8_t Serial_printlnInt(int32_t);
    uint8_t Serial_printlnuInt(uint32_t);
    uint8_t Serial_printlnDouble(double,  uint8_t digits);
    uint8_t Serial_println(void);
    
    #endif
    Code:
    int main(void)
    {
    	// initialistaion du UART: baude 9600, 8 data bytes, N pas de parité , 1 bit de Stop
    	Serial_begin(9600, SERIAL_8N1);
    	// hello le monde, salut la compagnie
    	Serial_printlnStr("hello world!!");
    
    
    	char incomingStr[255];
    	uint8_t  counter=0,n = 0;
    
    	while(1)
    	{
    		// reception d'une chaine de 30 caracteres. (un caracter LineFeed = 10 = '\n' arrete la lecture)
    		n = Serial_readStr(incomingStr,30, LF);
    		if (n) {
    			// remise en majiscule de la chaine recue et la transmetre sur le terminal
    			Serial_printStr("chaine recue \t:\t ");
    			Serial_printStr( strupr(incomingStr));
    			Serial_printStr("\nNombre de caracter recu : ");
    			Serial_printlnInt(n);
    		}
    		/*
    		//test si des caracters sont recue
    		char incomingByte;
    		if (Serial_available() > 0) {
    		
    		// lecture d'un seul caracter:
    		Serial_printStr("chaine recue \t:\t ");
    		incomingByte = toupper(Serial_readChar());
    		Serial_printChar(incomingByte);
    		}
    		*/
    		Serial_printStr("Conteur\t:\t");
    		Serial_printHex(counter, sizeof(counter));
    		Serial_println(); // un simple retour à la ligne
    		
    		Serial_printBinByte(counter); Serial_println();
    		
    		Serial_printBinWord(counter++); Serial_println();
    		
    		Serial_printHex(-1,DWORD);Serial_println();
    		Serial_printHex(-1,WORD);Serial_println();
    		Serial_printHex(-1,BYTE);Serial_println();
    		Serial_printlnChar('a'); //print 'a'
    		Serial_printlnChar(98);	// ascii code de 'b'
    		Serial_printlnInt(-1);	// renvoie d'un entier signé
    		Serial_printlnuInt(-1); // renvoie d'un entier non signé (32bits)
    		
    		
    		Serial_printlnDouble(1234567.001,6);  // c'est buggé pour les nombres a virgule flotantes!!
    		_delay_ms(1000);
    	}
    }
    le code est ecri en C, testé sur un AtMega2560.
    Fichiers attachés Fichiers attachés
    Dernière modification par mkh.mourad ; 22/07/2014 à 02h55.

  10. #250
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Mourad

    Merci pour ton nouveau code. Je n'ai pas encore pu le tester car je ne suis resté chez moi qu'hier matin et je suis encore très inexpérimenté dans la manière d'importer un projet à multiples fichiers dans Studio6. Je ne reviendrai chez moi que ce soir.

  11. #251
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Salut Jean-Marie. A ce soir alors, j'attendrai ton test.
    Le fichier que j'ai posté si dessus est un répertoire complet qui contient le projet d'exemple sous Atmel studio 6. Si tu veux créer un nouveau projet, et tu ajoutes les deux fichiers .c et .h de la librairie Uart.
    A droite dans l'explorateur de solution, tu clic sur le nom de projet avec le bouton droite de la souris, puis dans le menu contextuel tu clic sur add existent s items... (ou quelque chose comme ça). Tu selectionnes les deux fichiers de la librairies.
    Merci et bonne journée

  12. #252
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Mourad

    Je viens de faire le test de ton programme.

    Nom : 331.jpg
Affichages : 192
Taille : 44,1 Ko

    Il compile sans aucune erreur et sans warning.
    A part le bug de la virgule flottante, l'affichage est impeccable et semble mieux au point que la première version.

    Mais je vois que tu maîtrise le C !

  13. #253
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Jean-Marie.
    Heureux que tu sois le premier à le tester. Je maîtrise bien les notions de base du c, c++ et le java.
    Je pense que le bug de la fonction de la virgule flottante est aussi présent dans arduino. L'implémentation des nombres float et double est limitée dans avr-gcc.
    De toutes façons, ce n'est pas très important, pour l'instant, d'afficher les nombres à virgule foutante pendans la transmission depuis le microcontroleur.

  14. #254
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Salut,
    Le double dans avr-gcc n'est pas sur 80bits ou 64bits mais n'est qu'un float de 32bits, dont la précision est limitée sur 24bits, soit 7 décimal (16 777 216).
    Donc la fonction de concersion float vers string n'est pas bogué, mais à précision limitée.
    Je prefere eviter les calcules complexes sur des variables de type float, et de limiter les equations sur des entiers si c'est possible.
    Par exemple après une lecture d'une valeur analogique, sa précision est sur 10bits entier. On la manipule par des divisions euclidiennes (division d'entiers) plutôt qu'une division de float. Et dernier lieu pour un affichage final on peut représenter le résultat final sous forme de grandeur a virgule flottante.
    Bonne journée

  15. #255
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Mourad

    Cette page web (déjà renseignée avant) montre comment rediriger stdin et stdout vers uart.

    J'ai essayé avec Studio6 et cela fonctionne bien (voir programme ci-joint) sauf pour les nombres float. Le code est peut-être un rien plus court que ton programme. La fonction printf permet des affichages complexes en utilisant les paramètres standards. Voir ICI ou ICI. C'est peut-être plus pratique que d'avoir une fonction d'affichage différente pour chaque type comme dans ton programme ?

    Pour les float, il y a peut-être une solution à chercher de ce côté.
    Fichiers attachés Fichiers attachés

  16. #256
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello les amis

    Pour ceux qui fonctionnent sous Studio4, voici en fichier joint le dossier du même "SimpleSerialCOM".
    A noter que Studio4 doit être configuré avec la nouvelle ToolChain 2014 telle que expliqué par Mourad.
    http://forums.futura-sciences.com/el...e-avr-gcc.html
    Fichiers attachés Fichiers attachés

  17. #257
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    vraiment un code simplifié et de taille hex léger. il n'utilise pas d'interruption ni de parité dans la configuration.
    pour une transmission et réception de chaine de caractères c'est largement suffisant.
    BRAVO

  18. #258
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Ce que je trouve pratique, c'est qu'on combine en une seule ligne un mélange de texte et de variables numériques formatées selon les besoins. Il serait par exemple facile de concevoir une horloge qui affiche "nous sommes le 25 juillet 2014. Il est 13 H 26" en une seule commande printf (...)

    Tu me dis BRAVO, mais mon seul mérite est d'avoir trouvé ce code sur le net.

    Je suis en train de constituer un petit résumé des informations et des liens que le thread comporte car il est déjà assez difficile de retrouver un détail dans les 18 premières pages.

  19. #259
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Tu mérites quand même un bravo ☺.
    Bnne journée

  20. #260
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello la compagnie

    (A part Mourad, je me demande s'il y a encore beaucoup de vivants dans cette compagnie ! )

    J'ai préparé un document résumant les infos des 17 premières pages du thread.

    Les liens internes de la table des matières ne fonctionnent pas en pdf mais les liens externes permettent de retrouver l'info originale.

    Bonne lecture.
    Images attachées Images attachées

  21. #261
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    un très bon travail, tu as écrémé les bonnes informations dans un document pdf structuré et bien formaté.
    pour la compagnie, c'est les vacances!!

    Citation Envoyé par Jean-Marie
    Forum pages / page 5
    1. Le μC est sur une platine Arduino USB et est pourvu de son bootloader
    Si le μC est pourvu de son bootloader Arduino et que la platine est raccordée au PC par
    un câble USB, le flashage peut se faire sans autre matériel. On utilisera le logiciel
    avrdude, soit en ligne de commande avec ses nombreux paramètres, soit plus
    confortablement sous Windows à l'aide d'un logiciel d'interface (voir plus loin "avrdude
    et son interface Windows AVRDUDESS").
    moi j'utilise avrdude comme outil externe directement sur Atmel Studio 6; j'ai même créé deux bouton dans la barre d'outils dédié pour flasher le Hex en mode release et l'autre pour le mode debug.
    comme ça je reste sur le même IDE sans sortir pour utilisé d'autre outils; j’enchaîne, édition, compilation, versement du hex sur la puce, tout ca dans le même environnement Studio.

    Configurer l'outil Avrdude comme un outil "extern" dans AtmelStudio6 pour televerser le programme hex dans la platforme Arduino:

    vous devez avoir l'IDE Arduino deja installé, ou au moins l'executable Avrdude.exe (la version AVRDUDE 6.0.1 est telechargeable depuis le site officiel Avrdude: http://savannah.nongnu.org/projects/avrdude)

    - aller à Tools -> External Tools...

    Nom : avrdude_prog.jpg
Affichages : 229
Taille : 58,5 Ko

    - Creer un nouveau "new tool" avec ces paramettres :
    Title: AVRDUDE Release Prog
    Command: "C:\arduino-1.5.6-r2\hardware\tools\avr\bin\avrd ude.exe"
    (Changer le chemin suivant votre installation pour qu'il pointe l'executable avrdude.exe)
    Arguments -C"C:\arduino-1.5.6-r2\hardware\tools\avr\etc\avrd ude.conf" -patmega328p -carduino -P\\.\COM3 -b57600 -Uflash:w:"$(ProjectDir)Debug\$ (ItemFileName).hex":i

    cette ligne doit être Changer suivant le chemin de votre installation Arduino et suivant les parameters qui corespendent a votre platine ARDUINO que vous utilisez, et le port COM affecté par windows:
    -p Name of the board
    -c Name of the programmer
    -b Baudrate of the programmer
    • Arduino Pro Mini:
      -patmega328p -carduino -P COM3 -b57600
    • Arduino Uno:
      -patmega328p -carduino -P COM3 -b115200
    • Arduino Duemilanove:
      -patmega328p -carduino -P COM3 -b57600
    • Arduino Mega2560:
      -patmega2560 -cwiring -P COM3 -b115200

    aussi prendre en consideration le mode de compilation Release ou Debug en changeant( ou creant deux outils) le parametre:
    -Uflash:w:"$(ProjectDir)Debug\$ (ItemFileName).hex":i pour debug
    -Uflash:w:"$(ProjectDir)Release \$(ItemFileName).hex":i pour release

    cocher la case "use output windows"
    et enregistrer.

    voila;
    apres compilation du projet par F7 ( ou CTRL+F7), je fais menu -> Tools -> AVRDUDE Release Prog, si je suis en mode Release,

  22. #262
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    une petite modification dans la ligne Arguments:
    -C"C:\arduino-1.5.6-r2\hardware\tools\avr\etc\avrd ude.conf" -patmega328p -carduino -P\\.\COM3 -b57600 -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i
    vaut mieu mettre $(TargetName) au lieu de $(ItemFileName)

  23. #263
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    c'est toujours moi
    voici mes deux boutons accessible directement depuis la barre d'outils:

    avrdude_bartool.jpg

    pour faire:

    _aller dans Menu-> Tools -> Customize..
    - dans l'onglet: Toolbars: faire New, et nommer la "Toolbar name": AVRDUDE
    - aller dans la deuxième onglet nommée Commands, choisir le bouton radio Toolbar, et cherchez la toolbar derniererement créée "AVRDUDE"

    avrdude_customize.jpg

    - puis clicker sur Add Command..
    - choisir dans la liste deroulante les deux commands : Tools -> External Command 1 / 2

    avrdude_add_cmd.jpg

    c'est une manipulation un petit fastidieuse mais qui simplifie l'utilisation de Avrdude dans AtmelStudio et la reduit a un simple bouton dans la barre d'outils.

  24. #264
    invitee2def47b

    Re : De l'Arduino au langage C standard avec AVR Studio

    Bonjour à tous,

    Je suis en vacances et j'ai besoin de déconnecter mon CPU, mais je n'ai pu résister à l'envie de venir jeter un œil sur le forum. Je vois que contrairement à moi tout le monde n'est pas en pause.
    Quel travail ! Que de dévouement !
    Toutes mes félicitations à Jean-Marie et à Mourad. Ça me donnerai presque envie d'abandonner la plage.

    Mais j’espère que vous profitez aussi des joies de l'été.

    A bientôt et encore merci pour le poisson ( à qui trouve la référence) !

  25. #265
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Mourad

    Alors que les autres passent la nuit à dormir, je vois que toi tu passes la nuit à travailler !

    Merci pour tes explications afin d'ajouter des outils externes.

    Dans les répertoires que Studio6 crée, je n'ai que le répertoire "debug". C'est celui qui contient le fichier hex.
    A quoi correspond ton répertoire "release" ?

    J'ai donc créé un outil externe pour programmer l'Arduino par la prise USB. Je l'ai appelé "FLASH ARDUINO".

    J'au dû modifier quelque peu les lignes à introduire :

    Code:
    Command:
    C:\Program Files\Arduino\hardware\tools\avr\bin\avrdude.exe
    
    Arguments:
    C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.conf -c arduino -p m328p -P COM5 -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
    Il y a d'une part les modifications dues aux localisations de avrdude.exe et avrdude.conf sur ma machine. D'autre part, le paramètre -b57600 ne fonctionnait pas chez moi, mais en supprimant simplement ce paramètre, cela fonctionne bien. J'ai également modifié le paramètre -p m328p et l'un ou l'autre caractère 'espace' et 'guillemet'.
    Encore merci.




    Hello Adam

    J'ai évidemment cherché le poisson, mais tout ce que j'ai trouvé est ceci :
    Citation Envoyé par JM
    mon seul mérite est d'avoir trouvé ce code sur le net
    Il faut savoir qu'en anglais COD veut dire cabillaud et NET veut dire filet.
    Donc, mon seul mérite serait d'avoir trouvé ce cabillaud sur le filet !!!

    Mais je n'ai quand même pas l'impression que c'était le poisson à trouver.

  26. #266
    invitedca01a58

    Re : De l'Arduino au langage C standard avec AVR Studio

    Hello Mourad

    J'ai essayé de trouver le moyen de créer un external tool pour Studio4. Voici ce que j'ai fait :

    Nom : External Tool dans Studio4.jpg
Affichages : 188
Taille : 140,9 Ko

    Menu Tools --> Customize --> onglet Tools

    Comme Command, j'ai écrit la même ligne que pour Studio6.
    Comme Arguments, voici la ligne que j'ai utilisée:
    Code:
    C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.conf -c arduino -p m328p -P COM5 -U flash:w:"$(ProjectDir)default\$(TargetName).hex":i
    Le fichier hex est dans le répertoire default mais ça ne fonctionne pas. Avrdude ouvre une fenêtre "dos" qui se referme aussitôt, ne laissant pas le temps de voir où est le problème. Malheureusement, je ne peux pas consulter la documentation de Studio4 (comme je l'ai déjà dit). As-tu une idée de ce qu'il faut faire ?

  27. #267
    invite00250c99

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par mkh.mourad Voir le message
    une petite modification dans la ligne Arguments:
    -C"C:\arduino-1.5.6-r2\hardware\tools\avr\etc\avrd ude.conf" -patmega328p -carduino -P\\.\COM3 -b57600 -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i
    vaut mieu mettre $(TargetName) au lieu de $(ItemFileName)
    Au passage, on peut aussi mettre $(TargetDir) au lieu de $(ProjectDir)Debug ou $(ProjectDir)Release.
    Ca permet de n'avoir qu'un seul "External tool" pour les deux cibles (target et release).

  28. #268
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Jean-Marie
    Alors que les autres passent la nuit à dormir, je vois que toi tu passes la nuit à travailler !
    La nuit porte conseil
    je suis moi aussi en vacances chez mes parrents, et je profite du calme pour lire et tester tranquil. en plus je ne travaille pas sur mon pc personnel, mais j'utilise celui de ma soeur.

    Citation Envoyé par Jean-Marie
    Dans les répertoires que Studio6 crée, je n'ai que le répertoire "debug". C'est celui qui contient le fichier hex.
    A quoi correspond ton répertoire "release" ?
    release et debug sont deux mode de compilation qui sont présents dans presque tous les IDE en général. release est le mode de compilation qui produit la version final à déployer. par contre la version du mode debug est une version qui est en mode test et debuggage, et elle contient des infos et des variables que le compilateur insert dans le code (les point d'arret, les symboles et nom de variable, et de fonction etc ), pour faciliter le suivit de l’exécution du code et la simulation.
    en conséquence, la version release a toujours un poid faible, par ccontre la version hex debug est plus volumineuse.
    cest deux mode est accessible depuis la barre d'outils, tu peux basculer d'un mode a l'autre.
    Nom : debug_release.jpg
Affichages : 164
Taille : 36,2 Ko

    Citation Envoyé par Jean-Marie
    J'au dû modifier quelque peu les lignes à introduire :
    Code:
    Command:
    C:\Program Files\Arduino\hardware\tools\avr\bin\avrdude.exe
    Arguments:
    C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.conf -c arduino -p m328p -P COM5 -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
    Il y a d'une part les modifications dues aux localisations de avrdude.exe et avrdude.conf sur ma machine. D'autre part, le paramètre -b57600 ne fonctionnait pas chez moi, mais en supprimant simplement ce paramètre, cela fonctionne bien. J'ai également modifié le paramètre -p m328p et l'un ou l'autre caractère 'espace' et 'guillemet'.
    Encore merci.
    il y avais des espace qui sont introduit dans les lignes de parametres. N'oublies pas de mettre des "", sinon tu vas avoir des erreurs pour les chemins qui contient des espaces!!
    donc pour un Arduino UNO, dans ton cas il faut mettre:
    Code:
    Command:
    "C:\Program Files\Arduino\hardware\tools\avr\bin\avrdude.exe"
    Arguments:
    -C"C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.conf" -patmega328p -carduino -P COM5 -b115200 -Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
    pour qui possede un Arduino Mega 2560 comme moi:

    Code:
    Command: 
    "C:\Program Files (x86)\arduino-1.5.6-r2\hardware\tools\avr\bin\avrdude.exe"
    Arguments:
    -C"C:\Program Files (x86)\arduino-1.5.6-r2\hardware\tools\avr\etc\avrdude.conf" -patmega2560 -cwiring -P COM2 -b115200 -Uflash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
    si tu veux plus de details tu peux ajouter un -v dans la ligne des arguments.
    Dernière modification par mkh.mourad ; 27/07/2014 à 19h56.

  29. #269
    mkh.mourad

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Jean-Marie45 Voir le message
    Hello Mourad

    J'ai essayé de trouver le moyen de créer un external tool pour Studio4. Voici ce que j'ai fait :

    Pièce jointe 254300

    Menu Tools --> Customize --> onglet Tools

    Comme Command, j'ai écrit la même ligne que pour Studio6.
    Comme Arguments, voici la ligne que j'ai utilisée:
    Code:
    C:\Program Files\Arduino\hardware\tools\avr\etc\avrdude.conf -c arduino -p m328p -P COM5 -U flash:w:"$(ProjectDir)default\$(TargetName).hex":i
    Le fichier hex est dans le répertoire default mais ça ne fonctionne pas. Avrdude ouvre une fenêtre "dos" qui se referme aussitôt, ne laissant pas le temps de voir où est le problème. Malheureusement, je ne peux pas consulter la documentation de Studio4 (comme je l'ai déjà dit). As-tu une idée de ce qu'il faut faire ?

    AVR Studio est different de Atmel studio!! donc les paramettres $(ProjectDir) et $(TargetName) qui sont propres à l'IDE AtmelStudio sont inconus dans AvrSTudio.

    je n'ai pas de solution maintenant, il faut voir comment AvrStudio nome ces variables de Projet. sinon tu dois modifier la ligne -Uflash:w:"$(ProjectDir)default \$(TargetName).hex":i en donnant le chemin exact du fichier hex par exemple:
    -Uflash:w:"c:\mes doccuments\avrStudio\Projet1\o utput\Test.hex":i

  30. #270
    invitee2def47b

    Re : De l'Arduino au langage C standard avec AVR Studio

    Citation Envoyé par Jean-Marie45 Voir le message
    J'ai évidemment cherché le poisson, mais tout ce que j'ai trouvé est ceci :

    Il faut savoir qu'en anglais COD veut dire cabillaud et NET veut dire filet.
    Donc, mon seul mérite serait d'avoir trouvé ce cabillaud sur le filet !!!

    Mais je n'ai quand même pas l'impression que c'était le poisson à trouver.
    Bonsoir Jean-Marie,

    C'est beaucoup plus simple que ça mais la correspondance que tu as trouvée est tout simplement géniale!
    Je faisais juste référence au 4ieme volume de l'extraordinaire trilogie en 5 tomes de Douglas (Noel) ADAMS (H2G2) paru il y a 30 ans maintenant (en ce qui concerne ce même volume) et dont je conseille la lecture à tous ceux qui croient qu'humour et intelligence sont compatibles, plus encore aux autres.
    Je reviens me joindre à vous dès la fin de mes vacances.

    Bonne soirée,

Page 9 sur 21 PremièrePremière 9 DernièreDernière

Discussions similaires

  1. Arduino anti rebond avec arduino
    Par invited0bffa74 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/10/2014, 17h04
  2. Stopper une boucle - Langage Arduino.
    Par Baliethecat dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 10/04/2014, 06h31
  3. Communication arduino-arduino avec module Xbee
    Par inviteda9a8a4b dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 17h24
  4. Utiliser un Arduino UNO R3 avec ATMEL Studio 6
    Par HAYAC dans le forum Électronique
    Réponses: 2
    Dernier message: 27/07/2012, 14h12
  5. Réponses: 15
    Dernier message: 19/07/2012, 22h53
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...