В этом случае тоже не надо морочится с битовыми операциями. Прога ж на С пишется - вот пусть он этим и занимается, а вы просто создайте нужный тип данных с помощью структур и объединений.Сергей Саныч писал(а):Чтобы, скажем, один пиксел черно-белой картинки занимал один бит, а не, скажем, целый байт.
Умножитель частоты шагов на STM32
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- raddd
- Почётный участник
- Сообщения: 1564
- Зарегистрирован: 10 фев 2015, 08:50
- Репутация: 539
- Настоящее имя: Alexey Rodionov
- Откуда: Беларусь Минский р-н
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Удвоитель без МК. Еще из детства помню.
http://irls.narod.ru/it/uchi.htm
http://irls.narod.ru/it/uchi.htm
||||||||||||
||||||||||||
||||||||||||
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Такой удвоитель не годится - равномерность следования импульсов будет зависить от длительности входных импульсов, а она как правило постоянная по всём диапазоне частот. На выходе будут пары импульсов с постоянной длительнотью пауз между ними и разной длительностью пауз между группами в зависимости от частоты.
Чтобы такая схема работала правильно ей на вход нужно всегда подавать строго меандр, а гарантированно его получить можно только поделив входную частоту на 2...
Чтобы такая схема работала правильно ей на вход нужно всегда подавать строго меандр, а гарантированно его получить можно только поделив входную частоту на 2...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
У STM32 имеется технология Bit Banding, которая резко упрощает и ускоряет работу с битовыми данными.UAVpilot писал(а):В этом случае тоже не надо морочится с битовыми операциями.
Чудес не бывает. Бывают фокусы.
- raddd
- Почётный участник
- Сообщения: 1564
- Зарегистрирован: 10 фев 2015, 08:50
- Репутация: 539
- Настоящее имя: Alexey Rodionov
- Откуда: Беларусь Минский р-н
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Если не меандр выходит то да... негодится...
||||||||||||
||||||||||||
||||||||||||
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Но зачем делать лишние телодвижения, если можно просто и естественно работать с обычными переменными?Сергей Саныч писал(а):У STM32 имеется технология Bit Banding, которая резко упрощает и ускоряет работу с битовыми данными.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Если компилятор сам сообразит, что надо использовать возможность прямого доступа к битам без всяких AND и OR, то да.UAVpilot писал(а):Но зачем делать лишние телодвижения, если можно просто и естественно работать с обычными переменными?
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Я очень сильно подозреваю, что компилятор С для stm32 просто воспользуется этим самым BitBanding'ом.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Тогда, скорее всего, у него для этого должен быть предопределенный тип данных.UAVpilot писал(а):Я очень сильно подозреваю, что компилятор С для stm32 просто воспользуется этим самым BitBanding'ом.
Чудес не бывает. Бывают фокусы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
В С он есть с момента создания - bit field.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Опытный
- Сообщения: 127
- Зарегистрирован: 20 ноя 2014, 19:18
- Репутация: 13
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
На скриншоте с протеусом не та скважность выходных импульсов, которые нужны для шаговика.
Вам нужно пачку импульсов на выходе, распределить равномерно между фронтами входных импульсов.
Вам нужно пачку импульсов на выходе, распределить равномерно между фронтами входных импульсов.
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Вроде-бы нет...UAVpilot писал(а):А эта память может отображаться в общее адресное пространство МК, чтоб её можно было использовать под переменные? В доках не нашёл ничего про это...selenur писал(а):Я в некоторых проектах использую вот такую http://www.st.com/en/evaluation-tools/3 ... overy.html в ней есть внешняя память на 64 мбит, работать с памятью легко, скорость огромная....
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Запросто.А иначе зачем она нужна.Укажите явный адрес переменной.selenur писал(а):Вроде-бы нет..
- selenur
- Почётный участник
- Сообщения: 4604
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1621
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Это как?sidor094 писал(а):Запросто.А иначе зачем она нужна.Укажите явный адрес переменной.selenur писал(а):Вроде-бы нет..
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
как пример использую для памяти экрана
unsigned long * screen_buf=(unsigned long *)(SDRAM_BASE_ADDR+SDRAM_SIZE-640*480);//BUFFER_ADDR;BUFFER_ADDR;;
Также посмотрите как задаются все регистры в системных файлах.
unsigned long * screen_buf=(unsigned long *)(SDRAM_BASE_ADDR+SDRAM_SIZE-640*480);//BUFFER_ADDR;BUFFER_ADDR;;
Также посмотрите как задаются все регистры в системных файлах.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Это если она таки отображается. А может быть и доступ в виде "на порту PA выставили адрес, в порт PB записали данные".
Чтобы узнать точно нужен файлик .ld (или как там в других IDE), где описана карта памяти.
Чтобы узнать точно нужен файлик .ld (или как там в других IDE), где описана карта памяти.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Во всех микросхемах где есть поддержка внешнего озу оно находится в адресном пространстве процессора.Можно конечно подключить озу через порты ввода вывода но это сейчас уже извращение и используется только в крайних случаях.Раньше многие микроконтроллеры не имели возможности подключить внешнее озу или имели крайне ограниченное адресное пространство .Тогда это имело смысл.Сейчас во всех линейках кортекса существуют микросхемы с внешним озу.Так что проще при необходимости использовать их.А адресное пространство у кортекса 4гига.
- MX_Master
- Мастер
- Сообщения: 7475
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Подсчета периода там пока нет. На счет распределения между фронтами - логично, но тут вопрос - как быть с последним шагом во входной пачке? Зарисуем пример с ускорением и умножением на 2 ..Олег. писал(а):На скриншоте с протеусом не та скважность выходных импульсов, которые нужны для шаговика.
Вам нужно пачку импульсов на выходе, распределить равномерно между фронтами входных импульсов.
Код: Выделить всё
INPUT ____|""|__________|""|________|""|________________
TIME | T1 | T2 | T3 |
OUTPUT ____|"|____|"|____|"|___|"|___|"|__|"|_____________
-
- Мастер
- Сообщения: 442
- Зарегистрирован: 22 авг 2016, 12:21
- Репутация: 44
- Настоящее имя: Андрей
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
Так на картинке все вторые импульсы выдаются до прихода следующего шага.
Т.е.
Т1 - выдаётся два импульса до того, как получен Т2 и мы знаем, сколько времени между Т1 и Т2.
В данном примере проблема не в Т3, а вообще, некорректный он.
Т.е.
Т1 - выдаётся два импульса до того, как получен Т2 и мы знаем, сколько времени между Т1 и Т2.
В данном примере проблема не в Т3, а вообще, некорректный он.
- Mamont
- Мастер
- Сообщения: 1966
- Зарегистрирован: 10 дек 2015, 12:21
- Репутация: 383
- Настоящее имя: Виталий
- Откуда: РБ Минск
- Контактная информация:
Re: Умножитель STEP/DIR на Arduino
С предыдущего импульса отсчитывается период, делится надвое. После прихода нового импульса, он выдается, а через половинку предыдущего импульса выдается промежуточный.MX_Master писал(а): Если период T1 и T2 можно засечь по времени, то как быть с Т3 ? Следующего фронта на входе нет для замера, а умножить и вывести третий шаг надо.
Т.е. задача для первого импульса
Надо сделать автоопределение длительности первого импульса, определяется прогой, ее стартовой скоростью и ускорением. После включения питания (или длительного простоя без импульсов) длительность между первым и вторым делится надвое и принимается за базовую. Если она меньше чем находится в памяти, она корректируется. Больше - игнорируется
В работе, после первого импульса, который был после длительного простоя, выдается через базовое время этот импульс