Go Down

Topic: Topic permanente di programmazione newbie (Read 36589 times) previous topic - next topic

leo72


Ho scaricato invece il core tiny, ma sei sicuro che si tratti di una versione modificata dell'originale? Ricordo che per diverso tempo Leo fece riferimento ad un core che dava parecchi problemi, non vorrei che si trattasse di quello :smiley-sad-blue:

Il core a cui facevo io riferimento in passato era quello di Saporetti, che consigliavo di non usare perché molto limitato.
Il core Tiny che ha modificato Brain mi pare che sia stato toccato solo nei file pins_arduino.c e pins_arduino.h per inserire il riconoscimento del 4313 ed il setup della piedinatura. Non vedo però le modifiche da apportare ad avrdude.conf per fargli riconoscere il micro.


EDIT: ho provato a cambiare in AVRDUDE.CONF la signature (tecnica adottata con successo per il 328 noP) in FF FF FF ma niente da fare. Il messaggio " use -F to override this check." significa che posso bypassare il controllo, ma come devo usarlo questo parametro, forse si riferisce alla riga di comando?

Sì, questi sono parametri da dare ad avrdude via terminale. Il parametro "-F" forza il programma a saltare i check di verifica di cui parlava astrobeed: alle volte riesci a portare a termine un'operazione di scrittura, ma non sempre con -F risolvi tutto, andrebbe visto che controlli avrdude salta usando quel parametro.

Michele Menniti

@ BB e Astro: ok, la signature non si ripristina e qui ormai ci siamo arrivati tutti, perfino io…. Riguardo la programmazione ti sei spiegato benissimo, io mi riferivo al fatto che l'IDE è evidentemente uno di quei programmi che NON permette la programmazione del micro e quindi per me l'unica possibilità resta l'HV o il Dragon, quando finalmente troverò il tempo di metterlo in moto (erano questi gli usi futuri a cui mi riferivo)
@ Leo e BB: quindi ora vorrei poter aggiungere una board per programmare correttamente il 4313 (mi basta 1MHz); da quanto ho capito i file da modificare sono tre:
- AVRDUDE.CONF: qui (come feci allora col 328noP) mi limito a fare un copincolla del 2313 ed a modificare nome, descrizione e signature; Vi ricordo che ieri, semplicemente modificando la signature ho programmato il 4313 con la board ed il finto boootloader del 2313, cambiando solo il valore del LFuse che, peraltro, non ha alcuna importanza per gli sketch; quindi la manovra su AVRDUDE in linea di massima va; poi non scordiamo tutto ciò che disse Astro a proposito di questo tipo di operazioni barbariche, ma visto che ieri ho fatto lampeggiare tre led senza questioni, a me basta.
- pins_arduino.c e pins_arduino.h: anche qui posso fare un copincolla del 2313 modificando le sole info varianti, ho già verificato che la pinature è identica e le assegnazioni dei pin sono perfettamente compatibili
-boards.txt: e anche qui una nuova board a partire dalla 2313 in cui modifico i vari attributi, l'LFuse (giusto per esattezza) e il nome dell'mcu, mentre lascio inalterato il bootloader che, a farla sporca, forse potrei copiare e rinominare opportunamente nella cartella specifica.
La questione è: tutto ciò mi evita l'errore dell'IDE che ogni volta mi strapazza le vecchie che mi dice che non conosce il 4313 e mi mostra l'infinito elenco di quelli che dice di conoscere?
A voi l'ardua sentenza.

@ Leo: l'IDE nel messaggio sembra chiaro: usare -F significa non controllare la signature, che altro dovrebbe fare/non fare?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

BrainBooster

Menniti, non credo che basti solo cambiare il nome al 2313 in 4313 e incollare, questo è un estratto dal mio avrdude.conf
Code: [Select]

#------------------------------------------------------------
# ATtiny4313
#------------------------------------------------------------

part
     id            = "t4313";
     desc          = "ATtiny4313";
     has_debugwire = yes;
     flash_instr   = 0xB2, 0x0F, 0x1F;
     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
             0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
             0x99, 0xE1, 0xBB, 0xAC;
     stk500_devcode   = 0x23;
##   Use the ATtiny26 devcode:
     avr910_devcode   = 0x5e;
     signature        = 0x1e 0x92 0x0d;
     pagel            = 0xD4;
     bs2              = 0xD6;
     reset            = io;
     chip_erase_delay = 9000;

     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                        "x x x x  x x x x    x x x x  x x x x";

     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                        "x x x x  x x x x    x x x x  x x x x";

    timeout = 200;
    stabdelay = 100;
    cmdexedelay = 25;
    synchloops = 32;
    bytedelay = 0;
    pollindex = 3;
    pollvalue = 0x53;
    predelay = 1;
    postdelay = 1;
    pollmethod = 1;

    pp_controlstack     =
        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

     memory "eeprom"
         size            = 256;
        paged           = no;
        page_size       = 4;
         min_write_delay = 4000;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read            = "1   0  1  0   0  0  0  0   0 0 0 x  x x x x",
                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";

         write           = "1   1  0  0   0  0  0  0   0 0 0 x  x x x x",
                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";

loadpage_lo = "  1   1   0   0      0   0   0   1",
  "  0   0   0   0      0   0   0   0",
  "  0   0   0   0      0   0  a1  a0",
  "  i   i   i   i      i   i   i   i";

writepage = "  1   1   0   0      0   0   1   0",
  "  0   0   x   x      x   x   x   x",
  " a7  a6  a5  a4     a3  a2   0   0",
  "  x   x   x   x      x   x   x   x";

mode = 0x41;
delay = 6;
blocksize = 4;
readsize = 256;
       ;
     memory "flash"
         paged           = yes;
         size            = 4096;
         page_size       = 64;
         num_pages       = 64;
         min_write_delay = 4500;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read_lo         = "  0   0   1   0    0   0   0   0",
                           "  0   0   0   0    0 a10  a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

         read_hi         = "  0   0   1   0    1   0   0   0",
                           "  0   0   0   0    0 a10  a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

# The information in the data sheet of April/2004 is wrong, this works:
         loadpage_lo     = "  0   1   0   0    0   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x   x   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

# The information in the data sheet of April/2004 is wrong, this works:
         loadpage_hi     = "  0   1   0   0    1   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x   x   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

# The information in the data sheet of April/2004 is wrong, this works:
         writepage       = "  0  1  0  0   1   1  0  0",
                           "  0  0  0  0   0 a10 a9 a8",
                           " a7 a6 a5 a4   x   x  x  x",
                           "  x  x  x  x   x   x  x  x";

mode = 0x41;
delay = 6;
blocksize = 32;
readsize = 256;
       ;
#   ATtiny4313 has Signature Bytes: 0x1E 0x92 0x0D.
     memory "signature"
         size            = 3;
         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
       ;
     memory "lock"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
                           "x x x x  x x x x  1 1 i i  i i i i";
         read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
                          "x x x x  x x x x  x x o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "lfuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
                           "x x x x  x x x x  i i i i  i i i i";

         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "hfuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
                           "x x x x  x x x x  i i i i  i i i i";

         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "efuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                           "x x x x  x x x x  x x x x  x x x i";

         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
     ;
# The Tiny4313 has calibration data for both 4 MHz and 8 MHz.
# The information in the data sheet of April/2004 is wrong, this works:

     memory "calibration"
         size            = 2;
         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
     ;
  ;


la maggiorparte dei parametri sono uguali,ma non tutti.
Poi basta che ti crei la board per l'ide e hai finito.
L'opzione -F per avrdude potrebbe aiutare se il chip è sbrickato ed ha solo la signature danneggiata e nient'altro.
L'ide richiamando avrdude con i parametri di default (senza -F per esempoi) non può programare un chip con la signature divera da quella attesa (salvo modifiche).

Michele Menniti

Io uso la 0022, forse il tuo CONF è più aggiornato, ora provo a copiare questi dati nel mio conf e vediamo che succede. Grazie
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Michele Menniti

Niente da fare, ho inserito le tue righe in AVRDUDE.CONF, ho aggiornato i files pins.Arduino.h e .c, ho creato la board, appena provo la compilazione mi dice
Quote
mcu attiny4313 supported for assembler only


e

Quote
unknown MCU 'attiny4313' specified
Known MCU names:
   avr2
   at90s2313


che manca? ma tu, bb, l'hai mai provata questa mcu, intendo dire che basta selezionarla e fare un banale compilazione del blick per sapere se ti funziona o meno
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


Niente da fare, ho inserito le tue righe in AVRDUDE.CONF, ho aggiornato i files pins.Arduino.h e .c, ho creato la board, appena provo la compilazione mi dice
mcu attiny4313 supported for assembler only


Questo non è un errore di avrdude, è del GCC, ti dice che non riconosce quel micro e che non può compilare.




Michele Menniti



Niente da fare, ho inserito le tue righe in AVRDUDE.CONF, ho aggiornato i files pins.Arduino.h e .c, ho creato la board, appena provo la compilazione mi dice
mcu attiny4313 supported for assembler only


Questo non è un errore di avrdude, è del GCC, ti dice che non riconosce quel micro e che non può compilare.

Dunque io ho solo eseguito il verify, senza tentare di fare upload, per cui dovrei spiegare al GCC che questo micro esiste, secondo te posso farlo e come?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


Dunque io ho solo eseguito il verify, senza tentare di fare upload, per cui dovrei spiegare al GCC che questo micro esiste, secondo te posso farlo e come?


Non puoi farlo, è necessario eseguire l'upgrade del compilatore per risolvere.


Michele Menniti



Dunque io ho solo eseguito il verify, senza tentare di fare upload, per cui dovrei spiegare al GCC che questo micro esiste, secondo te posso farlo e come?

Non puoi farlo, è necessario eseguire l'upgrade del compilatore per risolvere.

Ottimo, allora faccio come il vecchio cinese, mi siedo davanti al PC e aspetto, qualcosa accadrà  :) per il momento il 4313 può aspettare anche lui e tornare nel cassetto.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


Ottimo, allora faccio come il vecchio cinese, mi siedo davanti al PC e aspetto, qualcosa accadrà  :) per il momento il 4313 può aspettare anche lui e tornare nel cassetto.


Ho verificato, il compilatore  4.3.2 abbinato all'IDE di Arduino non prevede il 4313, è previsto nella 4.3.3 che trovi nell'ultima release di WinAvr.
Possibile soluzione indolore, non è detto che funzioni e adesso non ho tempo per provare, però se ti va di perderci un po di tempo prova a scaricare l'ultima relase di WinAvr, esegui l'installazione, si limita ad espandere i contenuti, dopo di che cancella il contenuto della cartella "..\arduino-0023\hardware\tools\avr" e copiaci dentro tutto quello presente nella cartella WinAvr, dovresti trovarla in "C:\Programmi\Atmel\WinAvr", esclusa la cartella avr32 che non ti serve.
Fatto quanto sopra dovresti avere l'IDE aggiornato al compilatore 4.3.3 che include il 4313.

Michele Menniti



Ottimo, allora faccio come il vecchio cinese, mi siedo davanti al PC e aspetto, qualcosa accadrà  :) per il momento il 4313 può aspettare anche lui e tornare nel cassetto.


Ho verificato, il compilatore  4.3.2 abbinato all'IDE di Arduino non prevede il 4313, è previsto nella 4.3.3 che trovi nell'ultima release di WinAvr.
Possibile soluzione indolore, non è detto che funzioni e adesso non ho tempo per provare, però se ti va di perderci un po di tempo prova a scaricare l'ultima relase di WinAvr, esegui l'installazione, si limita ad espandere i contenuti, dopo di che cancella il contenuto della cartella "..\arduino-0023\hardware\tools\avr" e copiaci dentro tutto quello presente nella cartella WinAvr, dovresti trovarla in "C:\Programmi\Atmel\WinAvr", esclusa la cartella avr32 che non ti serve.
Fatto quanto sopra dovresti avere l'IDE aggiornato al compilatore 4.3.3 che include il 4313.


grazie, provo subito, sono curioso, anche perché se va a buon fine mi troverò altri possibili micro in elenco
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Michele Menniti

Possibile che non riesco a trovare WINAVR sul sito Atmel? :smiley-eek-blue:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

QuercusPetraea

http://winavr.sourceforge.net/download.html

Ciao
QP

BrainBooster


ma hai chiamato il 4313 con il nome giusto nella board?(t4313)

Michele Menniti



ma hai chiamato il 4313 con il nome giusto nella board?(t4313)

ho provato ora per scrupolo, ma anche l'attiny2313 viene scritto per intero, ecco perché dico che il nome deve essere altrove, come giustamente dice Astro.

@ QP: grazie, me lo dà come primo link ma mi era sembrato un po' sospetto :smiley-eek-blue: oltretutto mi dà in ftp una cartella zeppa di versioni, scarico l'ultima?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up