Mục lục:

AVR / Arduino nhấp nháy với Raspberry Pi: 3 bước (có hình ảnh)
AVR / Arduino nhấp nháy với Raspberry Pi: 3 bước (có hình ảnh)

Video: AVR / Arduino nhấp nháy với Raspberry Pi: 3 bước (có hình ảnh)

Video: AVR / Arduino nhấp nháy với Raspberry Pi: 3 bước (có hình ảnh)
Video: 01-Cài đặt RaspberryPi OS, điều khiển LED 3 đèn giao thông 2024, Tháng mười một
Anonim
AVR / Arduino nhấp nháy với Raspberry Pi
AVR / Arduino nhấp nháy với Raspberry Pi

Lập trình viên trong hệ thống (ISP) là thiết bị bạn có thể sử dụng để lập trình nhiều bộ vi điều khiển, ví dụ: ATMega328p là bộ não của Arduino Uno. Bạn có thể mua một cái gì đó như USBtinyISP hoặc thậm chí bạn có thể sử dụng Arduino. Tài liệu hướng dẫn này sẽ chỉ cho bạn cách sử dụng Raspberry Pi làm ISP.

Chương trình avrdude, là thứ mà Arduino IDE sử dụng để gắn chip flash, có thể được sử dụng với nhiều lập trình viên. Một trong những tùy chọn của nó là sử dụng các chân SPI trên cổng mở rộng của Pi. Tôi sẽ giải thích cách tạo các kết nối thích hợp, ghép một mạch đơn giản trên bảng điều khiển để bạn không phải đi dây lại mỗi khi bạn muốn flash chip cũng như cách cài đặt và sử dụng avrdude. Tôi cũng sẽ chỉ cho bạn cách tải các chương trình được biên dịch bằng Arduino IDE lên chip AVR như ATmega hoặc ATtiny bằng phương pháp này.

Những điều cần thiết:

  • Raspberry Pi được cài đặt Raspbian mới nhất
  • Ổ cắm đầu cắm nam 40 chân (hoặc 26 chân nếu bạn có Pi cũ hơn)
  • Cáp IDE để kết nối với Pi của bạn
  • Bộ cộng hưởng tinh thể 16 MHz
  • Tụ điện 22 pF (2)
  • LED (1) để cho biết trạng thái của lập trình viên
  • Ổ cắm IC 8, 14 và / hoặc 28 chân, tùy thuộc vào hình dạng của chip bạn muốn flash
  • Một số tấm đục lỗ, dây điện, vật hàn

Bước 1: Xây dựng Tệp đính kèm Cobbler

Xây dựng phần đính kèm Cobbler
Xây dựng phần đính kèm Cobbler
Xây dựng phần đính kèm Cobbler
Xây dựng phần đính kèm Cobbler
Xây dựng phần đính kèm Cobbler
Xây dựng phần đính kèm Cobbler

Giao diện ngoại vi nối tiếp (SPI), còn được gọi là nối tiếp bốn dây, là một cách giao tiếp giữa một thiết bị chính duy nhất và một hoặc nhiều thiết bị phụ. Chúng tôi sẽ sử dụng điều này để flash chip, với Pi là chính và chip là nô lệ. Bạn sẽ tạo các kết nối sau giữa Pi và chip của mình (xem sơ đồ chân ở trên để biết các cổng mở rộng AVR và Pi khác nhau để biết đó là chân nào):

  • Kết nối các chân MOSI (master-out-slave-in) với nhau
  • Kết nối các chân SCLK (đồng hồ dùng chung) với nhau
  • Kết nối các chân MISO (master-in-slave-out) với điện trở 220 Ohm, để bảo vệ Pi khỏi bất kỳ điện áp cao bất ngờ nào từ chip
  • Kết nối GPIO 25 trên Pi trực tiếp với chân ĐẶT LẠI trên chip. Pi kéo chân này xuống thấp khi lập trình, vì vậy chúng tôi sử dụng điện trở 10K để giữ cho nó ở mức cao khi không lập trình và một đèn LED có điện trở bảo vệ 1K chạy đến điện áp dương để cung cấp cho chúng tôi một số phản hồi trực quan khi nó đang lập trình.

Chúng tôi kết nối các chân nối đất và nguồn (3.3V) giữa Pi và các chip mà chúng tôi muốn lập trình. Trong trường hợp bạn chưa biết, các chân của Raspberry Pi không có khả năng chịu 5V - chúng sẽ bị hỏng nếu xuất hiện nhiều hơn 3.3V trên chúng. Nếu các chip được lập trình cần nguồn 5V vì lý do nào đó, chúng tôi có thể sử dụng chip dịch chuyển mức để bảo vệ các chân của Pi, nhưng tôi không gặp bất kỳ vấn đề nào khi sử dụng 3.3V - vì vậy tôi khuyên bạn nên sử dụng nó an toàn và tiết kiệm linh kiện.

Cuối cùng, chúng tôi kết nối bộ dao động tinh thể 16MHz qua các chân XTAL trên chip, chúng tôi cũng kết nối với mặt đất thông qua một vài tụ điện 22pF. Các chip AVR có thể được thiết lập để chạy ở các tần số khác nhau, và cũng có thể được thiết lập để sử dụng nguồn bên trong hoặc bên ngoài để xác định tần số đó. Nếu chip của bạn được thiết lập để sử dụng một tinh thể bên ngoài làm nguồn tần số của nó, bạn sẽ không thể lập trình lại mà không có nó. Nếu không, nó không thành vấn đề nếu nó ở đó.

Bạn có thể sử dụng sơ đồ mạch trong hình ảnh cuối cùng làm hướng dẫn lắp ráp phần đính kèm cobbler của bạn trên bảng điều khiển. Bạn có thể có nhiều hoặc ít hình dạng ổ cắm IC khác nhau tùy thích, chỉ cần kết nối các chân thích hợp song song với Pi và tinh thể. N. B. nếu bạn sử dụng hình ảnh của nguyên mẫu của tôi làm hướng dẫn, hãy lưu ý rằng tôi đã thêm một số chân cắm và ổ cắm tiêu đề bổ sung để tôi có thể truy cập các chân trên Pi vì những lý do không liên quan.

Bước 2: Cài đặt và sử dụng Avrdude

Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude
Cài đặt và sử dụng Avrdude

Để cài đặt avrdude trên Pi của bạn, chỉ cần nhập

sudo apt-get install avrdude

Sau đó, bạn sẽ cần phải kích hoạt giao diện SPI, nếu nó chưa được bật. Có một cách dòng lệnh để thực hiện việc này, nhưng sẽ dễ dàng hơn nhiều khi sử dụng công cụ cấu hình Raspberry Pi. Kiểu

sudo raspi-config

và đi tới Tùy chọn giao diện để bật SPI.

Để flash chip của bạn, hãy cắm cáp ribbon từ Pi của bạn vào đầu nối trên mạch perfboard và lắp chip vào ổ cắm IC thích hợp (đảm bảo rằng nó hướng về phía bên phải).

Khi nhấp nháy một chương trình, bạn cũng phải đảm bảo đặt các cầu chì trong chip một cách chính xác. Đây thực sự chỉ là các bit trong chip mà bạn đặt để cho nó biết tốc độ xung nhịp chạy ở mức nào, có xóa EEPROM khi ghi chip hay không, v.v. Bạn có thể đọc thông số AVR đầy đủ để tìm ra cách đặt từng bit, nhưng việc sử dụng máy tính cầu chì được cung cấp tại engbedded.com/fusecalc sẽ dễ dàng hơn nhiều. Chọn tên phần AVR bạn đang sử dụng và chọn các tùy chọn bạn muốn trong vùng "Lựa chọn tính năng". Tôi thường chỉ đảm bảo cài đặt đồng hồ đúng và để những thứ khác ở chế độ mặc định. Hầu như bạn sẽ luôn muốn để "Đã bật lập trình nối tiếp" CHECKED và "Đã tắt Đặt lại" KHÔNG ĐƯỢC KIỂM TRA - nếu không bạn sẽ không thể lập trình lại chip. Khi bạn có cài đặt phù hợp, bạn có thể cuộn xuống khu vực "Cài đặt hiện tại" và sao chép các đối số AVRDUDE như trong hình.

Để đặt cầu chì, hãy nhập lệnh

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

nơi tên bộ phận tương ứng với chip bạn đang sử dụng. Bạn có thể tìm thấy danh sách tên bộ phận bằng cách nhập sudo ardude -c linuxspi -p? Type. Để flash chương trình của bạn, hãy đảm bảo rằng nó nằm trong thư mục hiện tại của bạn và nhập

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash: w:: i

Sau cả hai lệnh, đèn LED sẽ sáng trong khi chip đang được sửa đổi.

Bước 3: Đưa chương trình Arduino vào AVRs

Bắt các chương trình Arduino vào AVRs
Bắt các chương trình Arduino vào AVRs
Bắt các chương trình Arduino vào AVRs
Bắt các chương trình Arduino vào AVRs
Bắt các chương trình Arduino vào AVRs
Bắt các chương trình Arduino vào AVRs

Trọng tâm chính của hướng dẫn này là flash các chương trình đã được biên dịch sẵn lên chip, chứ không phải cách viết hoặc biên dịch chúng. Tuy nhiên, tôi muốn giải thích cách bạn có thể biên dịch các tệp nhị phân bằng Arduino IDE và đưa chúng lên các chip AVR trần bằng phương pháp này, vì Arduino tương đối dễ học và có rất nhiều hướng dẫn và ví dụ.

Đầu tiên, bạn sẽ cần thêm thông tin về các chip AVR mà bạn sẽ nhấp nháy để IDE biết cách biên dịch cho chúng. James Sleeman đã tập hợp rất hữu ích một số tệp thiết lập, có sẵn trên github. Để sử dụng chúng, hãy mở menu "Tùy chọn" trong Arduino IDE và nhấp vào hộp bên cạnh trường "URL trình quản lý bảng bổ sung". Sao chép và dán các URL sau vào hộp thoại xuất hiện:

Sau đó, đi tới menu "Công cụ" và tìm tùy chọn "Trình quản lý bảng …" trong menu con "Bảng". Cuộn xuống cuối danh sách trong hộp thoại Trình quản lý bảng và cài đặt bảng ATmega tự làm và ATtiny tự làm.

Để biên dịch các chương trình của bạn, trước tiên hãy đảm bảo rằng bạn đã chọn đúng chip trong menu "Bộ xử lý", cũng như Tốc độ bộ xử lý chính xác. Chọn tùy chọn "Sử dụng Bộ nạp khởi động: Không", vì chúng tôi sẽ tải lên trực tiếp bằng Pi và do đó có thể sử dụng thêm dung lượng thường được bộ nạp khởi động Arduino chiếm. Bây giờ, hãy nhấp vào nút "Xác minh" (dấu kiểm). Điều này sẽ biên dịch chương trình của bạn mà không cần cố gắng tải lên (vì bạn đang tự mình thực hiện bước đó).

Giả sử mọi thứ đều ổn, bây giờ bạn cần tải chương trình đã biên dịch về Pi của mình. IDE ẩn chúng ở một vị trí tạm thời, vì nó được thiết kế để tự tải lên các chương trình. Trên Windows, nó nằm trong AppData / Local / Temp trong thư mục người dùng của bạn, trong một thư mục bắt đầu bằng 'arduino_build'. Tìm tệp.hex - đó là chương trình của bạn! Gửi nó đến Pi của bạn qua FTP hoặc bằng thẻ USB và bạn đang kinh doanh.

Thực hiện việc này yêu cầu bạn phải có PC Windows hoặc Mac để biên dịch các chương trình của mình, sau đó bạn sẽ gửi chương trình này tới Pi. Sẽ thực sự tuyệt vời nếu có thể thực hiện việc này trên chính Pi, nhưng tiếc là phiên bản chính thức của Arduino IDE có sẵn trong kho lưu trữ Raspbian khá cũ và không có Trình quản lý bảng. Nếu không có điều này, việc thêm các cài đặt thích hợp để biên dịch cho các AVR thông thường sẽ phức tạp hơn một chút. Có các hướng dẫn để biên dịch phiên bản Arduino mới hơn trên Pi của bạn - nếu đó là những gì bạn muốn làm, hãy đi tìm chúng! Tôi cũng cảm thấy có thể để IDE sử dụng lập trình linuxspi để flash chip từ chính IDE (tức là sử dụng nút "tải xuống"), nhưng điều này nằm ngoài sự kiên nhẫn và trình độ kỹ năng của tôi - nếu bạn biết một cách, đăng nó trong các ý kiến! Cuối cùng, bạn chỉ có thể viết chương trình trực tiếp trong AVR-C và biên dịch chúng trên Pi với avr-gcc, mang lại cho bạn một nền tảng phát triển AVR hoàn chỉnh trong Raspberry Pi. Tôi đã làm được một chút việc đó, và nếu bạn muốn đi theo con đường đó, tôi xin chào bạn. Hãy nhấp nháy!

Đề xuất: