Здравствуйте.Решил собрать чпу плата ардуино мега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)
Нет у меня мега а шилд от уно.Мега управляет шилдом по другим пинам которые на большом разъеме платы вот мне их надо переназначить чтоб было как на уно. Я же привел 2 кога один оригинал с пинами по которым управляет мега а второй код я прописал пины как мне нужно но компиляция не проходит.
Проверь ещё раз Назначение stepping, в твоём примере ты три раза его назначаешь на разные порты, что в корне не правильно.
Я в программировании вобще нуб)Дело в том что надо указывать не пины ардуины а именно порты и надо указать название порта и его номер.На уно все пины на одном порте находятся.А на меге порты разведены на плате по другому и надо распределить пины на 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 Но мне надо ещё указать и другие порты
Необходимо другое название например STEPPING1_DDR далее в программе внести изменения. Вышли весь скетч попробуем разобраться
Вот это код из файла 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
Проще будет сделать плату переходник с нужной разводкой или делать на UNO. Исходя из алгоритма присутствует управление на низком уровне, то есть командой сдвига внутри регистра происходит изменение логических уровней на выводах меги, что дает значительный прирост в скорости работы программы, как пример команда PORTA |=B00000001 переведет пин 22 в 1, а команда PORTA |=B00000111 выдаст 1 уже на трех пинах 22; 23; 24. Учитывая, что в данном случае для управления одним двигателем ты будешь использовать не один порт а несколько, программа сильно усложниться.
Тут вы меня убедили что это не так просто)Хотя я когда покупал шилд думал там плёвое дело поменял пины и всё будет работать но не тут то было.Да и наверно не просто так разработчики кода сделали вывод именно на эти порты.Ладно будет всё это дело на проводах их не так уж и много.На крайняк куплю уно. Всем спасибо кто отозвался.