Comment charger un atmega328 via arduino atmega328 ?

Bonjour,

Je suis toujours sur mon automate pour aquarium. Le programme est terminé pour sa première version.

J'ai réaliser un circuit avec un atmega328 dessus car je ne souhaite pas utiliser l'arduino mais uniquement le microcontroleur.
J'ai prévu dessus un groupe de 6 broches pour pouvoir charger le microcontroleur directement sur mon montage.

http://crevettegreg.free.fr/Arduino/Capture1.pdf


J'ai commandé sur ebay un kit comprenant un atmega328 et le quartz. Kit reçu ^^
Si j'ai bien compris il faut procéder en 2 étapes:

1 - Charger le Bootloader
2 - Charger le programme

Mes questions sont les suivantes:

Ai je bien relier mes broches sur mon circuit ?
Y a t'il bien deux étapes: bootloader puis programme ?
Comment savoir si il y a déjà un bootloader sur l'atemega que j'ai reçu ?
Peut t'on utiliser directement le logiciel Arduino pour programmer puis utiliser le bouton upload ?
Est on obligé de mettre un bouton reset avec une résistance ou peut on juste relier a la broche reset sans rien d'autre ?

J'ai trouvé pas mal de tuto mais c'est assez compliqué pour moi... je débute...
Je suis un peu perdu...

Merci d'avance pour votre aide !

Une petite photo pour le fun de mon circuit...
Il me reste encore les triacs et qqs autres composants a souder... Allez, soudure en attendant vos réponses !

Merci d'avance pour votre aide !

sinon autre solution simple si tu a un arduino uno avec un dip .. tu le remplace par ton atmega, tu charge le bootloader via le programme arduino, ensuite tu charge ton programme et tu retire l'atmega, et tu le met sur ta carte..

hey,

Merci pour ta réponse, mais cette solution est bien si tu as un ou deux montage a produire. sinon le DIP va souffrir...
Dans mon cas, je ne peux me permettre... je vais en avoir pas mal a faire, j'essai de trouver un solution pour gagner un peu de temps

tetardo:
hey,

Merci pour ta réponse, mais cette solution est bien si tu as un ou deux montage a produire. sinon le DIP va souffrir...
Dans mon cas, je ne peux me permettre... je vais en avoir pas mal a faire, j'essai de trouver un solution pour gagner un peu de temps

bonjour
un ZIF DIP28 et on en parle plus !

genre ça

et si besoin d'un peu de hauteur pour passer au dessus de connecteur ICSP , tu l'empile sur 1 ou 2 suports DIP classiques

Bonjour,

tetardo:
Ai je bien relier mes broches sur mon circuit ?

Je vois plusieurs chose qui pourrait mettre à mal ton montage :.
1 - Il y a un net_alias sur les broches RX et TX de l'atmega du nom de RAMPE_1 et RAMPE_2 mais je ne vois aucune terminaison avec le même nom ...
ça peut vouloir dire deux choses, tu n'as pas cabler cette partie, ou pire tu as oublié que RX/TX correspond au port série, port série qui sert à l'envoi du programme depuis l'ide arduino.
Cabler quelque chose sur TX/RX n'est pas interdit mais il ne faudrai pas que cela empéche l'envoi du programme par la suite.
2 - Ton ATmega328p tourne avec un quartz 32KHz :fearful: je suppose que tu veut faire du temps réel avec, mais avec l'ide arduino c'est 16MHz ou 8MHz, rien d'autre !
3 - Je vois plein de net_alias qui ne pointe vers aucune autre partie du schéma, c'est normal ou il manque une partie du schéma !?

tetardo:
Y a t'il bien deux étapes: bootloader puis programme ?

Oui si tu veut utiliser l'ide arduino il faut d'abord programmer le bootloader puis utiliser le port série pour envoyer le programme.

tetardo:
Comment savoir si il y a déjà un bootloader sur l'atemega que j'ai reçu ?

Ne cherche pas à savoir si il y a déja un bootloader, envoi directement la bootloader sur l'ATmega, ça t'évitera de te retrouver avec un bootloader ancien ou brické :wink:

tetardo:
Peut t'on utiliser directement le logiciel Arduino pour programmer puis utiliser le bouton upload ?

Utilise t'as carte arduino :wink:
Tu envoi le sketch ArduinoISP dessus, tu place une diode entre reset et gnd (ou vcc je sais plus :blush:) si c'est une UNO/mega2560 ou alors une résistance entre reset et VCC si c'est une carte arduino plus ancienne.
Tu branche en ISP ta carte, ensuite tu fait "burn bootloader" dans le menu de l'ide et tu attend :wink:

tetardo:
Est on obligé de mettre un bouton reset avec une résistance ou peut on juste relier a la broche reset sans rien d'autre ?

Non tu peut juste mettre une résistance entre VCC et reset sans rien d'autre mais garde quand même un jumper ou un truc pour pouvoir faire un reset au cas ou :wink:

tetardo:
Une petite photo pour le fun de mon circuit...
Il me reste encore les triacs et qqs autres composants a souder... Allez, soudure en attendant vos réponses !

Ha! Un schéma sous proteus, pas un truc fait sous eagle 8) ... je suis content pour la journée :grin:
Ps: quelle version de proteus tu as ? J'ai la 7.5 mais j'ai pas les prises jack/ds1307/... tu as fait les empreintes toi même ?

tetardo:
Bonjour,

Je suis toujours sur mon automate pour aquarium. Le programme est terminé pour sa première version.
...

Merci d'avance pour votre aide !

BAT1 à 1.5V pour le ds1307 c'est hors limites :grin:

Alors Alors ^^

Pour commencer, merci pour vos réponses !

@Artouste

si besoin d'un peu de hauteur pour passer au dessus de connecteur ICSP , tu l'empile sur 1 ou 2 suports DIP classiques

Merci pour l'idée, c'est pas *on du tout !

@skywodd

Il y a un net_alias sur les broches RX et TX de l'atmega du nom de RAMPE_1 et RAMPE_2 mais je ne vois aucune terminaison avec le même nom ...

Normal, le shéma des triacs est sur une autre feuille... je les ai testé et il fonctionnent parfaitement.
Pour les broches RX et TX, je n'avais pas pensé que cela pouvait gêner a l'envoi du programme... le mieux est du coup d'essayer de les avoir toujours libre. Un petit 74HC595 devrait m'aider a les libérer.

Ton ATmega328p tourne avec un quartz 32KHz

Non non, il est en 16, j'ai juste pas fait attention a la valeur sur mon shéma (merci :p)

Ha! Un schéma sous proteus, pas un truc fait sous eagle  ... je suis content pour la journée

Autant apprendre avec des truc pas trop mal... c'est un gain de temps

quelle version de proteus tu as ? J'ai la 7.5 mais j'ai pas les prises jack/ds1307/... tu as fait les empreintes toi même ?

Version 7.7 sp2 build 9089 (j'ai un zip si tu veux mais c'est pas bien :p)... mp...
Voui, j'ai fait les composants schéma + empreintes moi même... c'est pas bien dur !

@Artouste

BAT1 à 1.5V  pour le ds1307 c'est hors limites

Oupsss... comme le quartz, j'ai pas fait attention, la pile est une 3v


Autre question, c'est quoi "big-bang serial" ?

Merci à tous :stuck_out_tongue:

Autre question: Les triacs sont assez fragiles... peut on les relier avec une petite plaque métallique et des vis ?

Apres réflexion, ajouter un 74HC595 est pas bien compliqué mais j'ai peur de manquer de place sur la carte et tout ça pour juste charger directement dessus.
Le plus simple est de charger la puce avant de la mettre sur le circuit je vous l'accorde.

Que feriez vous ?

Voici le schéma modifier avec la partie manquante:
http://crevettegreg.free.fr/Arduino/capture2.pdf
http://crevettegreg.free.fr/Arduino/capture2b.pdf

Merci d'avance pour vos idées...

tetardo:
Normal, le shéma des triacs est sur une autre feuille... je les ai testé et il fonctionnent parfaitement.
Pour les broches RX et TX, je n'avais pas pensé que cela pouvait gêner a l'envoi du programme... le mieux est du coup d'essayer de les avoir toujours libre. Un petit 74HC595 devrait m'aider a les libérer.

Non pas la peine :wink: tu ajoute juste deux jumpers, quand tu programme tu enlève les jumpers et quand tu est en fonctionnement tu les remets, simple, rapide, pas chère, et terriblement efficace :wink:

tetardo:
Non non, il est en 16, j'ai juste pas fait attention a la valeur sur mon shéma (merci :p)

Ok :slight_smile:

tetardo:
Autant apprendre avec des truc pas trop mal... c'est un gain de temps

Bonne philosophie ! proteus FTW 8)

tetardo:
Autre question, c'est quoi "big-bang serial" ?

C'est une technique qui permet de programmer un µc AVR en utilisant le circuit FT232 qui normalement s'occupe de la liaison série, en faite il a une fonction spécial qui permet de transformer les broches de signal (DTR, RTS, ...) en sortie 0/5v, et donc de faire un programmateur ISP en software.

tu ajoute juste deux jumpers, quand tu programme tu enlève les jumpers et quand tu est en fonctionnement tu les remets, simple, rapide, pas chère, et terriblement efficace

Pas *on !
Allez..., ajout de 2 jumpers !

Pour le fun, une autre petite question:

J'ai testé mes triacs sur des ampoules à filament. Normalement je devrais avoir un allumage instantané mais je n'obtiens pas ce résultat. L'ampoule s'allume en deux fois. Pendant une demi seconde (je ne sais pas cb de temps, c'est trop rapide) l'ampoule s'allume un peu puis s'allume complètement et reste allumée pour de bon. Avez vous une idée ?

C'est pas gênant, mais c'est pas très propre... et j'ai peur que cela abîme les appareils avec transfo comme mon filtre ou mon électrovanne.

tetardo:
J'ai testé mes triacs sur des ampoules à filament. Normalement je devrais avoir un allumage instantané mais je n'obtiens pas ce résultat. L'ampoule s'allume en deux fois. Pendant une demi seconde (je ne sais pas cb de temps, c'est trop rapide) l'ampoule s'allume un peu puis s'allume complètement et reste allumée pour de bon. Avez vous une idée ?

Il faudrait que tu jette un œil au datasheet de ton triac, il doit bien y avoir les temps de commutation quelque pars.
Les triacs/thyristor c'est pas mon truc, faudrait un électronicien de la vieille école pour nous éclairer :wink:

Il faudrait que tu jette un œil au datasheet de ton triac, il doit bien y avoir les temps de commutation quelque pars.

je regarde coté triac ou coté optocoupleur ?
Si il y a un temps, c'est je suppose pas réglable ?

Je n'ai pas optez pour des relais pour une question de longévité et de sécurité.
Tu utilises autres choses que triac ou relais ?

Les triacs/thyristor c'est pas mon truc, faudrait un électronicien de la vieille école pour nous éclairer

T'es un petit jeune toi ?! Moi aussi... De toute façon on ne sera jamais des vieux... Il y a toujours plus vieux...

J'ai bien ajouté mes deux jumpers sur RX et TX, ce qui correspond au pin D0 et D1 de l'arduino.
Mes broches icsp sont sur les pins D13, D12, D11 et Reset.

Euh... c'est qui le rapport avec RX et TX ?

tetardo:
je regarde coté triac ou coté optocoupleur ?
Si il y a un temps, c'est je suppose pas réglable ?

Triac ou opto ... bonne question, si c'est vraiment un gros temps de latence je dirai triac, et oui c'est pas réglable (ce serait pas drôle sinon :grin:)

tetardo:
Je n'ai pas optez pour des relais pour une question de longévité et de sécurité.
Tu utilises autres choses que triac ou relais ?

Moi je suis très mosfet, c'est hyper simple à utiliser, et ça résiste à toute les conn*rie de câblage que je peut faire (et dieu sait que dés fois j'en fait des belles :P).

tetardo:
T'es un petit jeune toi ?! Moi aussi... De toute façon on ne sera jamais des vieux... Il y a toujours plus vieux...

Yep! étudiant en IUT :slight_smile:

tetardo:
Euh... c'est qui le rapport avec RX et TX ?

ISP -> charger le bootloader, RX/TX -> utiliser par le bootloader pour charger le prog depuis l'ide arduino.
Tu peut aussi utiliser l'ISP pour envoyer directement ton programme mais c'est un peu plus lourd à utiliser.

ISP -> charger le bootloader, RX/TX -> utiliser par le bootloader pour charger le prog depuis l'ide arduino.
Tu peut aussi utiliser l'ISP pour envoyer directement ton programme mais c'est un peu plus lourd à utiliser.

Booooouuuu, je suis perdu

Si je comprend bien, je n'ai pas besoin de l'isp (mes 6 broches) pour charger le programme dedans. c'est juste pour charger le bootloader, c'est ça ?
Donc si j’achète mes atmega sur ebay avec deja un bootloader arduino dessus seul 4 pin suffisent: +, -, RX et TX et du coup je peux virer mes 6 broches iscp ?

mais comment je relier tout ça a mon pc ?

Mon objectif est le suivant: Réaliser un circuit que je peux reprogrammer suivant mes besoins. Soit pour un bac de maintenance, soit un bac de repro
Donc brancher un arduino à mon pc, brancher mon circuit a cet arduino et op j'upload ?
via RX et TX coté circuit et coté arduino, RX et TX aussi ?

Je nage !

tetardo:
Si je comprend bien, je n'ai pas besoin de l'isp (mes 6 broches) pour charger le programme dedans. c'est juste pour charger le bootloader, c'est ça ?
Donc si j’achète mes atmega sur ebay avec deja un bootloader arduino dessus seul 4 pin suffisent: +, -, RX et TX et du coup je peux virer mes 6 broches iscp ?

Avec l'isp tu peut charger directement le programme (mais il faudra d'abord allez chercher le .hex que l'ide aura généré), soit le bootloader.
Avec le bootloader tu as juste à relier TX/RX sur un convertisseur usb série-ttl (ou celui d'une carte arduino) et utiliser l'ide normalement.

tetardo:
Donc brancher un arduino à mon pc, brancher mon circuit a cet arduino et op j'upload ?
via RX et TX coté circuit et coté arduino, RX et TX aussi ?

Tu peut le faire avec les deux, soit avec l'ISP et arduinoISP, soit avec le bootloader série et une carte arduino en convertisseur usb/série.
Si tu parle sur la méthode ISP ta même pas besoin du bootloader mais c'est moins pratique à utiliser je trouve.

Donc je resume ^^ (j'en ai besoin...)

Avec l'isp tu peut charger directement le programme (mais il faudra d'abord allez chercher le .hex que l'ide aura généré), soit le bootloader.

Galère comme méthode... j’abandonne celle la...

Avec le bootloader tu as juste à relier TX/RX sur un convertisseur usb série-ttl (ou celui d'une carte arduino) et utiliser l'ide normalement.

Cool ! Celui de la carte arduino il est où ? les 4 pins x3 ? Si oui, quelle est l'ordre des pins ? Merci

Donc 4 pin sur mon circuit suffise: +, -, RX et TX. Cooool

Allez je modif tout ça et je reviens pour la connexion entre l'arduino et mon circuit

USB 2.0 to UART TTL 6PIN Module Serial Converter CP2102 -> 2.92 $ avec frais de port sur ebay... Hallucinant !

Merci pour ces réponses !

tetardo:
Cool ! Celui de la carte arduino il est où ? les 4 pins x3 ? Si oui, quelle est l'ordre des pins ? Merci

Il est sur D0/D1 mais pour l'utiliser en temps que convertisseur usb/série il faut enlever l'ATmega (sinon c'est son bootloader qui va répondre et pas celui de la carte cible).

tetardo:
USB 2.0 to UART TTL 6PIN Module Serial Converter CP2102 -> 2.92 $ avec frais de port sur ebay... Hallucinant !

L'ordre des broches est sur la photo du module, il te faut RX, TX, GND, VCC et RESET (qui sera à câbler sur le DTR du module usb/série), n'oublie d'inverser TX et RX, TX module sur RX de l'atmega et RX module sur TX de l'atmega :wink:

Ok je pense avoir piger le truc.
J'ai trouvé ça et effectivement simple ! (

http://www.theparsley.com/arduino/diy/

)

Par contre il utilise pas le reset... Est il indispensable ?
Si je comprend bien, un cable entre le reset du convertiseur vers le reset de mon circuit permet un autoreset via le logiciel arduino en fin d'upload ?

Je vais modifier mon schéma pour virer les 6 broche et les remplacer par les 4, bien plus simple, merci !