Có cách nào để làm cho việc nối dây một bộ vi xử lý trần thành một tấm chắn dễ dàng hơn không?


7

Tôi hiện đang làm hầu hết các công việc AVR của mình trên các bảng mạch, nhưng sự đa dạng của các lá chắn Arduino và mã ngoài đó khiến tôi tự hỏi liệu đôi khi tôi không đập đầu vào tường, và nhìn lên cổng để ghim ánh xạ vừa lãng phí thời gian vừa chậm lại tôi xuống Có cách nào thuận tiện để thích nghi với AVR ( khác so với những pin tương thích với Arduinos hiện hành) để Arduino lá chắn?


Bạn có hỏi: Có cách nào để làm cho việc kết nối một bộ vi xử lý trần thành một tấm chắn dễ dàng hơn không?
Cyberg Ribbon

1
@Cyberg Ribbon: Đó chính xác là những gì tôi đang hỏi.
Ignacio Vazquez-Abrams

1
Về điều đó, tôi không có câu trả lời. Thành thật mà nói, cách làm việc của tôi xung quanh vấn đề này là hầu như chỉ sử dụng các thiết bị I2C hoặc SPI nên chỉ có một vài chân để nhớ.
Cyberg Ribbon

@JarrodRoberson Bạn đã thay thế AVR trong tiêu đề bằng bộ vi xử lý, AVR không phải là bộ vi xử lý, chúng là bộ vi điều khiển là bộ vi xử lý + bộ nhớ + thiết bị ngoại vi, v.v. Bạn cũng đã loại bỏ từ Arduino khỏi tấm khiên khiên nói chung.
alexan_e

@alexan_e đọc các ý kiến OP đúng về bạn ...

Câu trả lời:


4

Bạn có thể tạo bảng điều hợp (một cho mỗi mô hình mcu).

Mặt dưới (các đầu nam) sẽ cắm vào bảng và mặt trên sẽ có các đầu nữ với cùng một chân với bảng Arduino (các thính giả nữ được đặt ở các vị trí thích hợp để khớp với các lá chắn Arduino).

Một bảng như vậy không nên khó thiết kế.

Đây là một hình ảnh giống với những gì tôi mô tả

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

Nó sẽ điều chỉnh sơ đồ chân của một AVR trần với sơ đồ chân của một Arduino điển hình để các lá chắn có thể được cắm trực tiếp lên trên nó.


Ngoài ra một sơ đồ chân có thể có ích để tăng tốc mọi thứ khi bạn sử dụng chip trần với mã Arduino.
( nguồn hình ảnh ) nhập mô tả hình ảnh ở đây

Một giải pháp tương tự khác là một nhãn dán nhỏ được in trên đầu của AVR
( nguồn hình ảnh )

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


+1 cho hiệu ứng didatic của hình ảnh bảng bộ điều hợp VÀ bảng xếp hạng RẤT TIDY.
Ricardo

@Ricardo Mặc dù tôi đồng ý rằng đó là một bức tranh đẹp, nó là từ một trang web khác (nguồn được liệt kê). Nếu không, câu trả lời tuyệt vời! BTW: Hãy thận trọng nếu lá chắn kết nối với ICSP ... Ethernet r.3 thực hiện để thêm khả năng tương thích Mega.
Chim cánh cụt vô danh

2

Cách làm của Arduino là tạo một bảng tra cứu chuyển số pin thành SFR PORTn / DDRn / PINn và bit liên quan. Bạn có thể sử dụng cùng một thủ thuật và làm cho các chân GPIO được đếm một cách thuận tiện như trong gói. Chỉ các thiết bị ngoại vi đặc biệt (như SPI / PWM) không thể được tính theo cách này vì chúng cứng với dây.

Một khởi đầu tốt là Arduino.hsniplet thư viện dưới đây nếu bạn muốn sử dụng lại khái niệm đó.

// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.

#define analogInPinToBit(P) (P)

// On the ATmega1280, the addresses of some of the port registers are
// greater than 255, so we can't store them in uint8_t's.
extern const uint16_t PROGMEM port_to_mode_PGM[];
extern const uint16_t PROGMEM port_to_input_PGM[];
extern const uint16_t PROGMEM port_to_output_PGM[];

extern const uint8_t PROGMEM digital_pin_to_port_PGM[];
// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[];
extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[];
extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];

// Get the bit location within the hardware port of the given virtual pin.
// This comes from the pins_*.c file for the active board configuration.
// 
// These perform slightly better as macros compared to inline functions
//
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
#define analogInPinToBit(P) (P)
#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) )
#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) )
#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) )

Các pinMode, digitalWritedigitalReadcác chức năng được định nghĩa trong /usr/share/arduino/hardware/arduino/cores/arduino/wiring_digital.cđó có thể được sử dụng để tìm cảm hứng thêm.


Trong khi câu trả lời này bao gồm phần mềm, câu hỏi của tôi thực sự hỏi về phần cứng.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams bạn có thể giải thích thêm một chút trong câu hỏi của mình không? Không chắc chắn nếu tôi hiểu những gì bạn đang hỏi.
jippie

Tôi có các chip AVR trần và tôi muốn sử dụng chúng với các lá chắn Arduino hiện có mà không cần phải thêm vài chục dây nhảy.
Ignacio Vazquez-Abrams
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.