Debian Wheezy - AVRIsp MKII

Bonjour à tous,

Malgrè mes recherches et plusieurs essais et trifouillages, je n'arrive plus à faire fonctionner mon programmateur ISP sous Linux. J'ai déjà résolu ce problème lorsque ma Debian était à la version Lenny avec une règle UDEV. Hors, il semblerait que les choses aient un peu changé depuis.

J'avouerais que je ne sais plus par quel bout prendre la chose. Le résultat infructueux de mes tentatives se soldent actuellement par une erreur du logiciel Arduino évoquant l'impossibilité de contacter le port Usb /dev/ttyUSB0...!!

J'ai tout d'abord remarqué que l'écriture de la règle UDEV avait un peu changé, je l'ai donc adapté ainsi :

/etc/udev/rules.d/60-avrisp.rules

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"
 
# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout"
 
LABEL="avrisp_end"

J'ai tenté également une approche plus condensé :

/etc/.../90-avrmkii.rules

SUBSYSTEM=="usb_device", ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout", NAME=="avrmkii"

Je ne me rappelle plus si le périphérique doit apparaître dans l'onglet "port série" du logiciel Arduino.

Quoi qu'il en soit, j'arrive, à priori, à écrire le bootloader sur le microcontroleur (la led de l'isp clignote pendant la procédure et le logiciel ne retourne pas d'erreur). Mais je reste bloqué sur l'impossibilité d'injecter mon propre programme ou l'exemple 'Blink' fournit par défaut.

J'ai modifié le fichier .../Hardware/arduino/Boards.txt comme suit :

.../...

atmega328ii.name=AVRISP mkII w/ ATmega328 20Mhz

atmega328ii.upload.protocol=avrispmkii
atmega328ii.upload.maximum_size=30720
atmega328ii.upload.speed=19200
atmega328ii.upload.using=avrispmkii

atmega328ii.bootloader.low_fuses=0xFF
atmega328ii.bootloader.high_fuses=0xDA
atmega328ii.bootloader.extended_fuses=0x05
atmega328ii.bootloader.path=atmega
atmega328ii.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328ii.bootloader.unlock_bits=0x3F
atmega328ii.bootloader.lock_bits=0x0F

atmega328ii.build.mcu=atmega328p
atmega328ii.build.f_cpu=20000000L
atmega328ii.build.core=arduino

atmega328ii.build.variant=standard

Je suppose puisque j'arrive à écrire le Bootloader que mon problème se situe dans la modification ci-dessus, ou dans un oubli quelque part ailleurs, et je sollicite donc votre aide pour m'apporter des pistes ou résoudre mon problème.

J'ai l'impression que ce problème a été maintes fois rebattu mais là, vraiment, je planche dur !!

Merci pour votre aide.

Zoroastre.

Salut,

Que donne le syslog ou dmesg à l'insertion de la prise USB ?
Normalement, tu devrais voir apparaître le nom du périphérique qui y est associé.

Salut,

cat /var/log/syslog | grep -i 'avr'

.../...
May 15 21:42:51 debian-k kernel: [ 2675.811029] usb 3-1: Product: AVRISP mkII

La commande lsusb me retroune une détection concluante.

@+

Zoroastre.

et le reste autour de ce message ?

En fin de compte, si j'ai bien compris, tu as réussi à programmer le bootloader. Quel message obtiens-tu lorsque tu essayes de téléverser un programme dans ta cible.

Bonsoir fdufnews,

J'obtenais une erreur de communication avec le port ttyUSB0. J'ai donc pré-supposé que mon fichier board.txt était incorrect et/ou incomplet.
En ce qui concerne la partie UDEV linux, j'ai, grosso modo, repris mon anciènne règle et l'ai adapté au goût du jour.

J'ai finalement résussi à faire fonctionner mon programmateur avec mon ATmega328 en standalone, même si je dois avouer être confronter à un autre problème assez bizarre...(phase de test en prévision).

atmega328ii.name=AVRISP mkII w/ ATmega328 16Mhz

#atmega328ii.upload.protocol=arduino
atmega328ii.upload.maximum_size=30720
atmega328ii.upload.speed=19200
#atmega328ii.upload.using=stk500v2

atmega328ii.bootloader.low_fuses=0xFF
atmega328ii.bootloader.high_fuses=0xDA
atmega328ii.bootloader.extended_fuses=0x05
atmega328ii.bootloader.path=atmega
atmega328ii.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328ii.bootloader.unlock_bits=0x3F
atmega328ii.bootloader.lock_bits=0x0F

atmega328ii.build.mcu=atmega328p
atmega328ii.build.f_cpu=16000000L
atmega328ii.build.core=arduino

atmega328ii.build.variant=standard
#############################################################
#Set permissions for the AVRIspMKII programmer granting read- and write-access for every user

SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="0666", GROUP="dialout", SYMLINK+="avrmk2"

Respectivement mes modifs dans le fichier board.txt et ma règle UDEV situé /etc/udev/rules.d/99-avrispmkii.rules

Actuellement, j'ai l'impression que mon programme (robot pendule inversé - moteur Polulu + SN754410 + MPU6050) qui utilise le Timer1 - Fast Pwm fonctionne à moitié (1 moteur sur 2 + I2C instable).
Ce qui est surprenant est que j'ai réalisé tous les pontages fils à fils entre ma standalone (sans µC) et une duemilanove afin de valider mon programme et avec réussite. En résolvant mon souci d'ISP, je me retrouve confronté à des incohérences qui peuvent soit provenir du programmateur lui-même, de mon circuit ou d'un des compsants allant du µC à ses périphériques directs.

J'aimerais être certain que mes modifications citées plus haut sont valides, sinon je devrais résoudre le pourquoi du comment mon programme fonctionne impéccablement sur ma duem. et pas du tout sur un 328 via ISP.

@+

Zoroastre.