Создал блок пользователя в коде. Создал параметр пользователя fPWM, тип int.
При вставке этого параметра в нужное место кода, он вставляется с пробелом перед и после наименования параметра. Вот так: AF_DCMotor motor1(1, MOTOR12_ fPWM KHZ). В этом случае при компиляции параметр fPWM корректно заменяется числом, которое выставлено пользователем, однако остаются пробелы до и после числа и данная запись становиться некорректной для компилятора ide. Так как должна быть строка вида: AF_DCMotor motor1(1, MOTOR12_64KHZ) (64 приведено для примера).
Если вручную убрать пробелы после вставки fPWM в код, то компилятор FLProg не заменяет этот параметр на число заданное пользователем. И передает эту строку в ide в таком виде: AF_DCMotor motor1(1, MOTOR12_fPWMKHZ)
			
			
									
						Блок пользователя CODE
- 
				starshoy81
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок пользователя CODE
starshoy81, покажите блок, будем разбираться
Судя по библиотеке функция AF_DCMotor(uint8_t num, uint8_t freq) принимает байтовые значения, и для AVR-контроллеров выставляет делитель таймера TCCR2B
Попробуйте AF_DCMotor motor1(1, X) , где X=1 до 7 типа Byte.
Таблица соответствия X и MOTOR12_xxKHZ
			
			
													Судя по библиотеке функция AF_DCMotor(uint8_t num, uint8_t freq) принимает байтовые значения, и для AVR-контроллеров выставляет делитель таймера TCCR2B
Код: Выделить всё
#define MICROSTEPS 16                       // 8 or 16
#define MOTOR12_64KHZ _BV(CS20)             // no prescale
#define MOTOR12_8KHZ _BV(CS21)              // divide by 8
#define MOTOR12_2KHZ _BV(CS21) | _BV(CS20)  // divide by 32
#define MOTOR12_1KHZ _BV(CS22)              // divide by 64
#define MOTOR34_64KHZ _BV(CS00)             // no prescale
#define MOTOR34_8KHZ _BV(CS01)              // divide by 8
#define MOTOR34_1KHZ _BV(CS01) | _BV(CS00)  // divide by 64
#define DC_MOTOR_PWM_RATE   MOTOR34_8KHZ    // PWM rate for DC motors
#define STEPPER1_PWM_RATE   MOTOR12_64KHZ   // PWM rate for stepper 1
#define STEPPER2_PWM_RATE   MOTOR34_64KHZ   // PWM rate for stepper 2Таблица соответствия X и MOTOR12_xxKHZ
- 001 - CLK - MOTOR12_64KHZ
- 010 - CLK/8 - MOTOR12_8KHZ
- 011 - CLK/32 - MOTOR12_2KHZ
- 100 - CLK/64 - MOTOR12_1KHZ
- 101 - CLK/128 - MOTOR12_500HZ (низкие значения в библиотеке не предусмотрены, мотор наверное гудит)
- 110 - CLK/256 - MOTOR12_250HZ
- 111 - CLK/1024 - MOTOR12_125HZ
Код: Выделить всё
byte freq=1; // в других случаях частота 64кГц
If (fPWM==8) {freq=2;} // частота 8кГц
If (fPWM==2) {freq=3;} // частота 2кГц
If (fPWM==1) {freq=4;} // частота 1кГц
......
......
AF_DCMotor motor1(1, freq);
					Последний раз редактировалось Boroda 06 фев 2017, 21:57, всего редактировалось 1 раз.
									
			
						Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя
