Problema Rumba e arduinoISP

Buonasera, dopo aver smanettato parecchio con la mia rumba (il solito problema alla porta usb) sono giunto ad un punto morto..Tempo fa avevo riscontrato lo stesso problema alla porta usb, in quel caso però il pc mi visualizzava nel device manager un dispositivo non riconosciuto. Armandomi di pazienza e driver ero riuscito a mettere la scheda in dfu mode e flashare nuovamente l'usb2serial. Adesso, dopo aver utilizzato la scheda in stand alone per parecchio tempo, ho la necessità di aggiornare marlin (lo sketch caricato sulla scheda). Ho tentato di collegarla al pc con vari cavi usb, ho provato a ripetere lo stesso procedimento del dfu mode (invano), gli ho urlato contro ma niente di tutto questo è servito.

Avendo a disposizione un arduino uno rev3 (originale) ho tentato di caricare di file .hex (usb2serial) fornito dalla wiki di rumba (Link) utilizzando lo sketch ArduinoISP. Ho collegato i cavi come da tutorial ufficiale (inserendo anche il condensatore da 10uF tra reset e gnd). In seguito da prompt dei comandi (windows) ho scritto :

"C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe" -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -v -v -v -v -p m16u2 -P com8 -c arduino -b 19200 -U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0xf6:m

tra le varie stringhe vi posto quelle significative :

Vtarget         : 0.0 V
Varef           : 0.0 V
Oscillator      : Off
SCK period      : 0.1 us
avrdude.exe: AVR device initialized and ready to accept instructions

Reading |                                                    | 0% 0.00savrdude.e
xe: Send: u [75]   [20]
avrdude.exe: Recv: . [14] . [ff] . [ff] . [ff] . [10]
Reading | ################################################## | 100% 0.04s

avrdude.exe: Device signature = 0xffffff (retrying)
avrdude.exe: Device signature = 0xffffff
avrdude.exe: Yikes!  Invalid device signature.
             Double check connections and try again, or use -F to override
             this check.
  • Come mai l'oscillatore è off? Bisogna metterne uno esterno? Se si dove va messo?
  • Come risolvo il problema del device signature? Leggendo anche in questo forum sembra che sia un problema dei fuses..cosa posso fare per verificare che si tratta realmente di questi?

Grazie mille per le risposte

nessuno ha idea di cosa possa fare per sistemare la board? sarei tentato di acquistare un usbasp e tentare di riprogrammare il chip dell'usb. L'unico motivo che mi trattiene è legato al fatto che probabilmente si sono incasinati anche i fuses, ed in tal caso con un programmatore del genere non sarei in grado di risolvere il problema. Per questo genere di problemi ci vorrebbe un avr dragon (minimo 50€) , ma anche qui leggevo che non è consigliato agire sul chip mentre è collegato al resto del circuito..insomma, la scheda è da buttare?

Premetto che NON conosco la scheda di cui stai parlando (... cosa è ? Un qualche cosa basato sulla Arduino Mega 2560?), comunque, se è dotata di un connettore ISP ti suggerisco il programmatore AVRISP mkII di Atmel.

Anche se loro direttamente non lo fanno più, si trovano dei compatibili ad un prezzo onesto ... es. su Amazon ...

Tramite questo puoi sia programmare i fuse delle MCU AVR sia, ovviamente, caricare il codice.

Poi ... vedi tu ...

Guglielmo

P.S.: Se la scheda è dotata di un connettore per la programmazione ISP, si suppone che, chi l'ha progettata, abbia pensato alla cosa e che la programmazione si possa fare anche se la MCU è montata sul circuito. Ovviamente la scheda DEVE essere alimentata dato che il programmatore NON fornisce alimentazione.

Innanzitutto grazie mille per la risposta, mi hai acceso un barlume di speranza..hai perfettamente capito il genere di scheda, sostanzialmente è un arduino mega2560 + circuito per il controllo dei motori, alimentazioni varie,ecc..

la scheda è dotata di due header per la programmazione isp (uno vicino l'usb per riprogrammare il 16u2, ed uno vicino la mcu appunto per l'atmega2560) quindi molto probabilmente (come dici tu) chi l'ha progettata ha pensato anche a questo genere di inconvenienti.

per quanto riguarda il programmatore (ti ringrazio anche per il link) vedrò di cercarlo in qualche store ben fornito in modo da comprare (eventualmente) altri componenti che potrebbero servirmi e ammortizzare un pò la spedizione.

ultima nota, nella wiki dela scheda in questo paragrafo parla della programmazione jtag e isp. Sono elencate delle informazioni per riprogrammare correttamente la scheda cioè :

 ATmega 2560 STK500v2/Arduino2560 Bootloader

HEX: File:RRD-RUMBA ATmega2560 ArduinoBoot.hex.zip

FUSES: E: 0xFD / H: 0x10 / L: 0xFF

    BOD=2.7V
    OCD+JTAG+ISP=ENABLED
    EESAVE=ENABLED
    BOOTSZ=4k
    BOOTRST=ENABLED
    EXTXOSC_8MHZ_XX_16KCK_65MS 

Source: Arduino bootloader


16U2 LUFA/Arduino based USB2Serial Firmware

HEX: File:RRD-RUMBA ATmega16U2 USB2Serial.hex.zip

FUSES: E: 0xF6 / H: 0xD9 / L: 0xFF

    BOD=2.7V
    ISP=ENABLED
    EXTXOSC_8MHZ_XX_16KCK_65MS 

Source: File:RRD-RUMBA SRC 16U2 FIRMWARE.zip (Atmel Studio 6 project)

Cosa vogliono dire "BOD,EXTXOSC,ecc.."? L'unico che riesco ad intuire è EXTXOSC che dovrebbe indicare "external oscillator" o sbaglio? Sulla scheda (foto) sono già montati due oscillatori da 16MHz (uno per il 16u2 ed uno per l'atmega2560), quindi perchè usare (e dove mettere) l'oscillatore esterno?

Grazie ancora

Oiram92:
Cosa vogliono dire "BOD,EXTXOSC,ecc.."? L'unico che riesco ad intuire è EXTXOSC che dovrebbe indicare "external oscillator" o sbaglio?

Se scarichi un qualsiasi eseguibile per la programmazione dei fuse (... es. AVR8 Burn-O-Mat su Win o AVRFuses su OS X ... ma ce ne sono tanti altri), o ti studi con attenzione il datasheet del ATMega 2560 ... capirai cosa significano quelle sigle :wink:

Sono praticamente una rappresentazione delle varie cose che puoi impostare con i fuses ... il BOD, il Boot Size, ecc. ecc.

Guglielmo

Sono i valori che devi impostare ai fuse, aiutati con questo:

http://www.engbedded.com/fusecalc

Comunque la situazione non è molto rosea, sembra proprio che il microcontrollore della tua scheda sia passato a miglior vita... Controlla bene le connessioni ICSP e, come ti si dice, alimenta esternamente la scheda.

Grazie ancora ad entrambi per le spiegazioni. Utilizzando il programma suggerito da guglielmo (AVR8 Burn-O-Mat) ho visto questi altri parametri (BOD,EXTXOSC,ecc..) però c'è una cosa che non mi torna..

Inizialmente imposto i fuses (e,l,h) inserendo i valori scritti sulla wiki (e clicco su apply), poi vado a cambiare il valore BOD portandolo a 2.7V (sempre seguendo la wiki), però a quel punto tornando nel tab dei fuse mi cambia il valore dell'efuse portandolo da F6 a F5 (mentre gli altri restano invariati). Supponendo che non sia un bug del programma sono portato a pensare che nella wiki abbiano scritto dei parametri errati..oppure sbaglio io in qualcosa?

In ogni caso penso di acquistare il programmatore consigliato da guglielmo e fare nuovi tentativi, mal che vada avrò aggiunto un nuovo strumento al mio mini laboratorio :slight_smile:

PS: dato che preferisco spendere bene i soldi, se riuscissi a trovare un avr dragon (o magari consigliatemi voi se esiste qualcosa di meglio) a buon prezzo sarebbe una scelta più intelligente rispetto all'AVRISP mkII compatibile?

l'AVR Dragon è un apparecchio che, oltre a fare da programmatore ISP permette, lavorando con Atmel Studio, di fare anche debug e, con i chip NON saldati alla scheda (ovvero montati su apposito zoccolo e collegati al Dragon) può fare anche da programmatore HV.

Se non sei uno "specialista" di Atmel Studio, ma usi solo l'IDE di Arduino ... non ne vale la pena ... non lo sfrutteresti, in caso contrario, si.

E' ovvio che, se cambi il BOD, cambia il valore dei fuses ... visto che ogni bit nei fuses indica un qualche cosa di ben preciso (...per i dettagli ... ti rimando di nuovo allo studio del datasheet della MCU).

Guglielmo