Thiết bị SPI ngăn chặn lập trình ISP


8

Tôi có một ATmega8 với Nokia LCD 5510 được kết nối với nó. Tất cả mọi thứ hoạt động tuyệt vời trên một chiếc bánh mì và bước tiếp theo của tôi là chuyển nó sang một bảng lâu dài hơn. Vấn đề của tôi là tôi không thể lập trình ATmega8 trong khi LCD cũng được kết nối. Tôi cho rằng đó là vì họ sử dụng cùng các chân SPI và LCD bằng cách nào đó can thiệp vào chương trình. Làm thế nào tôi có thể làm điều này khác nhau để tôi có thể flash ATmega qua ISP mà không cần rút phích cắm LCD?


2
Bạn sẽ thực sự cần thêm một mạch để có câu trả lời tốt về điều này. Bạn có thể sử dụng Ctrl-M để khởi chạy trình soạn thảo sơ đồ tại chỗ hoặc nếu không, chỉ cần đặt một liên kết đến sơ đồ và ai đó có thể chỉnh sửa nó vào câu hỏi.
PeterJ

1
Là thiết bị hoạt động thấp? Nếu có, sau đó bạn đã thêm một điện trở kéo lên? Nếu bạn không làm như vậy, thì thiết bị sẽ hog bus SPI cho đến khi nó được phát hành.
NothinRandom

Câu trả lời:


12

Bạn phải ngăn bất kỳ thiết bị nào khác điều khiển các dòng SPI trong khi lập trình.

Để tránh sự tranh chấp của trình điều khiển, nên đặt một điện trở nối tiếp trên mỗi trong ba dòng chuyên dụng nếu có khả năng mạch ngoài có thể điều khiển các dòng này.

nhập mô tả hình ảnh ở đây

Hãy xem Lưu ý về ứng dụng AVR910.

Để tránh sự cố, Lập trình viên trong hệ thống phải có thể giữ toàn bộ Cài đặt lại hệ thống đích trong suốt thời gian của chu trình lập trình. Hệ thống đích không bao giờ cố gắng lái ba dòng SPI trong khi Reset được kích hoạt.

Vì vậy, sẽ là tốt nhất nếu các dòng thiết lập lại của ATMEGA và màn hình được kết nối chức năng để ngăn màn hình làm bất cứ điều gì trong khi lập trình viên giữ lại.


1
Nếu màn hình LCD có dòng chọn chip, hãy đảm bảo kéo mức cao đó bằng điện trở. Trong quá trình lập trình, ATmega được đặt lại, thiết lập tất cả đầu vào / đầu ra là trở kháng cao, do đó LCD sẽ không hoạt động.
Austin

1
@ Rev1.0: Cần có một điện trở trong dòng MISO là đủ (vì đó là đầu ra duy nhất của thiết bị nô lệ SPI, hai dòng còn lại là đầu vào và do đó không thể gây ra bất kỳ nhiễu nào).
Sữa đông

@Curd, thêm câu trả lời của bạn với sơ đồ và tôi sẽ đưa ra câu trả lời. Âm thanh giống như hai cách tiếp cận tốt nhất là thêm một điện trở vào chỉ đường MISO hoặc thêm một pullup CS hoặc cả hai.
Gabriel Staples

2

Một giải pháp khác là vô hiệu hóa màn hình trong quá trình lập trình .

Màn hình hoạt động khi chân CS (chọn chip) ở mức thấp (0v). Nếu bạn đặt điện trở kéo lên 10kR giữa chân CS và 3V3 , nó sẽ bị tắt / cao theo mặc định. Để kích hoạt nó, hãy kết nối chân CS với đầu ra của bộ điều khiển vi mô của bạn và đặt đầu ra đó ở mức thấp (0V). Tôi đã làm điều đó trên một trong những dự án của tôi và nó hoạt động tốt.

Màn hình chạy ở mức 3,3V, bạn sẽ phải thêm bộ chia điện áp nếu bộ điều khiển vi mô của bạn chạy ở mức 5V.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.