[Résolu]programmer un 168 stand alone via IDE

Oui, on est à fond dans l'arduino en ISP, mais là, je voudrais aller plus loin :

J'ai acheté deux écrans LCD graphiques "GLCD160128"

Ils sont interfacés par un module sparkfun qui contient les algorithmes pour dessiner sur l'écran. le coeur de ces modules, c'est un ATMEGA168, et j'ai soudé un connecteur ISP sur le module, puisque c'était prévu. Un petit coup d'arduino-isp + avrdude, le 168 est reconnu. Je peux donc transférer un nouveau programme dans le 168! Youpi! Le prog qui est actuellement dedans est vraiment pourri, je veux le remplacer.

Je peux sûrement le bootloader, puisque l'IDE propose de bootloader les 168.

Mais voilà, pour des sombres histoires de fainéantise, j'aimerais programmer le 168 depuis l'IDE arduino, comme on le fait avec nos cartes arduino.

Pour ça, je possède une carte UNO avec le 328 en DIP, donc enlevable, pour mettre des fils aux bons endroits et piquer les signaux nécessaires pour les mettre sur mon 168 (j'ai moyen de souder des fils sur presque toutes les pattes).

Donc en disposant de ma UNO "DIP" et d'un 168, croyez-vous que je puisse arriver à quelque chose?

Bonjour,

Plusieurs personnes sur le forum sont sur un sujet identique, regarde ce lien il devrait te permettre de faire ce que tu veux :
http://arduino.cc/forum/index.php/topic,76120.0.html

oui, j'ai tout lu, mais une fois bootloadé, je fais comment pour programmer mon 168 juste en cliquant sur "upload" dans l'IDE?

soit tu clique sur burn bootloader > with arduino-isp

ou sinon en ligne de commande :

avrdude -p m168 -c avrisp -b <vitesse du port série dans le sketch> -P <nom du port série> -U flash:w:<fichier .hex du bootloader>

tu trouvera le .hex du bootloader dans arduino/hardware/core/arduino/bootloader

Bonjour,

Une fois que tu as chargé le BL dans le 168, soit tu le piques sur la board de ton UNO pour le programmer avec l'IDE, soit (si il possede déja une horloge externe) tu interfaces un FTDI entre ses pins Tx/Rx et le port USB de ton ordinateur et tu le programmes à partir de l'IDE.


Stéphane.

Dans mon idée :
le module à reprogrammer :

Je booload mon 168 via arduino-ISP. Je retire le 328 DIP de ma carte arduino UNO, facile. Je relie le module sparkfun via son connecteur série (pins Rx/Tx, GND, Vcc) et le reset par son connecteur ICSP comme si-dessous :

Et ça marcherait? C'est assez le bazar, car je sais pas trop comment ça se passe, la prog au niveau hard...

RESOLU!

En effet, après avoir longtemps galéré pour brancher l'UNO en ISP sur le module sparkfun, et au final m'apercevoir que j'avais modifié serial.cpp pour une autre application, j'ai donc réussi à bootloader mon 168 via IDE en lui disant de me le bootloader en Arduino diecimila W/ ATmega168 (il y a d'autres possibilités, mais j'ai pris celle là). Pour info, je n'ai pas eu besoin de la résistance de 120 ohms, ça a marché sans.

  • Ensuite, j'ai fait le câblage comme sur mon bout de papier.
  • J'ai enlevé le chip 328 de ma carte UNO (pour qu'il n'interfère pas sur la liaison série),
  • j'ai fait un shield qui me récupère les lignes 5V, GND, Reset, Rx et Tx et les relies à un connecteur ISP et au connecteur série du module (en mettant des connecteurs de carte son, c'est nikel, voir photo).


de gauche à droite : le module sparkfun ATmega168 sur LCD, la carte UNO modifiée avec son shield, le 328 retiré, le sield ISP.

  • une fois le tout câblé, j'ai fait un petit "blink" (le 168 contrôle le back-light du LCD sur la pin 10), clic sur Upload, et hop, le rétro-éclairage du LCD clignote!!! J'ai eu une légère érection du coup...

Donc pour ceux qui veulent programmer un ATmega stand alone via l'IDE arduino, il suffit juste d'avoir une carte UNO avec un chip au format DIP, les plus motivés mettront un coup disqueuse sur le chip smd pour le virer s'ils ne trouvent pas de carte Rev2.

Et je récupère un 328 en arduino pour un prochain montage stand-alone... ]:smiley:

Nikel ça :wink:

tu les à eu ou tes "gros" LCD ?

Chez Lextronic, à 55.28€ HT. Mais c'était en connaissance de cause, je savais avant de les acheter qu'il faudrait certainement les reprogrammer.
Par la suite, j'ai eu la belle surprise de voir que le soft tournant sur le 168 utilisait un buffer série (rotatif) de 416 octets avec un "if (index > 409) index = 0;", donc les octets reçus entre 410 et 416 sont perdus... pourquoi??? alors qu'un programmeur sait très bien qu'il est beaucoup plus facile et simple d'indexer un buffer "rotatif" de 256 octets avec un byte... Il y a plein de bugs, comme le tracé des lignes qui se fait sur une incrémentation verticale, du coup, les lignes horizontales ne sont que deux points aux extrémités du segment...

Dans mon idée d'utilisation, c'est pour afficher des jauges, des valeurs de mesure... donc autant que ce soit le 168 qui dessine tout seul une jauge à partir d'une valeur reçue en série plutôt que de lui envoyer une série interminable de commandes genre "set_pixel(x, y);"...

Ecran à recommander uniquement aux bidouilleurs de code, car en utilisation normale, c'est archi-nul pour le prix.

Ah oui chère la bestiole quand même :astonished:

Tu pourrais nous démarrer un petit post uniquement pour ce p'tit gros lcd :wink:

genre comment le reprogrammer? ben là, je gère très bien le back-lighting, mais pas moyen d'obtenir le moindre pixel... car chez toshiba, les datasheets sont pas très claires... mais j'y planche... Quand à vous expliquer comment il marche... fiou! pas gagné, je n'ai fait que recopier du code car je comprends rien dans les docs (j'en ai 50 pages imprimées qui se promènent sur mon bureau, et toujours rien..., mais rien ne se passe!)

J'en avais déjà parlé (description) dans le topic des LCD, où chacun devait parler de son expérience... Mais je ne le retrouve plus...

EDIT à 0h30 : finalement, j'aivais juste oublié de mettre le port C en OUTPUT, donc l'écran LCD ne recevait pas les signaux de contrôle... pfff, le boulet... Maintenant, il marche, il fait des pixels, des lignes, des rectangles... reste encore la gestion de texte à voir...