Perangkat SPI mencegah pemrograman ISP

8

Saya memiliki ATmega8 dengan Nokia LCD 5510 yang terhubung dengannya. Semuanya bekerja dengan baik di papan tempat memotong roti dan langkah saya selanjutnya adalah memindahkannya ke papan yang lebih permanen. Masalah saya adalah bahwa saya tidak dapat memprogram ATmega8 sementara LCD juga terhubung. Saya berasumsi itu karena mereka menggunakan pin SPI yang sama dan bahwa LCD entah bagaimana mengganggu pemrograman. Bagaimana saya bisa melakukan ini berbeda sehingga saya dapat mem-flash ATmega melalui ISP tanpa mencabut LCD?

Tom Van den Bon
sumber
2
Anda benar-benar perlu menambahkan sirkuit untuk mendapatkan jawaban yang bagus tentang ini. Anda dapat menggunakan Ctrl-M untuk meluncurkan editor skematis di tempat atau dengan cara lain menaruh tautan ke skema dan seseorang dapat mengeditnya di pertanyaan.
PeterJ
1
Apakah perangkat aktif rendah? Jika ya, apakah Anda menambahkan resistor pull up? Jika tidak, perangkat akan memonopoli bus SPI hingga dirilis.
NothinRandom

Jawaban:

12

Anda harus mencegah perangkat lain dari mengarahkan jalur SPI selama pemrograman.

Untuk menghindari pertikaian pengemudi, resistor seri harus ditempatkan pada masing-masing dari tiga jalur khusus jika ada kemungkinan bahwa sirkuit eksternal dapat menggerakkan garis-garis ini.

masukkan deskripsi gambar di sini

Lihatlah catatan Aplikasi AVR910.

Untuk menghindari masalah, In-System Programmer harus dapat menjaga seluruh Reset Sistem Target selama durasi siklus pemrograman. Sistem target tidak boleh mencoba menggerakkan tiga jalur SPI saat Reset aktif.

Jadi akan lebih baik jika garis reset pada ATMEGA dan tampilan terhubung secara fungsional untuk mencegah tampilan melakukan apa pun sementara programmer memegang reset.

Rev1.0
sumber
1
Jika LCD memiliki garis pilih chip, pastikan untuk menarik yang tinggi dengan resistor juga. Selama pemrograman, ATmega dalam pengaturan ulang, yang mengatur semua input / output sebagai impedansi tinggi, sehingga LCD tidak akan aktif.
Austin
1
@ Rev1.0: Seharusnya cukup untuk memiliki resistor di garis MISO (karena itu satu-satunya output dari perangkat slave SPI, dua baris lainnya adalah input dan karenanya tidak dapat menyebabkan gangguan).
Curd
@Curd, tambahkan jawaban Anda dengan skema dan saya akan menambahkannya. Kedengarannya seperti dua pendekatan terbaik adalah menambahkan resistor ke garis MISO, atau menambahkan pullup CS, atau keduanya.
Gabriel Staples
2

Solusi lain adalah menonaktifkan layar selama pemrograman .

Layar aktif ketika pin CS (pilih chip) rendah (0v). Jika Anda meletakkan resistor pull-up 10kR antara pin CS dan 3V3 , itu akan dinonaktifkan / tinggi secara default. Untuk mengaktifkannya, hubungkan pin CS ke output dari pengontrol mikro Anda dan setel output itu ke rendah (0V). Saya melakukan itu di salah satu proyek saya dan itu bekerja dengan baik.

Layar berjalan pada 3.3V, Anda harus menambahkan pembagi tegangan jika pengontrol mikro Anda berjalan pada 5V.

Rodot
sumber