Go Down

Topic: Modificare firmware 16U2 dell'Arduino Uno per eliminare l'autoreset (Read 5 times) previous topic - next topic

Testato

non le ho apportate io  :)
cerca ERIED, e' un utente cileno, ha fatto un capolavoro, non solo si risolve l'autoreset, ma anche i problemi con bluetooth.
il tutto compatibile anche con processing.

Ho postato tutti i miei test nel topic bluetooth
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72

@astrobeed:
adesso non ricordo ma tempo fa ho studiato la cosa perché volevo replicare anch'io lo stesso modo di reset della Leonardo e pensavo che ci fosse qualcosa nel bootloader ma poi, guardandolo, non trovai nulla. Studiando il datasheet ho trovato invece che era una cosa a livello di microcontrollore.

leo72

@astro:
ecco, qui ho spiegato come avviene la cosa:
http://arduino.cc/forum/index.php/topic,121632.msg916326.html#msg916326
Non è un fuse, mi ero confuso, ma una R su un determinato pin.

astrobeed


Non è un fuse, mi ero confuso, ma una R su un determinato pin.


Viene settato HWBE che consente di scegliere tramite lo stato logico presente su PE2, durante il reset è un input, se parte il programma utente oppure il bootloader, in pratica consente di avviare Leonardo senza passare per il bootloader se non è necessario.

PaoloP

Ho visto su Git che c'è il codice del 16U2 per la UNO (https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/atmegaxxu2), però non trovo quello della DUE (https://github.com/arduino/Arduino/tree/ide-1.5.x/hardware/arduino/sam)
Manca la cartellina Firmware. Probabilmente la metteranno in seguito.  =(
Volevo verificare le differenze a livello di codice.  :~

leo72


leo72


non le ho apportate io  :)
cerca ERIED, e' un utente cileno, ha fatto un capolavoro, non solo si risolve l'autoreset, ma anche i problemi con bluetooth.
il tutto compatibile anche con processing.

Ho postato tutti i miei test nel topic bluetooth


Ho trovato solo la .dll già compilata ma nessun accenno a cosa ha modificato.

Testato

Lui ha modificato solo la dll ? Quindi niente linux ?

Ricordo un topic in merito sul sito internazionale dove aeva spiegato. Appena lo trovo lo posto.
Anche lesto parlo dell abbandono di serialrxtx, un interesse in tal senso sarebbe un bel progetto.
Ho delle mail personali con eried dove mi disse varie cose.
Appena metto mano al pc posto qui.

Lo ontattai perche volevo creare la versione 64bit, poi ho iniziato ad usare la 32 e non ne ho piu parlato
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

astrobeed


Lui ha modificato solo la dll ? Quindi niente linux ?


Vediamo un attimo di chiarire meglio la questione, quella dll modificata è utilizzabile solo con il terminale seriale del IDE ed eventuali programmi utente sviluppati sotto Processing/Java previa specifica inclusione, il problema autoreset rimane sempre se si utilizzano altri software per l'emulazione di un terminale seriale come HyperTerminal o Putty, oppure si si usano software generici che comunicano con Arduino.
La vera soluzione è gestire la disattivazione dell'autoreset direttamente sul 8/16u2, ovvero deve ignorare i segnali DTR/RTS e non resettare l'ATmega, questa funzionalità deve essere attivabile/disattivabile a piacere, il modo più semplice sarebbe utilizzare un pin del 8/16u2 collegato ad un jumper, a seconda dello stato l'autoreset è attivo o disattivato.
Dato che sulle varie revisioni della UNO e della MEGA2560 è sempre presente il connettore per la programmazione ISP del 8/16u2 si può utilizzare una coppia di pin collegati a questo per il jumper selezione autoreset, non si deve modificare nulla a livello di hardware e non si perde la possibilità di programmare l'8/16u2 tramite ISP.

astrobeed


si può utilizzare una coppia di pin collegati a questo per il jumper selezione autoreset,


Mi sono espresso male, va utilizzato il pin 6, connesso a GND, e il pin 4, connesso a PB2 (MOSI), a livello software si setta PB2 come input con pull attiva, se all'avvio risulta a 1 logico (jumper tra 4 e 6 non inserito) l'autoreset si comporta in modo normale, se PB2 risulta a 0 logico (jumper inserito) l'autoreset è disattivato.

PaoloP

Ma se devi modificare il software, ovvero il firmware del 16U2, per aggiungere questa funzione tanto vale farlo uguale a quello della DUE (senza l'erase perché non c'è) che attiva la programmazione e resetta il micro quando la seriale viene aperta e chiusa a 1200 baud.

astrobeed


che attiva la programmazione e resetta il micro quando la seriale viene aperta e chiusa a 1200 baud.


Su questo sistema non mi esprimo altrimenti mi bannano  :D
In tutti i casi poi dovresti modificare anche l'IDE per poter utilizzare tale sistema con la UNO visto che non è previsto per questa scheda.

PaoloP

Certo, ma basta dirgli che questa UNO si programma come la Leonardo.
Non so se si possa inserire l'indicazione nel file board.txt.  :smiley-roll-sweat:

astrobeed


Certo, ma basta dirgli che questa UNO si programma come la Leonardo.


Non credo sia possibile, senza modificare l'IDE, vista l'enorme diversità tra le due schede, a partire dal micro che nella seconda è un 32u4 invece di un 328.

PaoloP

Quello che volevo dire è che l'IDE prevede già questa modalità di programmazione perchè la usa con la Leonardo. Quindi non occorre altro che dirgli di utilizzarla anche per questa UNO modificata, con i corretti parametri.

Go Up