繁体   English   中英

Arduino使用所有端口ATMega2560

[英]Arduino use all Ports ATMega2560

我用Atmega2560构建了自己的PCB。 不正确的是,我在Arduino不使用的引脚上组装了一些输入和输出。 尽管我仍然可以将它们与端口操纵一起使用,但是我想手动将它们添加到pins_arduino.h中,以便可以使用数组更好地操纵它们。

我已经尝试过了,但是没有用。 有人可以指导我吗?

非常感谢!

我已经尝试过了,但是没有用。 有人可以指导我吗?

您实际上需要创建自己的Arduino目标。 我们将$ARDUINO视为arduino安装的根目录( /usr/share/arduino/Applications/Arduino.app/Contents/Resources/Java/或Windows上的任何文件)。

因此,请执行以下步骤:

  1. $ARDUINO/hardware将完整的arduino目录复制到一个新目录,您可以自由调用该目录。 通常使用你的公司或团体的名字,我们就叫它example为例子的目的;
  2. $ARDUINO/hardware/example/variants目录中,您需要复制mega目录并用板的名称重命名,在示例中将其称为thing ,您可以安全地删除所有其他变体(因为它们仍然是在arduino变体目录中!)
  3. 现在,您可以编辑$ARDUINO/hardware/example/variants/thing/pins_arduino.h ,其中arduino引脚号是每个阵列的索引,并且每个阵列中的每个索引都定义了PIN的参数。 在文章的结尾,我粘贴了标题的相关部分。
  4. 现在您可以编辑$ARDUINO/hardware/boards.txt

并输入一个:

###########################################################################
thing.name=Your full product name

thing.upload.protocol=wiring
thing.upload.maximum_size=258048
thing.upload.speed=115200

thing.bootloader.low_fuses=0xFF      // double check that those values are the one you need for the fuses
thing.bootloader.high_fuses=0xD8
thing.bootloader.extended_fuses=0xFD
thing.bootloader.path=stk500v2
thing.bootloader.file=stk500boot_v2_mega2560.hex
thing.bootloader.unlock_bits=0x3F
thing.bootloader.lock_bits=0x0F

thing.build.mcu=atmega2560
thing.build.f_cpu=16000000L
thing.build.core=arduino
thing.build.variant=thing
###########################################################################

现在您应该已经准备就绪! (如果我没有忘记什么:-s)

这是pins_arduino.h的相关部分:

const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
    // PORTLIST             
    // -------------------------------------------          
    PE  , // PE 0 ** 0 ** USART0_RX     
    PE  , // PE 1 ** 1 ** USART0_TX     
    PE  , // PE 4 ** 2 ** PWM2  
    PE  , // PE 5 ** 3 ** PWM3  
    PG  , // PG 5 ** 4 ** PWM4  
    PE  , // PE 3 ** 5 ** PWM5  
    PH  , // PH 3 ** 6 ** PWM6  
    PH  , // PH 4 ** 7 ** PWM7  
    PH  , // PH 5 ** 8 ** PWM8  
    PH  , // PH 6 ** 9 ** PWM9  
    PB  , // PB 4 ** 10 ** PWM10        
    PB  , // PB 5 ** 11 ** PWM11        
    PB  , // PB 6 ** 12 ** PWM12        
    PB  , // PB 7 ** 13 ** PWM13        
    PJ  , // PJ 1 ** 14 ** USART3_TX    
    PJ  , // PJ 0 ** 15 ** USART3_RX    
    PH  , // PH 1 ** 16 ** USART2_TX    
    PH  , // PH 0 ** 17 ** USART2_RX    
    PD  , // PD 3 ** 18 ** USART1_TX    
    PD  , // PD 2 ** 19 ** USART1_RX    
    PD  , // PD 1 ** 20 ** I2C_SDA      
    PD  , // PD 0 ** 21 ** I2C_SCL      
    PA  , // PA 0 ** 22 ** D22  
    PA  , // PA 1 ** 23 ** D23  
    PA  , // PA 2 ** 24 ** D24  
    PA  , // PA 3 ** 25 ** D25  
    PA  , // PA 4 ** 26 ** D26  
    PA  , // PA 5 ** 27 ** D27  
    PA  , // PA 6 ** 28 ** D28  
    PA  , // PA 7 ** 29 ** D29  
    PC  , // PC 7 ** 30 ** D30  
    PC  , // PC 6 ** 31 ** D31  
    PC  , // PC 5 ** 32 ** D32  
    PC  , // PC 4 ** 33 ** D33  
    PC  , // PC 3 ** 34 ** D34  
    PC  , // PC 2 ** 35 ** D35  
    PC  , // PC 1 ** 36 ** D36  
    PC  , // PC 0 ** 37 ** D37  
    PD  , // PD 7 ** 38 ** D38  
    PG  , // PG 2 ** 39 ** D39  
    PG  , // PG 1 ** 40 ** D40  
    PG  , // PG 0 ** 41 ** D41  
    PL  , // PL 7 ** 42 ** D42  
    PL  , // PL 6 ** 43 ** D43  
    PL  , // PL 5 ** 44 ** D44  
    PL  , // PL 4 ** 45 ** D45  
    PL  , // PL 3 ** 46 ** D46  
    PL  , // PL 2 ** 47 ** D47  
    PL  , // PL 1 ** 48 ** D48  
    PL  , // PL 0 ** 49 ** D49  
    PB  , // PB 3 ** 50 ** SPI_MISO     
    PB  , // PB 2 ** 51 ** SPI_MOSI     
    PB  , // PB 1 ** 52 ** SPI_SCK      
    PB  , // PB 0 ** 53 ** SPI_SS       
    PF  , // PF 0 ** 54 ** A0   
    PF  , // PF 1 ** 55 ** A1   
    PF  , // PF 2 ** 56 ** A2   
    PF  , // PF 3 ** 57 ** A3   
    PF  , // PF 4 ** 58 ** A4   
    PF  , // PF 5 ** 59 ** A5   
    PF  , // PF 6 ** 60 ** A6   
    PF  , // PF 7 ** 61 ** A7   
    PK  , // PK 0 ** 62 ** A8   
    PK  , // PK 1 ** 63 ** A9   
    PK  , // PK 2 ** 64 ** A10  
    PK  , // PK 3 ** 65 ** A11  
    PK  , // PK 4 ** 66 ** A12  
    PK  , // PK 5 ** 67 ** A13  
    PK  , // PK 6 ** 68 ** A14  
    PK  , // PK 7 ** 69 ** A15  
    // added stuff
    PD  , // PD 4 ** 70 ** D70
    PD  , // PD 5 ** 71 ** D71
    PD  , // PD 6 ** 72 ** D72
    PG  , // PG 3 ** 73 ** D73
    PG  , // PG 4 ** 74 ** D74
    PH  , // PH 2 ** 75 ** D75
    PH  , // PH 7 ** 76 ** D76
    PJ  , // PJ 2 ** 77 ** D77
    PJ  , // PJ 3 ** 78 ** D78
    PJ  , // PJ 4 ** 79 ** D79
    PJ  , // PJ 5 ** 80 ** D80
    PJ  , // PJ 6 ** 81 ** D81
    PJ  , // PJ 7 ** 82 ** D82
    PE  , // PE 6 ** 83 ** D83
    PE  , // PE 7 ** 84 ** D84
};

const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
    // PIN IN PORT          
    // -------------------------------------------          
    _BV( 0 )    , // PE 0 ** 0 ** USART0_RX     
    _BV( 1 )    , // PE 1 ** 1 ** USART0_TX     
    _BV( 4 )    , // PE 4 ** 2 ** PWM2  
    _BV( 5 )    , // PE 5 ** 3 ** PWM3  
    _BV( 5 )    , // PG 5 ** 4 ** PWM4  
    _BV( 3 )    , // PE 3 ** 5 ** PWM5  
    _BV( 3 )    , // PH 3 ** 6 ** PWM6  
    _BV( 4 )    , // PH 4 ** 7 ** PWM7  
    _BV( 5 )    , // PH 5 ** 8 ** PWM8  
    _BV( 6 )    , // PH 6 ** 9 ** PWM9  
    _BV( 4 )    , // PB 4 ** 10 ** PWM10        
    _BV( 5 )    , // PB 5 ** 11 ** PWM11        
    _BV( 6 )    , // PB 6 ** 12 ** PWM12        
    _BV( 7 )    , // PB 7 ** 13 ** PWM13        
    _BV( 1 )    , // PJ 1 ** 14 ** USART3_TX    
    _BV( 0 )    , // PJ 0 ** 15 ** USART3_RX    
    _BV( 1 )    , // PH 1 ** 16 ** USART2_TX    
    _BV( 0 )    , // PH 0 ** 17 ** USART2_RX    
    _BV( 3 )    , // PD 3 ** 18 ** USART1_TX    
    _BV( 2 )    , // PD 2 ** 19 ** USART1_RX    
    _BV( 1 )    , // PD 1 ** 20 ** I2C_SDA      
    _BV( 0 )    , // PD 0 ** 21 ** I2C_SCL      
    _BV( 0 )    , // PA 0 ** 22 ** D22  
    _BV( 1 )    , // PA 1 ** 23 ** D23  
    _BV( 2 )    , // PA 2 ** 24 ** D24  
    _BV( 3 )    , // PA 3 ** 25 ** D25  
    _BV( 4 )    , // PA 4 ** 26 ** D26  
    _BV( 5 )    , // PA 5 ** 27 ** D27  
    _BV( 6 )    , // PA 6 ** 28 ** D28  
    _BV( 7 )    , // PA 7 ** 29 ** D29  
    _BV( 7 )    , // PC 7 ** 30 ** D30  
    _BV( 6 )    , // PC 6 ** 31 ** D31  
    _BV( 5 )    , // PC 5 ** 32 ** D32  
    _BV( 4 )    , // PC 4 ** 33 ** D33  
    _BV( 3 )    , // PC 3 ** 34 ** D34  
    _BV( 2 )    , // PC 2 ** 35 ** D35  
    _BV( 1 )    , // PC 1 ** 36 ** D36  
    _BV( 0 )    , // PC 0 ** 37 ** D37  
    _BV( 7 )    , // PD 7 ** 38 ** D38  
    _BV( 2 )    , // PG 2 ** 39 ** D39  
    _BV( 1 )    , // PG 1 ** 40 ** D40  
    _BV( 0 )    , // PG 0 ** 41 ** D41  
    _BV( 7 )    , // PL 7 ** 42 ** D42  
    _BV( 6 )    , // PL 6 ** 43 ** D43  
    _BV( 5 )    , // PL 5 ** 44 ** D44  
    _BV( 4 )    , // PL 4 ** 45 ** D45
    _BV( 3 )    , // PL 3 ** 46 ** D46  
    _BV( 2 )    , // PL 2 ** 47 ** D47  
    _BV( 1 )    , // PL 1 ** 48 ** D48  
    _BV( 0 )    , // PL 0 ** 49 ** D49  
    _BV( 3 )    , // PB 3 ** 50 ** SPI_MISO     
    _BV( 2 )    , // PB 2 ** 51 ** SPI_MOSI     
    _BV( 1 )    , // PB 1 ** 52 ** SPI_SCK      
    _BV( 0 )    , // PB 0 ** 53 ** SPI_SS       
    _BV( 0 )    , // PF 0 ** 54 ** A0   
    _BV( 1 )    , // PF 1 ** 55 ** A1   
    _BV( 2 )    , // PF 2 ** 56 ** A2   
    _BV( 3 )    , // PF 3 ** 57 ** A3   
    _BV( 4 )    , // PF 4 ** 58 ** A4   
    _BV( 5 )    , // PF 5 ** 59 ** A5   
    _BV( 6 )    , // PF 6 ** 60 ** A6   
    _BV( 7 )    , // PF 7 ** 61 ** A7   
    _BV( 0 )    , // PK 0 ** 62 ** A8   
    _BV( 1 )    , // PK 1 ** 63 ** A9   
    _BV( 2 )    , // PK 2 ** 64 ** A10  
    _BV( 3 )    , // PK 3 ** 65 ** A11  
    _BV( 4 )    , // PK 4 ** 66 ** A12  
    _BV( 5 )    , // PK 5 ** 67 ** A13  
    _BV( 6 )    , // PK 6 ** 68 ** A14  
    _BV( 7 )    , // PK 7 ** 69 ** A15  
    // added stuff
    _BV( 4 )    , // PD 4 ** 70 ** D70
    _BV( 5 )    , // PD 5 ** 71 ** D71
    _BV( 6 )    , // PD 6 ** 72 ** D72
    _BV( 3 )    , // PG 3 ** 73 ** D73
    _BV( 4 )    , // PG 4 ** 74 ** D74
    _BV( 2 )    , // PH 2 ** 75 ** D75
    _BV( 7 )    , // PH 7 ** 76 ** D76
    _BV( 2 )    , // PJ 2 ** 77 ** D77
    _BV( 3 )    , // PJ 3 ** 78 ** D78
    _BV( 4 )    , // PJ 4 ** 79 ** D79
    _BV( 5 )    , // PJ 5 ** 80 ** D80
    _BV( 6 )    , // PJ 6 ** 81 ** D81
    _BV( 7 )    , // PJ 7 ** 82 ** D82
    _BV( 6 )    , // PE 6 ** 83 ** D83
    _BV( 7 )    , // PE 7 ** 84 ** D84
};

const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
    // TIMERS               
    // -------------------------------------------          
    NOT_ON_TIMER    , // PE 0 ** 0 ** USART0_RX     
    NOT_ON_TIMER    , // PE 1 ** 1 ** USART0_TX     
    TIMER3B , // PE 4 ** 2 ** PWM2  
    TIMER3C , // PE 5 ** 3 ** PWM3  
    TIMER0B , // PG 5 ** 4 ** PWM4  
    TIMER3A , // PE 3 ** 5 ** PWM5  
    TIMER4A , // PH 3 ** 6 ** PWM6  
    TIMER4B , // PH 4 ** 7 ** PWM7  
    TIMER4C , // PH 5 ** 8 ** PWM8  
    TIMER2B , // PH 6 ** 9 ** PWM9  
    TIMER2A , // PB 4 ** 10 ** PWM10        
    TIMER1A , // PB 5 ** 11 ** PWM11        
    TIMER1B , // PB 6 ** 12 ** PWM12        
    TIMER0A , // PB 7 ** 13 ** PWM13        
    NOT_ON_TIMER    , // PJ 1 ** 14 ** USART3_TX    
    NOT_ON_TIMER    , // PJ 0 ** 15 ** USART3_RX    
    NOT_ON_TIMER    , // PH 1 ** 16 ** USART2_TX    
    NOT_ON_TIMER    , // PH 0 ** 17 ** USART2_RX    
    NOT_ON_TIMER    , // PD 3 ** 18 ** USART1_TX    
    NOT_ON_TIMER    , // PD 2 ** 19 ** USART1_RX    
    NOT_ON_TIMER    , // PD 1 ** 20 ** I2C_SDA      
    NOT_ON_TIMER    , // PD 0 ** 21 ** I2C_SCL      
    NOT_ON_TIMER    , // PA 0 ** 22 ** D22  
    NOT_ON_TIMER    , // PA 1 ** 23 ** D23  
    NOT_ON_TIMER    , // PA 2 ** 24 ** D24  
    NOT_ON_TIMER    , // PA 3 ** 25 ** D25  
    NOT_ON_TIMER    , // PA 4 ** 26 ** D26  
    NOT_ON_TIMER    , // PA 5 ** 27 ** D27  
    NOT_ON_TIMER    , // PA 6 ** 28 ** D28  
    NOT_ON_TIMER    , // PA 7 ** 29 ** D29  
    NOT_ON_TIMER    , // PC 7 ** 30 ** D30  
    NOT_ON_TIMER    , // PC 6 ** 31 ** D31  
    NOT_ON_TIMER    , // PC 5 ** 32 ** D32  
    NOT_ON_TIMER    , // PC 4 ** 33 ** D33  
    NOT_ON_TIMER    , // PC 3 ** 34 ** D34  
    NOT_ON_TIMER    , // PC 2 ** 35 ** D35  
    NOT_ON_TIMER    , // PC 1 ** 36 ** D36  
    NOT_ON_TIMER    , // PC 0 ** 37 ** D37  
    NOT_ON_TIMER    , // PD 7 ** 38 ** D38  
    NOT_ON_TIMER    , // PG 2 ** 39 ** D39  
    NOT_ON_TIMER    , // PG 1 ** 40 ** D40  
    NOT_ON_TIMER    , // PG 0 ** 41 ** D41  
    NOT_ON_TIMER    , // PL 7 ** 42 ** D42  
    NOT_ON_TIMER    , // PL 6 ** 43 ** D43  
    TIMER5C , // PL 5 ** 44 ** D44  
    TIMER5B , // PL 4 ** 45 ** D45  
    TIMER5A , // PL 3 ** 46 ** D46  
    NOT_ON_TIMER    , // PL 2 ** 47 ** D47  
    NOT_ON_TIMER    , // PL 1 ** 48 ** D48  
    NOT_ON_TIMER    , // PL 0 ** 49 ** D49  
    NOT_ON_TIMER    , // PB 3 ** 50 ** SPI_MISO     
    NOT_ON_TIMER    , // PB 2 ** 51 ** SPI_MOSI     
    NOT_ON_TIMER    , // PB 1 ** 52 ** SPI_SCK      
    NOT_ON_TIMER    , // PB 0 ** 53 ** SPI_SS       
    NOT_ON_TIMER    , // PF 0 ** 54 ** A0   
    NOT_ON_TIMER    , // PF 1 ** 55 ** A1   
    NOT_ON_TIMER    , // PF 2 ** 56 ** A2   
    NOT_ON_TIMER    , // PF 3 ** 57 ** A3   
    NOT_ON_TIMER    , // PF 4 ** 58 ** A4   
    NOT_ON_TIMER    , // PF 5 ** 59 ** A5   
    NOT_ON_TIMER    , // PF 6 ** 60 ** A6   
    NOT_ON_TIMER    , // PF 7 ** 61 ** A7   
    NOT_ON_TIMER    , // PK 0 ** 62 ** A8   
    NOT_ON_TIMER    , // PK 1 ** 63 ** A9   
    NOT_ON_TIMER    , // PK 2 ** 64 ** A10  
    NOT_ON_TIMER    , // PK 3 ** 65 ** A11  
    NOT_ON_TIMER    , // PK 4 ** 66 ** A12  
    NOT_ON_TIMER    , // PK 5 ** 67 ** A13  
    NOT_ON_TIMER    , // PK 6 ** 68 ** A14  
    NOT_ON_TIMER    , // PK 7 ** 69 ** A15  
    // added stuff
    NOT_ON_TIMER        , // PD 4 ** 70 ** D70
    NOT_ON_TIMER        , // PD 5 ** 71 ** D71
    NOT_ON_TIMER        , // PD 6 ** 72 ** D72
    NOT_ON_TIMER        , // PG 3 ** 73 ** D73
    NOT_ON_TIMER        , // PG 4 ** 74 ** D74
    NOT_ON_TIMER        , // PH 2 ** 75 ** D75
    NOT_ON_TIMER        , // PH 7 ** 76 ** D76
    NOT_ON_TIMER        , // PJ 2 ** 77 ** D77   // PCINT 11
    NOT_ON_TIMER        , // PJ 3 ** 78 ** D78   // PCINT 12
    NOT_ON_TIMER        , // PJ 4 ** 79 ** D79   // PCINT 13
    NOT_ON_TIMER        , // PJ 5 ** 80 ** D80   // PCINT 14
    NOT_ON_TIMER        , // PJ 6 ** 81 ** D81   // PCINT 15
    NOT_ON_TIMER        , // PJ 7 ** 82 ** D82
    NOT_ON_TIMER        , // PE 6 ** 83 ** D83
    NOT_ON_TIMER        , // PE 7 ** 84 ** D84
};

我已经完成了一个项目。 您可以将我的GITHUB Mega2560 拉到型号,电路板和pins_arduino.h文件中。 它基本上执行zmo所说的。 也就是说,它适用于IDE 1.5.0,其中1.5.5为平台AVR / SAM添加了目录。

您将需要阅读有关1.0.51.5.5的内容

在我的新项目中,我使用1.5.5,其中board.txt支持“ uno.build.board = AVR_UNO”标签,该标签使编译器自动识别真正容易。

例如,请参阅有关1.5.5 board.txt的讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM