Уважаемые знатоки!
Подскажите пожалуйста каким образом использовать максимальную частоту тактирования контроллера rp2040-zero в случае применения этой платы как преобразователя напряжения (0 - 5 Вольт) в двоичный код шины i2c в режиме SLAVE. Это нужно для обмена по шине i2c с платой контроллера моноколесо. Скорость по шине в моноколесе около 1,5Mbps, контроллер (MASTER) предположительно STM32, маркировка с него удалена, как и с гироскопа (MPU6050) который хотелось бы подменить контроллером rp2040-zero.
Заранее спасибо за возможные подсказки.
С уважением Андрей Назаренко
Потрясающий текст.
ТС! Тебе нужно в политику идти, точно нужно. Произнести набор слов так, что смысл невозможно определить вообще - это талант! Не зарывай его в землю, не нужна тебе та адруина, брось её.
Смысл как раз понятен (знатокам, т. е. знающим людям). Я в политике уже давно и она мне прилично надоела. А если мыслей по существу нет то и комментировать (нести пургу) с точки зрения «политика» не вижу смысла.
Одно положительное событие - хоть кто-то прочитал.
я так и понял
Уже неплохо.
Если ты пришел не для того, чтобы развлекать публику, то ты бы переписал бессмысленный текст. Может со второго раза получится?
К слову RP2040 по вычислительным возможностям несколько превосходит IBM PC XT 90-х годов ;).
Так что не старайся выглядеть умнее, а простым языком напиши свои вопросы. Что строишь и что непонятно. И за каким хреном тебе нужно использовать МК, на котором можно ИИ модели запускать, для пока непонятной, но явно несложной технической цели?
Как политик политику. Такую хрень на совещании нести можно. Но.
Если бы я, как политик, спрашивал совета, выражался бы проще. Ибо на высказывания политика
посмотрели бы с неким предубеждением.
Хорошо, теперь подробнее. Нужно заменить данные гироскопа в моноколесе микроконтроллером который будет оцифровывать аналоговое напряжение с датчика Холла (обычная педаль). И нужно это для того чтобы использовать моноколесо не по назначению а для привода неких внешних устройств с возможностью менять скорость и направление вращения. К примеру гончарный круг, садовая тачка с «электропомошником» и т. д. Трудность (для мне во всяком случае) представляет то обстоятельство что штатный контроллер моноколеса программирует и опрашивает гироскоп со скоростью, примерно 1,5Mbps и ни ардуино нано, ни rp2040-zero не успевают сформировать ACK и следовательно хоть что-то вразумительное ответить штатному контроллеру.
Была попытка оценить скорострельность платы rp2040-zero прошитой с помощью Ардуино IDE.
Скетч был преобразован из известного примера типа Blink. Задержки в loop были закомментированы и при этом время включённого (0) состояния вывода со светодиодом составило 1,2 мкс, а выключенного (1) - около 1мкс. Разница видимо из-за того что в цикле надо вернуться в начало и эта процедура занимает какое-то количество времени (тактов). Если данное описание проблемы достойно ответа - буду благодарен за подсказку, ну или версии.
седня какойто день откровений, в соседней теме чел утверждает, что 16МГц мало для управления шаговым двигателем.
Честное слово, как политик политику, про аналоговый д. Холла до сегодня не слышал. Но это такое, сам дурак.
Вы не с той стороны заходите. Либо используйте штатное управление, либо пишите свое. Потому как попытка в реверсинжениинг долго, муторно, и зачастую безрезультатно.
- зачем ты пишешь слова, значения которых не понимаешь?
- Есть много решений по управлению мотором моноколеса. Тут на этом форуме тоже. Это не делают через симуляцию MPU6050. Трудоемкость такой симуляции на порядок выше задачи по управлению BLDC мотором.
Ты…это…
Серьезно ?
Да.
Добиваю до пяти символов.
И тем не менее при соединении ардуино нано с rp2040-zero (прошитых конечно) по i2c с применением двух потенциометров и двух светодиодов обмен между ними происходит нормально со скоростью 100 Mbps, а также при подключении платы MPU6050 - та же картина, то бишь всё работает как надо, вот только на низкой скорости по шине i2c. Так вот хотелось бы понять частота контроллера rp2040 до 133 МГц это что - прикол, или же я просто не знаю как её установить? Ну если не 133, то хотя бы не 8МГц. Кстати по описанию MPU6050 должен работать на частотах до 400кГц, но реально подключённый к плате управления моноколесом вместо штатного (обрезаны дорожки) он также уверенно прогаммируется при запуске и в дальнейшем отвечает контроллеру данными с акселеромера Х, другие данные контроллер не запрашивает.
Так что замечание про день откровений прямо в цвет.
А что касается готовых решений - видел и повторил управление гироскутером от ручки путём перепрошивки контроллера, а вот про моноколесо не нашёл.
К тому же задача не очень сложная, если знаешь что нужно контроллеру от гироскопа, подменить сигналы фактически управления не представляет особого труда, если бы не ограничения по скорости обмена. Заставить контроллер моноколеса опрашивать « ложный гироскоп» медленнее я не могу, а ждать ответа на шине он собака не хочет.
Если у кого нибудь есть идеи - подскажите пожалуйста, а на критику я не обижаюсь, статус не позволяет.
И отдельно для KOLYN:
Активный элемент датчика Холла подключённый к операционному усилителю - это и есть аналоговый датчик Холла ( если трудности перевода - датчик Холла с аналоговым выходом). Используется во всех электронных педалях и ручках «газа». А вот активный элемент датчика Холла подключённый к компаратору это как раз тот самый датчик что практически во всех (датчиковых) моторколёсах и прочих BLDC.
Это в порядке просвещения.
дядя, остановись, ты сам себя закапываешь.
Спасибо.
если посмотреть хидер I2C то частоту можно установить, в каких пределах не знаю
#pragma once
#include <inttypes.h>
#include "Stream.h"
namespace arduino {
class HardwareI2C : public Stream
{
public:
virtual void begin() = 0;
virtual void begin(uint8_t address) = 0;
virtual void end() = 0;
virtual void setClock(uint32_t freq) = 0;
virtual void beginTransmission(uint8_t address) = 0;
virtual uint8_t endTransmission(bool stopBit) = 0;
virtual uint8_t endTransmission(void) = 0;
virtual size_t requestFrom(uint8_t address, size_t len, bool stopBit) = 0;
virtual size_t requestFrom(uint8_t address, size_t len) = 0;
virtual void onReceive(void(*)(int)) = 0;
virtual void onRequest(void(*)(void)) = 0;
};
Вот спасибо, есть о чём подумать и в каком направлении копать.
Штатно только два варианта -100кгц и 400. Остальное на свой риск.
Откуда там ТС 100 Mbps нашел - понять невозможно, это лютый бред.
Хотя возможно, что он просто не понимает разницы между кГц и Мгц