[RISOLTO]usb tiny isp autocostruito non funziona

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 USBtiny-based AVR Programmer :

avrdude -c usbtiny -p m8

l’altro led lampeggia e il programmatore mi risponde:

~$ 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:

avrdude -c usbtiny -p m328p

mi viene fuori questa cosa:

~$ 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?

usbspi v1.0.brd (20.7 KB)

usbspi v1.0.sch (129 KB)

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.

[quote author=Michele Menniti link=topic=116504.msg876795#msg876795 date=1343643429] 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. [/quote] 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 ;)

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

alexdb: 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?

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

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

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

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.

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?

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

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

allora provo a ponticellare..

alexdb:

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?

leo72:

alexdb:

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?

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

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

alexdb: 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?

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.

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

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

Hai ricompilato il firmware o hai usato quello originale di Adafruit?

ho usato quello originale.. in pratica ho caricato nell'attiny2313 il file main.hex nella cartella /spi dell'archivio...

A livello SW a me pare tutto a posto. Io stesso ho realizzato l'USBtinyISP versione 1.0 e con il firmware originale funziona perfettamente. Non vorrei tu avessi realizzato male una saldatura. Se avrdude risponde che non riesce a dialogare col chip, spesso è un problema di collegamenti.

Ad esempio, come colleghi il chip da programmare al tuo programmatore?

allora ad esempio l'atmega328p su breadboard l'ho collegato così: massa e alimentazione in comune reset proveniente dall'attiny sul pin 1 sck sul pin 19 miso sul 18 mosi sul 17

forse devo ponticellare le resistenze di protezione sulle linee miso mosi e sck....

comunque quando ho provato ad attaccarlo all'arduino uno il led 13 (che è sulla linea sck) lampeggiava..

vuoi che posto una foto del circuito finito?