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

: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. :wink:
Il problema è che ogni sistema operativo ha un modo di fare diverso.

Te lo spiego io. Perché tu hai compilato lo sketch per l'Attiny4313 senza accorgertene :stuck_out_tongue:
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 :slight_smile:
@ 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 :slight_smile:

[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.

astrobeed:

[quote author=Michele Menniti link=topic=96976.msg743009#msg743009 date=1333105110]
@ 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.

[/quote]
è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :roll_eyes:

Non è stravagante, semplicemente qualcuno dell'Arduino Team ha deciso che era più semplice ridurre la velocità di comunicazione, invece di scrivere uno sketch ISP fatto meglio, e come tale è stata imposta dall'alto per la 1.0.1, forse pure per le seguenti.

Testato:

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 :slight_smile:

No, è che quando mi capita il turno di notte il sonno semplicemente non esiste... vado a letto alle 3:00 però intorno alle 7:15 mi devo comunque alzare perché devo svegliare i bambini per mandarli a scuola/asilo.... solo che poi, mandati via, spesso torno 1 oretta o 2 a letto perché sennò crollo... difatti in quella settimana che mi capita quel turno sono altamente irascibile.... :0

astrobeed:

[quote author=Michele Menniti link=topic=96976.msg743067#msg743067 date=1333109108]
è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :roll_eyes:

Non è stravagante, semplicemente qualcuno dell'Arduino Team ha deciso che era più semplice ridurre la velocità di comunicazione, invece di scrivere uno sketch ISP fatto meglio, e come tale è stata imposta dall'alto per la 1.0.1, forse pure per le seguenti.

[/quote]
certamente, tanto loro non possono fare upload max di 64K :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:
Era solo per riaprire l'argomento: mi devi chiarire bene la questione word/byte; io so che una word rappresenta 2 byte ed una long word rappresenta 4 byte, in alcuni tipi di architetture; partiamo da Arduino: io ho realizzato uno sketch inutile ma che riusciva a far uscire in compilazione la cifra 32768 byte, 1 solo byte in più e mi dava out of memory; il mega328 ha 32K di flash e tutti i conti mi tornano; invece il mega1280 ha 128K di flash ma mi pare di capire che può contenere 256KB. Puoi per favore approfondirmi questa cosa?
Aggiungo: "gli sketch da meno di 128k funzionano anche con il vecchio compilatore", ma tu mi hai dato uno sketch da 80K o da 160K?
Ora mi metto al lavoro a fare prove scientifiche con le tre versioni di avr e le tre versioni di ISP su tre micro: tiny2313, mega8 e mega1284; stamattina sono impazzito ma non c'ero con la testa, ora invece ho aperto una tabella e poi ve la posto, perché mi sa che qualche problema c'è..

La dimensione della word varia in base all'architettura. Sui micro Atmel ad 8 bit la word è "larga" 2 byte, 16 bit.
Però bisogna fare un distinguo fra la dimensione dello sketch sul tuo computer, che si misura in byte, e il firmware caricato nella flash, che è organizzata in word, ossia ha celle di 16 bit. Se ti ricordi, infatti, Fuse Calculator, nel menu che riserva lo spazio per il bootloader, indica proprio la dimensione dell'area in word: 256 word, 512 byte, sono il minimo che può essere riservato.

Il compilatore tradurrà i salti a 16 bit, ma questa operazione a te non interessa: fa parte della traduzione del programma dal C al linguaggio macchina.

grazie della domanda menny e della risposta leo, non conosco questo concetto, quindi chiedo:
E' corretto fare un paragone con il cluster degli HD ? quindi dire che meno di una word non puo' essere occupata ?
se anche il dato che devo scrivere in flash fosse di solo 1 byte, in flash ne occupero' cmq 2, o meglio in quel byte libero occupato dal precedente dato non potro' scrivere ?

Secondo me non è del tutto corretto il paragone, perché si parla comunque di indirizzare una coppia di byte che sono letti insieme ma che sono poi gestiti singolarmente perché esiste il concetto di byte alto/byte basso, cosa che in riferimento al cluster non c'è: non c'è il "mezzo cluster alto" e il "mezzo cluster basso".
Però qui non ho abbastanza conoscenze per affermare che ciò che ho detto sia giusto. Dovrei rileggermi il datasheet per dartene certezza assoluta.

leo72:
La dimensione della word varia in base all'architettura. Sui micro Atmel ad 8 bit la word è "larga" 2 byte, 16 bit.
Però bisogna fare un distinguo fra la dimensione dello sketch sul tuo computer, che si misura in byte, e il firmware caricato nella flash, che è organizzata in word, ossia ha celle di 16 bit. Se ti ricordi, infatti, Fuse Calculator, nel menu che riserva lo spazio per il bootloader, indica proprio la dimensione dell'area in word: 256 word, 512 byte, sono il minimo che può essere riservato.

Il compilatore tradurrà i salti a 16 bit, ma questa operazione a te non interessa: fa parte della traduzione del programma dal C al linguaggio macchina.

Leo, devo capire bene questa cosa: il mio sketch che in basso sull'IDE mi dice di essere di 32768byte in che forma viene scritto sul mega328? e quanto occupa?

Sono 2 misure della stessa grandezza. Come quando scrivi 0.1uF o 100nF che si equivalgono.
Occupa 32768 byte oppure 16384 word oppure 8192 long word oppure 65536 nibble (mezzo byte). Come preferisci :wink:

leo72:
Sono 2 misure della stessa grandezza. Come quando scrivi 0.1uF o 100nF che si equivalgono.
Occupa 32768 byte oppure 16384 word oppure 8192 long word oppure 65536 nibble (mezzo byte). Come preferisci :wink:

OTTIMO e chiaro quindi su un mega328P è possibile caricare fino a 16384 word.
Prendiamo il 2560, che è dato per 256Kbyte, giusto? un tizio mi scrive e mi dice ho scritto un firmware di 75Kb e sul mega2560 non funziona, se lo porto a massimo 64Kb funziona, però Astro mi dice che il 2560 con il vecchio compilatore può ricevere fino a 64word, quindi 128byte, quindi?