Go Down

Topic: [WIN] Aggiornam. compilatore IDE 0022-0023-1.0 all'ULTIMA VERSIONE ATMEL (Read 174498 times) previous topic - next topic

brainbooster

:) 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.

leo72

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


2 - La versione ufficiale invece mi dà errore già in fase di compilazione:
Code: [Select]
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;

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

astrobeed

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.

Scientia potentia est

menniti

@ BB: tutto chiarito :)
@ Leo: perché mai non dovrei crederti? c'ho messo un attimo a fare direttamente la prova :smiley-red: 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 :smiley-sad-blue: :smiley-sad-blue: :smiley-sad-blue:
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

leo72

@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  :smiley-yell:

brainbooster

:smiley-roll-sweat:...ma che strani passatempi che avete  :smiley-yell:
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?

menniti


:smiley-roll-sweat:...ma che strani passatempi che avete  :smiley-yell:
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)
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

testato


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  :smiley-eek-blue:
La Cina sarebbe un paradiso per te  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

menniti



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?
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

astrobeed


@ 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.
Scientia potentia est

menniti



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


è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :smiley-roll-blue:
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

astrobeed


è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :smiley-roll-blue:


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.
Scientia potentia est

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  :smiley-eek-blue:
La Cina sarebbe un paradiso per te  :)

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

menniti

#343
Mar 30, 2012, 10:51 pm Last Edit: Mar 30, 2012, 10:56 pm by Michele Menniti Reason: 1


è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :smiley-roll-blue:


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.


certamente, tanto loro non possono fare upload max di 64K :smiley-yell: :smiley-yell: :smiley-yell: :smiley-yell:
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'è..
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

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.


Go Up