Aller au contenu


Photo
- - - - -

arduino: programmer une atmel


  • Veuillez vous connecter pour répondre
24 réponses à ce sujet

#1 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 10 avril 2011 - 08:38

Après avoir vu l'arduino standalone je me suis demandé si je ne pouvais pas faire mieux: prendre une atmel et la programmer grâce à une arduino: j'ai trouvé 3 techniques:

Arduino ISP: qui permet grâce à une arduino d'en programmer une deuxième mais cela ne comprends que le bootloader

http://arduino.cc/en/Tutorial/ArduinoISP

Mon but étant de faire marcher une at2313, 2kb de flash cela ne m'a pas parut adapter. il y a avait donc deux projets intéressants:

Le premiers était le mégaisp:

http://code.google.com/p/mega-isp/

mais après y avoir passé une partie de mon après-midi je n'ai pas réussis à l'utiliser (faut dire aussi que mon support tulipe ne touchait pas ma breadbord, j'ai mis 3h à m'en rendre compte)

mais même après je n'ai pas réussis m'enfin je réessaierai bien.

le seul problème est qu'il faut penser à supprimer le reset systématique de l'arduino:

http://www.arduino.cc/playground/Code/MegaISP

j'ai pour éviter cela utiliser une puis 5 résistance de 100kOhm pour avoir une résistance de 125k, qui m'a permis de virer ce reset(il faut penser à l'enlever avant de réuploader un code)



La dernière solution est celle ci:

Image IPB

souder la puce fdti de l'arduino duemilanove pour l'utiliser comme un programmateur ISP,il faut donc toucher à sa carte, j'ai utilisé au début ce site:

http://tutos.dryades.org/electronique/bitbang/

plutôt utile mais dont la solution ne marche pas en effet il semblerai que peut être que sa a changé depuis les dernières versions de avrdude mais modifier le fichier de conf ne suffit pas à ajouter un programmateur. mais j'ai finis pas trouver ce site qui explique comment réécrire le bootloader arduino sans en avoir plusieurs. en utilisant la technique présenté cela marche bien sous windows, sous linux ici est présenté l'équivalant mais mon wget cherchais un proxy donc je n'ai pus tester, mais je donne le lien si cela en intéresse:

http://doswa.com/blog/2010/08/24/avrdude-5-10-with-ftdi-bitbang/



pour windows je vous donne mon archive, durement acquise:

http://lordcuty.free.fr/files/avrdude%20arduino.7z



Il suffit de lancer le fichier avrdude-gui.exe et de ne modifier de rentrer les paramètres suivant:

avrdude: avrdude.exe

programmer: FT232R Synchronous BitBang (diecimila)

port: ne pas toucher

device (modèle d'atmel): l'atmel possédé

commande line option: -P ft0 -B 4800





pour l'arduino: souder les pins:

Image IPB

Image IPB



pour le circuit, plutôt simple: brancher les pins sck, MOSO, MOSI, RESET, suivant le plan suivant:


Image IPB

le brancher directement, pas sur le port icsp de l'arduino comme ceci:

Image IPB





cela permet normalement, de programmer n'importe quel atmel avec notre petite duemilanove, je sais pas contre que cela ne marche pas avec les uno mais peut-être par contre avec les at1280, surement même et il me semble que les pins son déjà soudés





peut être devrais-je en faire un tuto, pour éviter de le laisser pourrir ici....





#2 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 10 avril 2011 - 08:49

ça serait vraiment bien en tuto.

Par contre essaie d'être plus clair (pour moi en tout cas)

Merci de l'info en tout cas

#3 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 10 avril 2011 - 08:57

J'avais aussi essayé d'utiliser l'arduino comme ISP pour reprogrammer un autre ATmega, sans succès.
Donc concrètement, tu es parvenu à activer l'oscillateur interne? Uploader des programmes? Ou simplement écrire un bootloader arduino "classique" sur un microcontrôleur vierge?

#4 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 11 avril 2011 - 05:00

j'ai pus flasher et modifier les fuses

#5 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 11 avril 2011 - 06:45

Comme Miky-mike, je trouve que tu devrais essayer de mettre ça dans un tutoriel bien foutu. ;)
Ça va peut-être te prendre un peu de temps mais ça évitera que ça sombre dans les tréfonds du forum.

Ça te permettra de détailler peut-être un peu plus aussi, pour que tout soit vraiment super clair.

Mais c'est cool en tout cas ! :)

Une simple question, c'est quoi les "fuses" ?

#6 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 11 avril 2011 - 04:21

Les fuses sont des fusibles, qui servent à déterminer la configuration de l'ATmega. Un fusible peut avoir une valeur 0 ou 1, et par exemple il y a un fusible qui sert à dire si on utilise l'oscillateur interne ou une horloge externe (celui que j'aurai bien aimé reprogrammer ^^)

#7 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 11 avril 2011 - 06:08

Ah, en gros c'est les registres... C'est bien la même chose ?
Ou bien un registre représente un ensemble de 8 fuses ?

#8 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 11 avril 2011 - 06:25

Heu oui c'est les registres il me semble, y en a pas mal pour l'ATmega 328 je crois (genre plusieurs octets) mais ça date, je suis pas le plus calé pour te renseigner.

#9 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 11 avril 2011 - 06:51

oulala que jbot ou miky-mike confirment mais je crois pas les fuses servent à déterminer les configurations de l'atmel alors que les registres permettent de modifier l'état des pattes, entré ou sortie, valeur de la sortie..
si quelqu'un a un bon tuto en C pour avr je suis preneur!

#10 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 11 avril 2011 - 07:10

Normalement, effectivement les "fusibles" sont des registre de configuration, il ne peuvent ( me semble il ) etre modifier que pendant la programmation ( il ne sont pas adressable ) ( en tout cas, c'etais vrais avant, peut etre que certains modèle "recent" permettent de le faire, mais je ne pense pas, il serais dangereux en cas d'overflow d'ecrire par accident dessus ). par exemple, ils permettent de choisir la source de l'horloge, les pré-diviseur etc. plus le microcontroleur est complexe, plus ils sont nombreux.

edit: mais heu, pourquoi ne pas regardé la lib arduino? elle utilise avr g++ comme base et dedans tu trouveras beaucoup d'info utiles ( en plus, tu pourrais aussi utilisé la lib en question directement )

#11 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 11 avril 2011 - 07:19

Alors les "fuses" en français "fusibles" servent a paramétrée le microcontroleur.
par exemple en changant la valeur nous pouvons :
- Protégé notre code, c'est a dire que personne ne pourra reprendre le code dans le microcontroleur (donc impossible de faire de la duplication ou du désassemblage).
- Choix de l'horloge (interne, externe).
- ...
Je vous conseil de lire ce très belle article : http://www.atmicroprog.com/cours/atmega/fuses.php

Les registres c'est comme en assembleur

#12 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 11 avril 2011 - 07:22

[quote"webshinra"]Normalement, effectivement les "fusibles" sont des registre de configuration, il ne peuvent ( me semble il ) etre modifier que pendant la programmation ( il ne sont pas adressable ) ( en tout cas, c'etais vrais avant, peut etre que certains modèle "recent" permettent de le faire, mais je ne pense pas, il serais dangereux en cas d'overflow d'ecrire par accident dessus ). par exemple, ils permettent de choisir la source de l'horloge, les pré-diviseur etc. plus le microcontroleur est complexe, plus ils sont nombreux.[/quote]

J'ai pris du temps a validé mon message mais c'est correcte ce que tu as dis.
Même si c'est pas des registres (ça ressemble mais je ne les considères pas registre)


#13 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 11 avril 2011 - 07:35

bha, c'est pas des fusibles non plus alors bon :-°
il me semble d'ailleur que le terme vient des permiers PLD ( http://fr.wikipedia.org/wiki/Circuit_logique_programmable ) que l'on programmais en brulant des "transistors" a l'interieur.

#14 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 11 avril 2011 - 07:41

Merci pour les réponses, c'est plus clair. ;)

#15 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 12 avril 2011 - 06:21

Atmel dit que c'est des fusibles donc autant gardé le nom qu'ils disent

#16 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 12 avril 2011 - 09:58

[quote"webshinra"]

edit: mais heu, pourquoi ne pas regardé la lib arduino? elle utilise avr g++ comme base et dedans tu trouveras beaucoup d'info utiles ( en plus, tu pourrais aussi utilisé la lib en question directement )[/quote]
Avec mes atiny2313 et 2kb de flash sa va être dure, non?

#17 webshinra

webshinra

    Membre passionné

  • Membres
  • PipPipPip
  • 510 messages

Posté 12 avril 2011 - 11:53

non

#18 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 13 avril 2011 - 05:37

pour utilisé la lib arduino?

#19 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 13 avril 2011 - 06:09

Ah décidément, j'aime bien ce forum! on en apprend des choses!

@lordcuty: tu aurais quand même pu t'y prendre un peu plus tôt, ça m'aurai évité de dépenser 1€ dans un cristal 16MHZ :p

#20 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 13 avril 2011 - 06:44

bah j'en utilise un pour mes 328, alors je pouvais pas te le dire :p




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users