Voilà pour un projet perso je cherche un moyen de programmer un atmega16 directement par un Rpi via la liaison SPI.
Mes recherches m'ont amené à voir que c'est possible via avrdude, le problème c'est que dans les tuto que j'ai pu voir, le programme pour l'atmega est développé en C et non dans le langage utilisé par l'IDE de l'arduino. Or je ne maitrise pas vraiment ce langage là.
Donc je suis à la recherche d'un tuto (ou juste de mots clés ^^) qui me permettrait d'une part de compiler le fichier .ino en .hex pour un atmega16 (je l'utilise avec l'oscillateur 8MHz interne) puis de transférer le .hex dans l'atmega (à priori ça c'est via avrdude)
Actuellement, j'utilise un arduino uno pour dans un premier temps transférer le bootloader qui va bien (grâce à MightyCore qui permet la prise en charge de l'atmega16) puis je programme l'atmega par ISP.
Mon projet utilise un Rpi et un atmega16 qui dialogue en I²C, pouvoir programmer directement l'atmega sans la retirer du circuit serait vraiment un plus.
docbrownd:
Mes recherches m'ont amené à voir que c'est possible via avrdude, le problème c'est que dans les tuto que j'ai pu voir, le programme pour l'atmega est développé en C et non dans le langage utilisé par l'IDE de l'arduino. Or je ne maitrise pas vraiment ce langage là.
docbrownd:
Voilà pour un projet perso je cherche un moyen de programmer un atmega16 directement par un Rpi via la liaison SPI.
Pourquoi pas !
docbrownd:
Mes recherches m'ont amené à voir que c'est possible via avrdude, le problème c'est que dans les tuto que j'ai pu voir, le programme pour l'atmega est développé en C et non dans le langage utilisé par l'IDE de l'arduino. Or je ne maitrise pas vraiment ce langage là.
Arduino n'est pas un langage. L'IDE Arduino utilise un mélange de C et C++
Installe Arduino sur ton RPI
docbrownd:
Donc je suis à la recherche d'un tuto (ou juste de mots clés ^^) qui me permettrait d'une part de compiler le fichier .ino en .hex pour un atmega16 (je l'utilise avec l'oscillateur 8MHz interne) puis de transférer le .hex dans l'atmega (à priori ça c'est via avrdude)
Si tu utilises Arduino sur ton RPI, ton problème est résolu.
docbrownd:
Actuellement, j'utilise un arduino uno pour dans un premier temps transférer le bootloader qui va bien (grâce à MightyCore qui permet la prise en charge de l'atmega16) puis je programme l'atmega par ISP.
Pourquoi passer par une UNO ?
docbrownd:
Mon projet utilise un Rpi et un atmega16 qui dialogue en I²C, pouvoir programmer directement l'atmega sans la retirer du circuit serait vraiment un plus.
Utilise un connecteur permettant d'isoler les pins utilisées lors de la programmation.
Le problème c'est que du coup il me faut une interface graphique sur le RPi. c'est pas bien compliquer mais du coup c'était pas l'idée (surtout qu'il faut avoir un écran sous la main, ce qui n'est pas pratique dans le cadre de ce projet).
ce ne serait pas possible de le faire en ligne de commande ?
Sinon certe les programmes .ino sont en c mais avec de légère différence non ? (genre les mots clés, etc) je peux pas utiliser un .ino directement comme source de compilation, si ?
PS : j'utilise l'uno car je l'ai sous la main et qu'il me semblait que c'était le plus simple pour programmer un AVR
PS2: je suis encore débutant avec les AVR, désolé si c'est des questions stupides (pourtant j'ai fait des recherches avant :s)
docbrownd:
Le problème c'est que du coup il me faut une interface graphique sur le RPi. c'est pas bien compliquer mais du coup c'était pas l'idée (surtout qu'il faut avoir un écran sous la main, ce qui n'est pas pratique dans le cadre de ce projet).
VNC et Co existent
docbrownd:
ce ne serait pas possible de le faire en ligne de commande ?
oui évidemment mais c'est pas le plus pratique et ça nécessite d'avoir l'arduino uno avec soi (ou alors on peut programmer l'atmega sans ? genre avec un simple cable USB<>Série ? )
Je reviens juste à ma question initiale. Comme je suis têtu, j'ai poursuivi mes recherches.
Donc j'arrive à compiler les fichiers ino en hex (entendre par là sans erreurs de compilations) et à les transférer, le tout en ligne de commande. Malheureusement le programme ne fonctionne pas, alors que si je pars d'un programme en C, aucun soucis donc le problème vient sans doute de la compilation.
Pour info (si ça intéresse), j'ai utilisé le makefile dispo ici et cette commande avrdude :
Le Rpi et l'atmega étant relié par une liaison SPI (activé sur le RPI évidemment)
Voilà, en attendant de comprendre d'où vient le problème, je vais probablement passer par vnc même si c'est le moins pratique (c'est plus simple d'ouvrir un terminal ssh sur un téléphone qu'une sessiosn vnc, surtout sur le mien :s)
Ensuite j'ai transféré le fichier .hex comme précédemment indiqué.
Si ça peut servir à d'autres (pour info j'ai juste testé avec le programme blink.ino, renommé en blink.cpp auquel j'ai ajouté la ligne #include<Arduino.h> au tout début du fichier)