Go Down

Topic: [RISOLTO]usb tiny isp autocostruito non funziona (Read 3953 times) previous topic - next topic

alexdb

Jul 30, 2012, 11:09 am Last Edit: Aug 01, 2012, 05:09 pm by alexdb Reason: 1
Buongiorno a tutti,
ho costruito un tiny isp versione 1 (allego lo schema che ho usato),
sembra che tutto funzioni (il led rosso quando connetto il tiny isp al computer si accende, quando provo a dare un comando di test come c'è scritto sul sito http://www.ladyada.net/make/usbtinyisp/avrdude.html :

Code: [Select]

avrdude -c usbtiny -p m8

l'altro led lampeggia e il programmatore mi risponde:
Code: [Select]

~$ avrdude -c usbtiny -p m8

avrdude: initialization failed, rc=-1
        Double check connections and try again, or use -F to override
        this check.


avrdude done.  Thank you.


tuttavia quando lo connetto a un micro, ad esempio a un atmega328p e provo a dare:
Code: [Select]

avrdude -c usbtiny -p m328p

mi viene fuori questa cosa:
Code: [Select]

~$ avrdude -c usbtiny -p m328p

avrdude: initialization failed, rc=-1
        Double check connections and try again, or use -F to override
        this check.


avrdude done.  Thank you.

in pratica come se non avessi collegato niente al programmatore.

cosa può essere?

uso ubuntu 10.04 e avrdude 5.10

EDIT: l'unica modifica allo schema è che ho usato resistenze da 2k al posto di quelle da 1,5k e quille da 68 ohm al posto di quelle da 27, perchè non ne ho a casa...può essere quello il problema?

Michele Menniti

che intendi per costruito? se non hai realizzato il CPB puoi rinunciare subito, sono sistemi molto critici, e per la stessa ragione i valori dei componenti vanno rispettati senza eccezioni.
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

alexdb


che intendi per costruito? se non hai realizzato il CPB puoi rinunciare subito, sono sistemi molto critici, e per la stessa ragione i valori dei componenti vanno rispettati senza eccezioni.

ho realizzato il pcb :) sono partito dallo schema originale, e ho cambiato quasi tutti i componenti mettendoli smd (così devo fare meno buchi --> meno punte rotte XD)
le resistenze che ho messo di valore diverso ho visto che sono resistenze di protezione, e in alcuni casi potrebbero essere omesse...più tardi mi procuro quelle di valore giusto e provo allora ;)

leo72

Io ho replicato la 1a versione dell'USBtiny e mi funziona perfettamente.
Hai dato i permessi come descritto nel link che hai citato?


ho realizzato il pcb :) sono partito dallo schema originale, e ho cambiato quasi tutti i componenti mettendoli smd (così devo fare meno buchi --> meno punte rotte XD)
le resistenze che ho messo di valore diverso ho visto che sono resistenze di protezione, e in alcuni casi potrebbero essere omesse...più tardi mi procuro quelle di valore giusto e provo allora ;)

Che schema hai realizzato? Io con quello originale di Adafruit non ho avuto problemi. Potresti pubblicare il tuo circuito?

alexdb

il circuito è lo stesso, ho solo modificato il package dei componenti...comunque è nel primo post...

i permessi li ho dati, comunque per scaramanzia ho provato con sudo ma non va lo stesso :0

leo72

Ma tu hai detto di aver cambiato i valori delle resistenze.
Di quali resistenze hai cambiato il valore? E da quanto le hai messe?

alexdb

allora ho cambiato il valore di tutte le resistenze da 1,5k (perchè non ne ho) e le ho messe da 2.2k.
le resistenze da 27 ohm le ho messe da 68.

l'unica eccezione sono le resistenze per i due led, una da 4,7k e una da 150 ohm, ma non credo che centrino molto con il problema...

leo72

R3 serve come resistenza di pull-up. Forse una da 2K2 non dà abbastanza corrente per dare un segnale di base.
R1 e R2 servono per limitare la corrente sulle linee D- e D+: io le ho messe da 47 ohm, non ho provato con 68.
In più non ho messo R6 e R7 sulle linee SCK e MOSI.

alexdb


R3 serve come resistenza di pull-up. Forse una da 2K2 non dà abbastanza corrente per dare un segnale di base.

provo con qualcosa di più basso? tipo 1 k?
Quote

R1 e R2 servono per limitare la corrente sulle linee D- e D+: io le ho messe da 47 ohm, non ho provato con 68.

in teoria l'usb funziona, perchè il programmatore mi risponde..
Quote

In più non ho messo R6 e R7 sulle linee SCK e MOSI.

allora provo a ponticellare..

leo72



R3 serve come resistenza di pull-up. Forse una da 2K2 non dà abbastanza corrente per dare un segnale di base.

provo con qualcosa di più basso? tipo 1 k?


Beh, bisognerebbe vedere di quanta corrente ha bisogno come pull-up quella linea, valore che io non conosco perché non so le specifiche USB.
Però se ti da problemi di sincronizzazione forse il problema è da qualche altra parte. Hai usato il risonatore ceramico da 12 MHz? Hai settato i fuse del 2313 prima di caricarci il firmware?

alexdb




R3 serve come resistenza di pull-up. Forse una da 2K2 non dà abbastanza corrente per dare un segnale di base.

provo con qualcosa di più basso? tipo 1 k?


Beh, bisognerebbe vedere di quanta corrente ha bisogno come pull-up quella linea, valore che io non conosco perché non so le specifiche USB.
Però se ti da problemi di sincronizzazione forse il problema è da qualche altra parte. Hai usato il risonatore ceramico da 12 MHz? Hai settato i fuse del 2313 prima di caricarci il firmware?

il risonatore è da 12 MHz, i fuse li ho settati così:
LowFuse 0xFF
HighFuse 0xDB

leo72

I fuse concordano con quelli dettati da Adafruit. Hai qualcosa collegato sulle linee RST/MOSI/MISO/SCK lato chip da programmare oppure no?
Mi spiego: quando programmi il chip destinatario, questo ha qualcosa sulle linee che portano i suddetti segnali? Tipo qualcosa pullato basso, che è ciò che da noia?
Il chip che programmi, dove risiede? Su una sua scheda, oppure su una breadboard? Hai messo le masse in comune?

Cerchiamo di venirne fuori, dai quante più info possibili  :smiley-sweat:


il risonatore è da 12 MHz, i fuse li ho settati così:
LowFuse 0xFF
HighFuse 0xDB

http://arduino.cc/forum/index.php/topic,110429.msg829535.html#msg829535 qui leo mi hai detto dei fuse diversi. quali sono in conclusione?

leo72

Il fuse basso E4 attiva l'oscillatore interno. Probabilmente in quella discussione ho suggerito quei valori per poter flashare il firmware su un micro montato in standalone senza quarzi esterni. Però dopo va riprogrammato il fuse nuovamente per attivare l'uso dei 12 MHz esterni.

Dico "probabilmente" però perché non ricordo quella discussione e non ho ora voglia di rileggermi tutte le pagine.
$FF per il fuse basso attiva invece l'uso di un quarzo esterno con clock superiore a 8 MHz, sarebbe quindi un valore corretto.

Relativamente al fuse alto, il valore 9F disabilita il BOD (mentre Adafruit consiglia di lasciarlo attivo, ma secondo me è una cosa che non serve essendo l'USBtinyISP alimentato a 5V dalla porta USB) e preserva la EEPROM interna dalla cancellatura durante l'erase del chip, una cosa che non influisce sull'uso dell'USBtinyISP.

alexdb

#14
Jul 31, 2012, 10:25 am Last Edit: Jul 31, 2012, 10:27 am by alexdb Reason: 1

I fuse concordano con quelli dettati da Adafruit. Hai qualcosa collegato sulle linee RST/MOSI/MISO/SCK lato chip da programmare oppure no?
Mi spiego: quando programmi il chip destinatario, questo ha qualcosa sulle linee che portano i suddetti segnali? Tipo qualcosa pullato basso, che è ciò che da noia?
Il chip che programmi, dove risiede? Su una sua scheda, oppure su una breadboard? Hai messo le masse in comune?

Cerchiamo di venirne fuori, dai quante più info possibili  :smiley-sweat:

allora ho fatto diverse prove:
attiny 85, attiny 84 e atmega 328p su breadboard con i collegamenti minimi, cioè con alimentazione e massa, miso mosi sck e reset, e per il 328p anche il quarzo.
poi ho anche provato ad attaccarlo all'arduino uno.
le masse sono in comune..
quindi non c'è nient'altro attaccato a quelle linee..

Go Up