[WIN] Aggiornam. compilatore IDE 0022-0023-1.0 all'ULTIMA VERSIONE ATMEL

Ma infatti per questo sto facendo casino, non possiamo diffondere una tecnica sotto forma di notizia (ebbene sì :grin:) con dubbi sul suo funzionamento, né possiamo fornire alternative non ufficiali, se non siamo assolutamente certi, dopo tante prove fatte da tanti di noi, in quanto ci esporremmo a magre figure (non mi sto attribuendo il maiestatis, come più di qualcuno sa, nei limiti delle mie possibilità ho dato e darò ai Cesari ciò che è loro :)) dopo tante cose buone fatte. La patch di Astrobeed è stata sufficientemente testata e lo specchietto che ha postato oggi e le prove che cercherò di fare stasera mi daranno il responso definitivo sulla strada da intraprendere. Ciò detto, se Leo et altri potessero darmi ragionevoli garanzie, potrei (sempre col suo permesso) mettere a disposizione il suo AISP2 per la 1.0 in ambiente Windows, con riserva di possibili malfunzionamenti; ma se queste garanzie non ci sono non ne parlo. Mi servirebbe uno sketch (formato .pde) da 120Kb (NON oltre, va sul 1284 e deve lasciare un po' di fash libera) che non faccia altro alla fine che blinkarmi tre led in sequenza, a sola dimostrazoine che lo sketch è stato compilato caricato ed è funzionante; mi serve massimo per domattina; quello usato da Astro è un suo lavoro ufficiale e non è giustamente utilizzabile, lui ha chiaramente detto di essere incasinato fino a fine settimana, ed io non sono in grado di mettere in piedi una bestia di array che occupi memoria a secchi: chi mi aiuta? Io intanto inizio a montare la bancarella per i test :grin:

Lo sketch di test è quasi pronto, fa molto di più del semplice blink, in pratica usa quasi tutte le periferiche, esegue vari calcoli complessi con i float utilizzando quasi tutte le funzioni matematiche avanzate, e occupa 100 k sotto forma di vari array posti nella flash, il tutto compilato occupa quasi 110k.

L’ArduinoISP2 puoi anche prenderlo, io l’ho provato con un Tiny85 ed ha funzionato, Astro ha confermato che funziona quindi dovrebbe andare. Solo ti chiedo di prelevare quello allegato a questo post, lo stesso identico dell’altro con in più l’aggiunta di una riga di commento allo sketch in modo da dare la giusta gratificazione a questo povero, umile, ignorante utente :sweat_smile:

ArduinoISP2.pde.zip (4 KB)

astrobeed: [quote author=Michele Menniti link=topic=96976.msg740952#msg740952 date=1332957824] Mi servirebbe uno sketch (formato .pde) da 120Kb (NON oltre, va sul 1284 e deve lasciare un po' di fash libera) che non faccia altro alla fine che blinkarmi tre led in sequenza,

Lo sketch di test è quasi pronto, fa molto di più del semplice blink, in pratica usa quasi tutte le periferiche, esegue vari calcoli complessi con i float utilizzando quasi tutte le funzioni matematiche avanzate, e occupa 100 k sotto forma di vari array posti nella flash, il tutto compilato occupa quasi 110k.

[/quote] Ottimo, mi ero sinceramente pentito di avertelo chiesto perché so quanto sei incasinato questa settimana, ecco perché avevo "aperto" la richiesta, allora va benissimo così, anzi molto di più!

leo72: L'ArduinoISP2 puoi anche prenderlo, io l'ho provato con un Tiny85 ed ha funzionato, Astro ha confermato che funziona quindi dovrebbe andare. Solo ti chiedo di prelevare quello allegato a questo post, lo stesso identico dell'altro con in più l'aggiunta di una riga di commento allo sketch in modo da dare la giusta gratificazione a questo povero, umile, ignorante utente :sweat_smile:

naturalmente Leo, l'altro non lo avevo nemmeno scaricato, e comunque se non l'avessi messa tu la riga l'avrei fatto io, come in altre occasioni (il plurale non è un errore di calcolo ;))

Notizie: 1 - La versione di Leo ha funzionato al primo colpo con la mia 0022, ho inviato con successo uno sketch al 4313 2 - La versione ufficiale invece mi dà errore già in fase di compilazione:

ArduinoISP101.cpp: In function 'void spi_init()':
ArduinoISP101.cpp:192:3: error: 'SPCR' was not declared in this scope
ArduinoISP101.cpp:193:5: error: 'SPSR' was not declared in this scope
ArduinoISP101.cpp:194:5: error: 'SPDR' was not declared in this scope
ArduinoISP101.cpp: In function 'void spi_wait()':
ArduinoISP101.cpp:200:12: error: 'SPSR' was not declared in this scope
ArduinoISP101.cpp:200:25: error: 'SPIF' was not declared in this scope
ArduinoISP101.cpp: In function 'uint8_t spi_send(uint8_t)':
ArduinoISP101.cpp:205:3: error: 'SPDR' was not declared in this scope
ArduinoISP101.cpp: In function 'void start_pmode()':
ArduinoISP101.cpp:290:11: error: 'SS' was not declared in this scope
ArduinoISP101.cpp:292:11: error: 'SCK' was not declared in this scope
ArduinoISP101.cpp:297:11: error: 'MISO' was not declared in this scope
ArduinoISP101.cpp:298:11: error: 'MOSI' was not declared in this scope
ArduinoISP101.cpp: In function 'void end_pmode()':
ArduinoISP101.cpp:304:11: error: 'MISO' was not declared in this scope
ArduinoISP101.cpp:305:11: error: 'MOSI' was not declared in this scope
ArduinoISP101.cpp:306:11: error: 'SCK' was not declared in this scope
ArduinoISP101.cpp:307:11: error: 'SS' was not declared in this scope

non riesco a capire quali differenze ci siano tra i due sketch: anche nella versione di leo ci sono queste variabili e non sono dichiarate all'inizio, ma purtroppo non riesco ad andare oltre con l'analisi

EDIT: non chiedetemi come e perché ma ora funziona; nelle varie prove ho voluto sperimentare l'AVRDUDE originale della toolchain; già all'upload di ArduinoISP esce:

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

Mi basavo sull'affermazione di BB che diceva d'aver visto tra i sorgenti di AVRDUDE il file Arduino.h; quindi sembra fondamentale l'operazione di recupero del vecchio avrdude.exe suggerita da Astrobeed nei vari passaggi di aggiornamento. Aggiungo che la presenza dell'AVRDUDE.CONF nella cartella "bin" è assolutamente ininfluente.

Quell’errore sembra dovuto alla mancanza di #include “pins_arduino.h” , ho provato a scaricare il file che avevo allegato e compilarlo, non mi da nessun errore.
Sei sicuro di aver preso il file giusto ?
Per sicurezza te lo riallego.

ArduinoISP_1.0.1.rar (3.82 KB)

Scusa Astro, stavo editando il mio post, ma ogni tanto la mia connessione lavora ad 1 bit/ora; è scritto tutto su. Continuo a fare prove per capire cosa è successo, ma non mi pare di vedere cose strane :cold_sweat:

Mi basavo sull'affermazione di BB che diceva d'aver visto tra i sorgenti di AVRDUDE il file Arduino.h; quindi sembra fondamentale l'operazione di recupero del vecchio avrdude.exe suggerita da Astrobeed nei vari passaggi di aggiornamento.

io mi riferivo alla possibilità di avrdude di riconoscere arduino come programmatore con il suo nome, non ad altro.

BrainBooster:

Mi basavo sull'affermazione di BB che diceva d'aver visto tra i sorgenti di AVRDUDE il file Arduino.h; quindi sembra fondamentale l'operazione di recupero del vecchio avrdude.exe suggerita da Astrobeed nei vari passaggi di aggiornamento.

io mi riferivo alla possibilità di avrdude di riconoscere arduino come programmatore con il suo nome, non ad altro.

Bonjour BB XD Non era un'accusa :~; nei post precedenti ho scritto, e l'ho fatto sul serio, di aver riletto l'intero Topic, per documentarmi, visto che, ormai è ufficiale (ma vi tengo nascosta la notizia più importante :D), su questa cosa tirerò fuori un articolo per Elettronica In. Ho preso un casino di "appunti", li ho riorganizzati e studiati per farmi le idee chiare e per approfondire qualche punto non chiaro per me; tra questo c'era quel breve scambio tra te e Astro su questa cosa dell'AVRDUDE; poiché, consigliato da tutti, ho scelto di seguire la strada meno invasiva possibile, riguardo l'operazione di aggiornamento, ho cercato di eliminare dalla discussione ogni modifica che non fosse indispensabile; quindi ho fatto la prova con avrdude.exe originale della toolchain, se avesse funzionato avrei evitato il passaggio in cui Astro dice di copiare quello della vecchia versione e usarlo al posto del nuovo; invece mi dà errore e se per farlo funzionare occorre fare operazioni aggiuntive non conviene. Stesso discorso applicato alla questione dell'ISP, la nuova versione originale funziona con 0022-23-1.0.1 ma non con la 1.0; Leo ha applicato una patch e la sua versione, che però non è ufficiale, funziona anche con la 1.0 a 9600 baud. Quindi io proporrò di adottare la nuova 1.0.1 (spiegando che comunque è una r.c. e non ancora una versione definitiva), ma a quelli che stanno bene con la 1.0 "fornirò" la versione di Leo, come patch. La cosa ha una sua logica.

:slight_smile: non mi sono sentito accusato, era solo per correggere sul nascere un’associazione errata che mi pareva di cogliere dal tuo discorso.
Per tutto il resto ti quoto ampiamente.

@Mike: ricordati un paio di cose. Se l'articolo vale per tutti, non devi però generalizzare sull'uso di avrdude, cioè ricordati sempre che ciò che sperimenti su Windows non vale per Linux/Mac o viceversa. Quando tu affermi che l'avrdude originale incluso nella toolchain Atmel non funziona con Arduino la cosa è normale, dato che quella versione è vecchia e non riconosce l'Arduino come programmatore, e l'IDE di Arduino ne contiene una versione anch'essa vecchia ma patchata per riconoscere l'Arduino. Sui sistemi Linux si trova nei repo una versione di avrdude molto recente (>=5.10) che già di "serie" riconosce l'Arduino. Quindi usare quello oppure utilizzare quello patchato dell'IDE è perfettamente indifferente. Solo una precisazione per il tuo articolo, non è un appunto. ;) Il problema è che ogni sistema operativo ha un modo di fare diverso.

[quote author=Michele Menniti link=topic=96976.msg741483#msg741483 date=1333002658] 2 - La versione ufficiale invece mi dà errore già in fase di compilazione:

ArduinoISP101.cpp: In function 'void spi_init()':
ArduinoISP101.cpp:192:3: error: 'SPCR' was not declared in this scope
ArduinoISP101.cpp:193:5: error: 'SPSR' was not declared in this scope
ArduinoISP101.cpp:194:5: error: 'SPDR' was not declared in this scope
ArduinoISP101.cpp: In function 'void spi_wait()':
ArduinoISP101.cpp:200:12: error: 'SPSR' was not declared in this scope
ArduinoISP101.cpp:200:25: error: 'SPIF' was not declared in this scope
ArduinoISP101.cpp: In function 'uint8_t spi_send(uint8_t)':
ArduinoISP101.cpp:205:3: error: 'SPDR' was not declared in this scope
ArduinoISP101.cpp: In function 'void start_pmode()':
ArduinoISP101.cpp:290:11: error: 'SS' was not declared in this scope
ArduinoISP101.cpp:292:11: error: 'SCK' was not declared in this scope
ArduinoISP101.cpp:297:11: error: 'MISO' was not declared in this scope
ArduinoISP101.cpp:298:11: error: 'MOSI' was not declared in this scope
ArduinoISP101.cpp: In function 'void end_pmode()':
ArduinoISP101.cpp:304:11: error: 'MISO' was not declared in this scope
ArduinoISP101.cpp:305:11: error: 'MOSI' was not declared in this scope
ArduinoISP101.cpp:306:11: error: 'SCK' was not declared in this scope
ArduinoISP101.cpp:307:11: error: 'SS' was not declared in this scope

non riesco a capire quali differenze ci siano tra i due sketch: anche nella versione di leo ci sono queste variabili e non sono dichiarate all'inizio, ma purtroppo non riesco ad andare oltre con l'analisi

EDIT: non chiedetemi come e perché ma ora funziona; [/quote] Te lo spiego io. Perché tu hai compilato lo sketch per l'Attiny4313 senza accorgertene :P Quegli errori sono classici di un micro selezionato al posto di un altro, e giustamente il compilatore non riconosce quelle costanti come registri del micro per cui vuoi compilare. Se non ci credi, seleziona in Boards il 4313 oppure un altro Tiny e ricompila. Vedrai che ti riesce l'errore XD

In allegato uno sketch di circa 80k compilato, l’ho ottenuto partendo da MultiWii 1.9, che utilizza quasi tutte le risorse disponibili su 328p, aggiungendo varie tabelle dati fittizie poste nella flash, in questo modo c’è molto codice vero che fa cose reali.
Dopo averlo caricato il led sul pin 13 esegue una sequenza complessa di lampeggi ripetuta all’infinito, questo perché non trova i sensori I2C ed esegue continuamente la fase di init.
Per il momento di più non posso fare, funziona sicuramente su un MEGA2560, provato sia su Arduino MEGA 2560 che il TiDiGino.

toolchain_test.rar (49.6 KB)

@ BB: tutto chiarito :) @ Leo: perché mai non dovrei crederti? c'ho messo un attimo a fare direttamente la prova :blush: ho anche ricorstruito la vicenda; stamattina appena mi sono messo al computer ed ho provato subito il tuo ISP2, chiudendo con lo sketch sul 4313; quando ho scompattato l'1.0.1 mi sono dimenticato di riportare la board sulla UNO. Giustificazione: hai mai chiesto a qualcuno di infilarti un'intera confezione di spilli da startoria nei.....? Credo proprio di no, se vuoi provare l'ebbrezza fatti eleggere Amministratore del Condominio in cui abiti (spero che tu abbia una mega villa lontano da vicini almeno 500mt) e aspetta che comincino a litigare tra loro (succede mediamente dai 20 ai 40 secondi successivi la tua elezione); poiché non risolvono nulla indovina alla fine chi fa la parte della cloaca? Ecco, in quel momento inizia l'ebbrezza degli spilli. Riguardo l'articolo, la linea della Rivista, a torto o a ragione (non voglio iniziare una nuova querelle), salvo rari casi, si basa quasi esclusivamente sull'ambiente Windows, quindi va da sé che ciò che si afferma è riferito a questo S.O. Non solo, nelle istruzioni è spiegato chiaramente come scaricare la Toolchain di Windows. Purtroppo non sono in condizioni, ma nemmeno mi chiedono di farlo, di replicare le informazioni adattandole ad altri S.O.. @ Astro: per me va più che bene, l'importante è aver superato in abbondanza i 64K; il test lo farò sullo stand-alone dando per scontato il fatto che funzioni sulla Mega 2560 e sul TiDiGino; in questo modo abbracciamo l'intera gamma di interesse dell'articolo XD Spero di completare almeno il grosso entro stasera, domani sera ho Riunione di Condominio per l'approvazione del Bilancio annuale :disappointed_relieved: :disappointed_relieved: :disappointed_relieved:

@Mike: se vogliamo parlare di spilli, ne ho giusto usato uno martedì mattina per forarmi l'ascesso ad un dente su cui sta lavorando la mia dentista che, OVVIAMENTE, questa settimana è fuori sede per un corso di aggiornamento.... se a ciò ci aggiungi l'addormentatura alle 3:00 di notte per il lavoro e la sveglia alle 7:15 la mattina, capirai come ti... capisco benissimo :stuck_out_tongue_closed_eyes:

:cold_sweat:...ma che strani passatempi che avete :stuck_out_tongue_closed_eyes: facciamo un veloce riepilogo per avere una build aggiornata su windows: arduino ide 1.0.1-rc1 arduinoisp (originale) toolchain atmel 3.2.3 + includes di astrobeed avrdude preso dal winavr originale dell'ide con il suo .conf ricopiato nella cartella etc (da ricreare) dimentico/sbaglio qualcosa?

BrainBooster: :cold_sweat:...ma che strani passatempi che avete :stuck_out_tongue_closed_eyes: facciamo un veloce riepilogo per avere una build aggiornata su windows: arduino ide 1.0.1-rc1 arduinoisp (originale) toolchain atmel 3.2.3 + includes di astrobeed avrdude preso dal winavr originale dell'ide con il suo .conf ricopiato nella cartella etc (da ricreare) dimentico/sbaglio qualcosa?

no, mi pare tutto ok aggiungo che se invece si lavora con la 0022/23 devi comunque usare l'ISP della 1.0.1 se invece si lavora con la 1.0 bisogna usare l'ISP della 1.0.1 con la patch (denominato da Leo ISP2)

leo72: l'addormentatura alle 3:00 di notte per il lavoro e la sveglia alle 7:15 la mattina

Scusa leo ma tu lavori 20 ore al giorno :fearful: La Cina sarebbe un paradiso per te :)

[quote author=Michele Menniti link=topic=96976.msg740530#msg740530 date=1332932615]

astrobeed: La cosa è semplicissima, lo sketch ISP da usare è quello ufficiale allegato al'IDE 1.0.1, che è quello che ti avevo allegato, se parliamo di articoli/guide da pubblicare, se non altro per non creare confusione alle persone con versioni non ufficialmente supportate dall'Arduino Team.

IDE 0022 velocità sketch ISP 19200 IDE 0023 velocità sketch ISP 19200 IDE 1.0 non funziona indipendentemente dalla toolchain, eventualmente usare la versione patchata proposta da Leo a 19200. IDE 1.0.1 velocità sketch ISP 9600

@ Leo: la tua versione ISP2, per conferma, lavora a 19200 sia con 1.0 che con 1.0.1?

La velocità non dipende dallo sketch, dipende dall’IDE, o meglio lo sketch si deve adattare a quella utilizzata dall’IDE, quindi 9600 con la 1.0.1 e 19200 con tutti gli altri.