我如何在马林鱼中使用 MEGA 引脚编号而不是 RAMPS 引脚编号

3D打印 马林鱼 翻唱 固件 arduino-mega-2650
2021-05-20 18:12:53

我正在为 MEGA2650 设计我自己的盾牌,我将用它来控制我的打印机。

在 marlin 固件中定义引脚时,引脚编号是 RAMPS 扩展板的引脚编号,而不是 Arduino MEGA 本身。

我如何定义引脚以便我可以写#define HEATER1PIN 5,它会使加热器 1引脚位于Arduino MEGA 的引脚 5 而不是 RAMPS 的引脚 5

1个回答

Marlin 使用的引脚映射在文件fastio_1280.h 中定义

/**
 * Pin mapping for the 1280 and 2560
 *
 *   1280     22 23 24 25 26 27 28 29 53 52 51 50 10 11 12 13 37 36 35 34 33 32 31 30 21 20 19 18 81 82 83 38 00 01 78 05 02 03 79 80 54 55 56 57 58 59 60 61 41 40 39 71 70 04 17 16 84 06 07 08 09 85 15 14 72 73 75 76 77 74 62 63 64 65 66 67 68 69 49 48 47 46 45 44 43 42
 *   Port     A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 G0 G1 G2 G3 G4 G5 H0 H1 H2 H3 H4 H5 H6 H7 J0 J1 J2 J3 J4 J5 J6 J7 K0 K1 K2 K3 K4 K5 K6 K7 L0 L1 L2 L3 L4 L5 L6 L7
 *   Marlin   00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
*/

令人困惑的是,标有“1280”的行指的是 Marlin 使用的引脚编号。标有“端口”的行给出了相应的端口/引脚组合,因为它适用于 AtMega2560 芯片本身。要在上面给出的端口号和 Arduino Mega 引脚号之间进行转换,您可以使用以下引脚图:

Arduino Mega 引出线 根据 CC-BY-SA 获得许可,www.bq.com

例如,根据 中的引脚映射fastio_1280.h,Marlin 引脚 34 是“端口”C3。这对应于引脚图中的 PC3,即 Arduino Mega A11。反过来,如果我们想知道Marlin的PWM pin 9是什么,我们可以看图找出它对应的PH6,也就是Marlin pin 09。

如果你想改变这个编号,那么不幸的是,你必须对 fastio_1280.h 做一些修改。例如,“原因”引脚 5 对应于它所做的引脚,是以下一组定义:

#define DIO5_PIN    PINE3
#define DIO5_RPORT  PINE
#define DIO5_WPORT  PORTE
#define DIO5_DDR    DDRE
#define DIO5_PWM    &OCR3AL

如果您想将引脚 5 指向另一个引脚,则需要更改所有这些行以指向正确的寄存器和引脚编号。