Dunque, riesco a installare il bootloader tramite isp usando un arduino nano (sia usando arduino isp sia usando la sketch Atmega_board_Programmer).
Una volta caricato il bootloader sempre tramite arduino isp riesco a caricare le sketch senza problemi e funzionano correttamente.
Ora veniamo ai problemi:
Il primo problema è che non riesco in nessun modo a caricare le sketch tramite usb senza dover usare un arduino come isp, ciò che è bizzarro è che se la sketch prevede un output seriale questo funziona correttamente e riesco a vedere tramite l ide il traffico in uscita, ma appunto se provo a programmare la scheda mi da errore not in sync :o
il secondo problema invece è che se dopo aver caricato una sketch saldo al suo posto la breakboard della scheda sd non riesco più a mandare le sketch neanche tramite isp, mi esce l errore di signature, in pratica non riconosce la scheda e quindi non carica la sketch..
la mia idea è che la breakboard sd in qualche modo disturbi il segnale isp, come posso evitarlo?
invece per il fatto che non si programma via usb onestamente non ho idea del motivo...
Ringrazio chi avrà la pazienza di darmi una mano a debuggare questo mio piccolo progetto, lascio in allegato lo schema della scheda che ho realizzato.
deg87:
... saldo al suo posto la breakboard della scheda sd non riesco più a mandare le sketch neanche tramite isp, mi esce l errore di signature, in pratica non riconosce la scheda e quindi non carica la sketch..
Ovviamente ... la programmazione ISP vuole i pin del bus SPI completamente liberi e quindi NON ci puoi collegare la SD durante la programmazione.
Se devi fare una cosa fissa devi prevedere dei dip-switch con cui isoli i pin del ISP durante la programmazione e poi, finita la programmazione li riconnetti al resto del circuito.
quindi come sospettavo prima di applicare la breakboard sd devo programmare il processore altrimenti ho rogne.. però come mai invece la parte del mcp2515+tja1050 che è connessa sempre ai pin isp non mi crea rogne (o meglio non me le crea più dopo che ho messo un pullup da 10k sul miso)?
il condensatore invece come da schema non c'è mannaggia addirittura il pin dtr del ch340g non e connesso a nulla, davvero può essere lui il responsabile? il valore giusto è 0,1 uf?
... ti ripeto che il bus SPI durante la programmazione è bene che sia libero e NON connesso ad altre cose ... se in alcuni casi va è una caso ... ma è meglio NON sperarci. Metti un dip-switch e separi durante la programmazione.
Il condensatore connesso al DTR è obbligatorio se vuoi fare la programmazione via USB ... altrimenti, secondo te, chi genera l'impulso di RESET che fa barite il bootloader ?
eh già ora che mi fai notare queste cose mi paiono ovvie XD.
intanto ho provato a collegare un condensatore da 100nf tra dtr e reset ma ancora non riesco a programmare tramite usb, ho sbagliato il valore forse? oppure ce del altro?
Hai visto come è fatto il circuito di reset della UNO? Una resistenza da 10KΩ tra il reset e Vcc, un condensatore da 100nF tra il reset ed il pin DTR del adattatore USB <--> Seriale ... quando il DTR va LOW genera l'impulso di reset che fa partire il bootloader.
la resistenza di pullup l avevo gia prevista nello schema puoi vedere come ho fatto, ho aggiunto anche il condensatore tra dtr e reset che era stato omesso però non carica lo stesso...
Verifica che il DTR vada LOW quando apri la porta comunicazione lato USB ... altrimenti vedi se c'è un'altro piedino che lo fa (magari con il CH340 il pin è un altro).
questo è lo schema esatto di come è stata realizzata la pcb, l unica cosa che ho aggiunto su tuo consiglio e un filo volante che dal pin DTR del CH340 va al pin reset tramite un condensatore da 100nf.
RX e TX mi sembrano collegati correttamente tutto il resto è appunto assemblato direttamente con componenti smd dal produttore a cui mi son rivolto. Ho guardato vari schemi di schede che usano questo microcontrollore e non colgo alcuna differenza, eccetto che non ho installato i led tx ed rx e non ho messo resistori lungo le linee TX RX e D+ D-, ma queste se ho ben inteso sono protezioni atte a limitare la corrente in caso di errati collegamenti, cosa che a me non serve (come i led) in quanto una volta caricato il software queste schedine faranno il loro senza mai (o quasi) essere reinstallate.
deg87:
questo è lo schema esatto di come è stata realizzata la pcb, l unica cosa che ho aggiunto su tuo consiglio e un filo volante che dal pin DTR del CH340 va al pin reset tramite un condensatore da 100nf.
Beh, per essere sicuri del collegamento TX/RX basta provare la seriale con l'emulatore di terminale (un banale programmino che fa eco di ciò che riceve su RX verso il pin TX) e vedi subito se funziona
deg87:
... non ho messo resistori lungo le linee TX RX e D+ D-, ma queste se ho ben inteso ...
... non sono sicuro che quelli su D+ e D- siano facoltativi o facciano parte delle specifiche ... :