Il dispositivo SPI impedisce la programmazione ISP


8

Ho un ATmega8 con un Nokia LCD 5510 collegato ad esso. Tutto funziona alla grande su una breadboard e il mio prossimo passo è spostarlo su una board più permanente. Il mio problema è che non riesco a programmare l'ATmega8 mentre anche l'LCD è collegato. Suppongo sia perché usano gli stessi pin SPI e che l'LCD in qualche modo interferisce con la programmazione. Come posso fare diversamente per poter far lampeggiare ATmega tramite ISP senza scollegare lo schermo LCD?


2
Avrai davvero bisogno di aggiungere un circuito per ottenere una buona risposta su questo. È possibile utilizzare Ctrl-M per avviare l'editor schematico in loco oppure inserire semplicemente un collegamento allo schema e qualcuno può modificarlo nella domanda.
PeterJ

1
Il dispositivo è attivo basso? Se sì, hai aggiunto un resistore pull up? In caso contrario, il dispositivo porrebbe il bus SPI fino a quando non viene rilasciato.
NothinRandom,

Risposte:


12

È necessario impedire a qualsiasi altro dispositivo di guidare le linee SPI durante la programmazione.

Per evitare contese tra i conducenti, è necessario posizionare un resistore in serie su ciascuna delle tre linee dedicate se esiste la possibilità che un circuito esterno possa guidare queste linee.

inserisci qui la descrizione dell'immagine

Dai un'occhiata alla nota applicativa AVR910.

Per evitare problemi, il programmatore interno al sistema dovrebbe essere in grado di mantenere l'intero reset del sistema target per la durata del ciclo di programmazione. Il sistema di destinazione non dovrebbe mai tentare di guidare le tre linee SPI mentre il ripristino è attivo.

Quindi sarebbe meglio se le linee di reset di ATMEGA e il display sono funzionalmente collegate per impedire al display di fare qualsiasi cosa mentre il programmatore mantiene il reset.


1
Se il display LCD ha una linea di selezione del chip, assicurarsi di tirare anche in alto con un resistore. Durante la programmazione l'ATmega viene ripristinato, il che imposta tutti gli ingressi / uscite su alta impedenza, quindi il display LCD sarà inattivo.
Austin,

1
@ Rev1.0: dovrebbe essere sufficiente avere un resistore nella linea MISO (poiché questa è l'unica uscita del dispositivo slave SPI, le altre due linee sono ingressi e quindi non possono causare interferenze).
Cagliata

@Curd, aggiungi la tua risposta schematicamente e la voterò. Sembra che i due migliori approcci siano l'aggiunta di un resistore alla sola linea MISO o l'aggiunta di un pullup CS o entrambi.
Gabriel Staples,

2

Un'altra soluzione è disabilitare lo schermo durante la programmazione .

Lo schermo è attivo quando il pin CS (selezione chip) è basso (0v). Se si inserisce un resistore pull-up da 10kR tra il pin CS e 3V3 , per impostazione predefinita verrà disabilitato / alto. Per abilitarlo, collega il pin CS a un'uscita del tuo microcontrollore e imposta tale uscita su bassa (0 V). L'ho fatto su uno dei miei progetti e funziona bene.

Lo schermo funziona a 3.3V, dovrai aggiungere un divisore di tensione se il tuo microcontrollore funziona a 5V.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.