2014-01-28 1 views
1

Я построил свою собственную печатную плату с Atmega2560 в ней. По ошибке я собрал несколько входов и выходов на контактах, которые Arduino не использует. Хотя я все еще могу использовать их с Port Manipulation, я хотел бы вручную добавить их в pins_arduino.h, чтобы я мог лучше манипулировать с помощью массивов.Arduino использовать все порты ATMega2560

Я пытался это сделать, но он не работает. Может ли кто-нибудь мне в этом помочь?

Большое спасибо!

ответ

3

Я пытался это сделать, но он не работает. Может ли кто-нибудь мне в этом помочь?

Вам действительно нужно создать свою собственную цель Arduino. Мы рассмотрим $ARDUINO как корень вашей установки arduino (/usr/share/arduino, или /Applications/Arduino.app/Contents/Resources/Java/ или что бы это ни было на окнах ...).

Так сделайте следующие шаги:

  1. в $ARDUINO/hardware скопировать полный каталог arduino в новый, который вы можете позвонить свободно. Обычно используйте название своей фирмы или группы, мы будем называть ее example для примера;
  2. в каталоге $ARDUINO/hardware/example/variants, вам нужно скопировать каталог mega и переименовать его с именем вашей платы, будет называть его thing для целей примера, вы можете безопасно удалить все другие варианты (как они все еще находятся в arduino варианте каталог!);
  3. Теперь вы можете редактировать $ARDUINO/hardware/example/variants/thing/pins_arduino.h, там номер булавки arduino является индексом каждого массива, а для каждого индекса в каждом массиве определяется параметр ПИН. В конце моего сообщения я вставил соответствующие части этого заголовка.
  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 
}; 
+0

Thanbks! Мне действительно удалось заставить его работать через 2 часа после моего вопроса, но это именно то, что я сделал. Благодаря! –

1

Я сделал это только для проекта. Вы можете вытащить мой GITHUB Mega2560 для варианта, платы и файла pins_arduino.h. Это в основном делает то, что заявлено zmo. Это говорит о том, что для IDE 1.5.0, где 1.5.5 имеет дополнительный каталог для платформы AVR/SAM.

Вы хотите прочитать о 1.0.5 и 1.5.5

На моих новых проектах, которые я использую 1.5.5, где boards.txt поддерживает «uno.build.board = AVR_UNO» тег, который делает компилирует авто идентифицирующих реальные легко.

См. this discussion about 1.5.5 boards.txt например

+0

Спасибо, я на самом деле заставил его работать через 2 часа после моего поста, но спасибо за помощь! –

+0

На самом деле, если вы обратились ко всем контактам, это не «мега», поэтому вы должны дать своему борту другое имя варианта! В противном случае вы можете указать примерно 1.5.5, но в дизайне библиотек есть другие важные изменения (но я становлюсь оффтопиком). Хотя, мы можем подумать о том, чтобы «стандартная» полная распиновка для 2560, чтобы мы могли облегчить разработку будущих проектов. – zmo