ЧПУ на Ардуино переназначить пины

Тема в разделе "Arduino & Shields", создана пользователем baryga30, 3 сен 2016.

  1. baryga30

    baryga30 Нуб

    Здравствуйте.Решил собрать чпу плата ардуино мега2560 уже была и купил по cnc шилд v3 от уно.И ничего не работает надо переназначить пины в коде что у меня не совсем получается.На меге все пины на 1порте получаются а мне надо распределить пины на 3м порта.Порты я переназначаю а вот что значат строки STEP_MASK DIRECTION_MASK STEPPING_MASK не понимаю мне эти же строки после назначение каждого порта поставить?
    Вот оригинальный код под мегу2560
    #define STEPPING_DDR DDRA
    #define STEPPING_PORT PORTA
    #define X_STEP_BIT 0 // Mega2560 Digital Pin 22
    #define Y_STEP_BIT 2 // Mega2560 Digital Pin 24
    #define Z_STEP_BIT 4 // Mega2560 Digital Pin 26
    #define X_DIRECTION_BIT 1 // Mega2560 Digital Pin 23
    #define Y_DIRECTION_BIT 3 // Mega2560 Digital Pin 25
    #define Z_DIRECTION_BIT 5 // Mega2560 Digital Pin 27
    #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
    #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
    #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) // All stepping-related bits (step/direction)


    А мне надо вот эти пины.
    #define STEPPING_DDR DDRE
    #define STEPPING_PORT PORTE
    #define X_STEP_BIT 4 // Mega1280 Digital Pin 2
    #define X_DIRECTION_BIT 3 // Mega1280 Digital Pin 5
    #define Y_STEP_BIT 5 // Mega1280 Digital Pin 3
    #define STEPPING_DDR DDRH
    #define STEPPING_PORT PORTH
    #define Y_DIRECTION_BIT 3 // Mega1280 Digital Pin 6
    #define Z_DIRECTION_BIT 4 // Mega1280 Digital Pin 7
    #define STEPPING_DDR DDRG
    #define STEPPING_PORT PORTG
    #define Z_STEP_BIT 5 // Mega1280 Digital Pin 4
    #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
    #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
    #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) // All stepping-related bits (step/direction)
     
    Последнее редактирование: 3 сен 2016
  2. MDV

    MDV Гик

    Не совсем понятна задача. Ты хочешь заменить мегу на уно?
     
  3. baryga30

    baryga30 Нуб

    Нет у меня мега а шилд от уно.Мега управляет шилдом по другим пинам которые на большом разъеме платы вот мне их надо переназначить чтоб было как на уно.
    Я же привел 2 кога один оригинал с пинами по которым управляет мега а второй код я прописал пины как мне нужно но компиляция не проходит.
     
  4. MDV

    MDV Гик

    Проверь ещё раз Назначение stepping, в твоём примере ты три раза его назначаешь на разные порты, что в корне не правильно.
     
  5. baryga30

    baryga30 Нуб

    Я в программировании вобще нуб)Дело в том что надо указывать не пины ардуины а именно порты и надо указать название порта и его номер.На уно все пины на одном порте находятся.А на меге порты разведены на плате по другому и надо распределить пины на 3 порта.Я не понимаю как это сделать(
    Вот в этих строках название порта в конце буква E
    #define STEPPING_DDR DDRE
    #define STEPPING_PORT PORTE
    А тут уже назначаю какие номера выводов этого порта буду использоватся
    #define X_STEP_BIT 4 // Mega1280 Digital Pin 2
    #define X_DIRECTION_BIT 3 // Mega1280 Digital Pin 5
    #define Y_STEP_BIT 5 // Mega1280 Digital Pin 3
    Но мне надо ещё указать и другие порты
     

    Вложения:

    • Уно.jpg
      Уно.jpg
      Размер файла:
      44,9 КБ
      Просмотров:
      622
    • Мега.jpg
      Мега.jpg
      Размер файла:
      165,3 КБ
      Просмотров:
      675
    Последнее редактирование: 4 сен 2016
  6. MDV

    MDV Гик

    Необходимо другое название например STEPPING1_DDR далее в программе внести изменения. Вышли весь скетч попробуем разобраться
     
  7. baryga30

    baryga30 Нуб

    Вот это код из файла config где я пытаюсь что то поменять.А так там целая библиотека её не надо?
    Код (C++):

    #ifndef config_h
    #define config_h
    // IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them.
    // Default settings. Used when resetting EEPROM. Change to desired name in defaults.h
    #define DEFAULTS_GENERIC
    // Serial baud rate
    #define BAUD_RATE 9600
    // Define pin-assignments
    // NOTE: All step bit and direction pins must be on the same port.
    #define STEPPING_DDR       DDRA
    #define STEPPING_PORT      PORTA
    #define X_STEP_BIT         0  // Mega1280 Digital Pin 22
    #define Y_STEP_BIT         2  // Mega1280 Digital Pin 24
    #define Z_STEP_BIT         4  // Mega1280 Digital Pin 26
    #define X_DIRECTION_BIT    1  // Mega1280 Digital Pin 23
    #define Y_DIRECTION_BIT    3  // Mega1280 Digital Pin 25
    #define Z_DIRECTION_BIT    5  // Mega1280 Digital Pin 27
    #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
    #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
    #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) // All stepping-related bits (step/direction)
    #define STEPPERS_DISABLE_DDR    DDRC
    #define STEPPERS_DISABLE_PORT   PORTC
    #define STEPPERS_DISABLE_BIT    7  // Mega1280 Digital Pin 30
    #define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)
    // NOTE: All limit bit pins must be on the same port
    #define LIMIT_DDR       DDRC
    #define LIMIT_PIN       PINC
    #define LIMIT_PORT      PORTC
    #define X_LIMIT_BIT     6  // Mega1280 Digital Pin 31
    #define Y_LIMIT_BIT     5  // Mega1280 Digital Pin 32
    #define Z_LIMIT_BIT     4  // Mega1280 Digital Pin 33
    #define LIMIT_INT       PCIE0  // Pin change interrupt enable pin
    #define LIMIT_INT_vect  PCINT0_vect
    #define LIMIT_PCMSK     PCMSK0 // Pin change interrupt register
    #define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // All limit bits
    #define SPINDLE_ENABLE_DDR   DDRC
    #define SPINDLE_ENABLE_PORT  PORTC
    #define SPINDLE_ENABLE_BIT   2  // Mega1280 Digital Pin 35
    #define SPINDLE_DIRECTION_DDR   DDRC
    #define SPINDLE_DIRECTION_PORT  PORTC
    #define SPINDLE_DIRECTION_BIT   1  // Mega1280 Digital Pin 36
    #define COOLANT_FLOOD_DDR   DDRC
    #define COOLANT_FLOOD_PORT  PORTC
    #define COOLANT_FLOOD_BIT   0  // Mega1280 Digital Pin 37
    //
    #define ENABLE_M7  // Mist coolant disabled by default. Uncomment to enable.
    #ifdef ENABLE_M7
    #define COOLANT_MIST_DDR   DDRC
    #define COOLANT_MIST_PORT  PORTC
    #define COOLANT_MIST_BIT   3 // Mega1280 Digital Pin 34
    #endif
    // NOTE: All pinouts pins must be on the same port
    #define PINOUT_DDR       DDRF
    #define PINOUT_PIN       PINF
    #define PINOUT_PORT      PORTF
    #define PIN_RESET        0  // Mega1280 Analog Pin 0

    #define PIN_FEED_HOLD    1  // Mega1280 Analog Pin 1
    #define PIN_CYCLE_START  2  // Mega1280 Analog Pin 2
    #define PINOUT_INT       PCIE1  // Pin change interrupt enable pin
    #define PINOUT_INT_vect  PCINT1_vect
    #define PINOUT_PCMSK     PCMSK1
     
  8. MDV

    MDV Гик

    Проще будет сделать плату переходник с нужной разводкой или делать на UNO.
    Исходя из алгоритма присутствует управление на низком уровне, то есть командой сдвига внутри регистра происходит изменение логических уровней на выводах меги, что дает значительный прирост в скорости работы программы, как пример команда PORTA |=B00000001 переведет пин 22 в 1, а команда PORTA |=B00000111 выдаст 1 уже на трех пинах 22; 23; 24. Учитывая, что в данном случае для управления одним двигателем ты будешь использовать не один порт а несколько, программа сильно усложниться.
     
    baryga30 нравится это.
  9. baryga30

    baryga30 Нуб

    Тут вы меня убедили что это не так просто)Хотя я когда покупал шилд думал там плёвое дело поменял пины и всё будет работать но не тут то было.Да и наверно не просто так разработчики кода сделали вывод именно на эти порты.Ладно будет всё это дело на проводах их не так уж и много.На крайняк куплю уно. Всем спасибо кто отозвался.