Pytanie:
Urządzenie SPI zapobiega programowaniu przez ISP
Tom Van den Bon
2013-07-19 17:21:53 UTC
view on stackexchange narkive permalink

Mam ATmega8 z podłączonym Nokia LCD 5510. Wszystko działa świetnie na płytce stykowej, a następnym krokiem jest przeniesienie jej na bardziej trwałą tablicę. Mój problem polega na tym, że nie mogę zaprogramować ATmega8, gdy LCD jest również podłączony. Zakładam, że to dlatego, że używają tych samych pinów SPI i że LCD w jakiś sposób przeszkadza w programowaniu. Jak mogę to zrobić inaczej, aby móc flashować ATmega przez ISP bez odłączania LCD?

Naprawdę musisz dodać obwód, aby uzyskać dobrą odpowiedź na ten temat. Możesz użyć Ctrl-M, aby uruchomić edytor schematów na miejscu lub po prostu umieścić łącze do schematu, aby ktoś mógł go edytować w pytaniu.
Czy urządzenie jest aktywne na niskim poziomie? Jeśli tak, to czy dodałeś rezystor podciągający? Jeśli tego nie zrobisz, urządzenie będzie obciążać magistralę SPI, dopóki nie zostanie zwolniony.
Dwa odpowiedzi:
Rev1.0
2013-07-19 17:44:58 UTC
view on stackexchange narkive permalink

Musisz uniemożliwić innym urządzeniom sterowanie liniami SPI podczas programowania.

Aby uniknąć rywalizacji ze sterownikami, na każdej z trzech dedykowanych linii należy umieścić rezystor szeregowy, jeśli istnieje możliwość, że obwody mogą sterować tymi liniami.

enter image description here

Spójrz na notę ​​aplikacyjną AVR910.

Aby uniknąć problemów, programista w systemie powinien być w stanie zachować całego resetu systemu docelowego na czas trwania cyklu programowania. Docelowy system nigdy nie powinien próbować sterować trzema liniami SPI, gdy Reset jest aktywny.

Dlatego najlepiej byłoby, gdyby linie resetowania ATMEGA i wyświetlacza były funkcjonalnie połączone, aby zapobiec wyświetlaniu przed robieniem czegokolwiek, dopóki programista wstrzyma reset.

Jeśli wyświetlacz LCD ma linię wyboru chipa, pamiętaj, aby podciągnąć ją również za pomocą rezystora.Podczas programowania ATmega jest w trybie resetowania, co ustawia wszystkie wejścia / wyjścia na wysoką impedancję, więc wyświetlacz LCD będzie nieaktywny.
@Rev1.0: Powinno wystarczyć rezystor w linii MISO (ponieważ jest to jedyne wyjście urządzenia slave SPI, pozostałe dwie linie są wejściami i dlatego nie mogą powodować żadnych zakłóceń).
@Curd, dodaj swoją odpowiedź ze schematem i zagłosuję za nią.Wygląda na to, że najlepsze dwa podejścia to albo dodanie rezystora tylko do linii MISO, albo dodanie CS pullup, albo jedno i drugie.
Rodot
2013-10-14 02:43:43 UTC
view on stackexchange narkive permalink

Innym rozwiązaniem jest wyłączenie ekranu podczas programowania .

Ekran jest aktywny, gdy pin CS (chip select) jest niski (0v). Jeśli umieścisz rezystor podciągający 10kR między pinem CS a 3V3 , będzie on domyślnie wyłączony / wysoki. Aby to włączyć, podłącz pin CS do wyjścia mikrokontrolera i ustaw to wyjście na niskie (0V). Zrobiłem to w jednym z moich projektów i działa dobrze.

Ekran działa przy 3,3 V, będziesz musiał dodać dzielnik napięcia, jeśli twój mikrokontroler działa przy 5V.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...