mantech 35 25 января, 2021 Опубликовано 25 января, 2021 (изменено) · Жалоба 24.01.2021 в 15:01, nanorobot сказал: Эта область памяти чем то уникальна? В V3S тоже есть аналогичная? Доступные даташиты для v3s и h4 слова coherent не знают.. Тут скорее всего касается кэширования, т.к. ДМА работает только с некэшируемой памятью, ну и кратность 32м битам задавать не забывайте, если работаете с кэшируемым регионом, не забывайте сбрасывать кэш. Мне больше нравится использовать буферируемые регионы, да, ускоряется только запись, но за-то не надо сбрасывать кэш... Изменено 25 января, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 26 января, 2021 Опубликовано 26 января, 2021 (изменено) · Жалоба Очередная сложность. Допилил штатный драйвер UART RT-Thread для работы с прерываниями/дма- изначально такой возможности в нем нет, хотя и предусматривалась (возможность использования флага RT_DEVICE_FLAG_DMA_TX при открытии). Так вот получить прерывание по ПОЛНОМУ ОКОНЧАНИЮ передачи (мне необходимо управлять переключением драйвера RS485) не получается никаким образом. Прерывание происходит по опустошению регистра хранения передаваемого символа, а не сдвигового регистра передачи. То есть последний символ еще передается, а прерывание по окончании передачи уже случилось. Что то здесь китайские товарищи не доработали.. Можно конечно и таймер запустить на передачу последнего символа, но это уже какой то некрасивый костыль. У уважаемых гуру эта проблема решена? PS. Предположил, что в этом вопросе может помочь 7 бит из регистра UART_IER описанный как "Programmable THRE Interrupt Mode Enable" - но тоже нет. Назначение данного бита как то совсем неясно. Изменено 26 января, 2021 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 26 января, 2021 Опубликовано 26 января, 2021 · Жалоба 3 hours ago, nanorobot said: Что то здесь китайские товарищи не доработали.. Можно конечно и таймер запустить на передачу последнего символа, но это уже какой то некрасивый костыль. Китайские товарищи ни при чем, это особенность "классического" 16550. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 26 января, 2021 Опубликовано 26 января, 2021 (изменено) · Жалоба 19 minutes ago, aaarrr said: Китайские товарищи ни при чем, это особенность "классического" 16550. Похоже не совсем 16550. У того 7 бита в IER не было.. .. то есть для RS 485 только таймер. Изменено 26 января, 2021 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 26 января, 2021 Опубликовано 26 января, 2021 · Жалоба 1 час назад, nanorobot сказал: Похоже не совсем 16550. У того 7 бита в IER не было.. .. то есть для RS 485 только таймер. Обычно в 485-м есть возможность приема своих данных, поэтому можно по приему своего последнего символа переключать драйвер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 26 января, 2021 Опубликовано 26 января, 2021 · Жалоба 1 час назад, nanorobot сказал: Похоже не совсем 16550. У того 7 бита в IER не было.. Не совсем... Недавно нужно было работать с битом четности, так его там тоже не было, хотя в оригинальном 16550 он есть, это нужно иметь ввиду, т.к. совместимый не означает такой же точно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 26 января, 2021 Опубликовано 26 января, 2021 · Жалоба 19 minutes ago, Edit2007 said: Обычно в 485-м есть возможность приема своих данных, поэтому можно по приему своего последнего символа переключать драйвер. Мысль интересная. Единственое "но" в том что слегка нарушается идеология rt-thread в плане использования rt_device. Хотя вероятно этим можно пренебречь. Возможно там и все драйвера не лучше уартовского. использовать только шедулер, сервисы ядра... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 30 января, 2021 Опубликовано 30 января, 2021 · Жалоба Предыдущий вопрос решил использованием таймера. UART + RS485 в режиме DMA работает. Следующий пункт I2C. При наличии в V3S аппаратных итерфейсов TWI (I2C) драйвера I2C для RT-Thread @V3S реализованы ногодрыгом и запустить их пока не удалось. Решил писать свой, используя аппаратный TWI. Роюсь в тех же исходниках - rpidmx512 и XBOOT. Ни в одном из них не обнаружил использования регистров I2C_ADDR и I2C_XADDR - они вообще зачем то нужны? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 30 января, 2021 Опубликовано 30 января, 2021 · Жалоба А как думаете, адрес ведомого зачем-то нужен? А длиннее байта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 30 января, 2021 Опубликовано 30 января, 2021 (изменено) · Жалоба 6 minutes ago, Obam said: А как думаете, адрес ведомого зачем-то нужен? А длиннее байта? Да я уже понял что бред написал. Чисто глядя исходники инициализации мастера. Про режим слейва мысль в голову не зашла. Ну уж удалять не стал. А I2C аппаратный запустил. Пять минут назад, буквально. Изменено 30 января, 2021 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 31 января, 2021 Опубликовано 31 января, 2021 (изменено) · Жалоба 20 часов назад, nanorobot сказал: @V3S реализованы ногодрыгом и запустить их пока не удалось. Решил писать свой, используя аппаратный TWI. Смотрю, вы не ищите легких путей))) Мастера всегда ногодрыгом делал, ибо раз напоролся на необъятную еррату в СТМ - ну его нафиг, преимущества от аппаратного мастера не вижу совсем, а ногодрыг портируется за полчаса, да и пины можно выбрать любые, что тоже бывает важно... Изменено 31 января, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 31 января, 2021 Опубликовано 31 января, 2021 · Жалоба 4 hours ago, mantech said: Смотрю, вы не ищите легких путей))) Мастера всегда ногодрыгом делал, ибо раз напоролся на необъятную еррату в СТМ - ну его нафиг, преимущества от аппаратного мастера не вижу совсем, а ногодрыг портируется за полчаса, да и пины можно выбрать любые, что тоже бывает важно... Ну не знаю... На v3s аппаратный TWI запустил за один день, при условии что с камешком раньше дела не имел, не показалось что долго. Из преимуществ - возможность сделать всю работу по прерываниям.. Ну вот есть у меня такой фетиш - реалтайм... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 35 31 января, 2021 Опубликовано 31 января, 2021 (изменено) · Жалоба 16 минут назад, nanorobot сказал: На v3s аппаратный TWI запустил за один день, Так я на СТМ его вообще за пол-дня запустил, а потом начали выплывать косяки, то не отработает, то зависнет или пропадет связь... 16 минут назад, nanorobot сказал: Из преимуществ - возможность сделать всю работу по прерываниям.. Ну вот есть у меня такой фетиш - реалтайм... Я понимаю, уарт по прерываниям или считывание портов, ну даже СПИ, на высокой скорости, а тут какой смысл этим полностью контроллируемым и синхронным интерфейсом, да еще и относительно медленным с кучей пром. состояний, загружать прерывания?? Сомнительно это как по мне... У меня в прогах этот и2с в самом низком приоритете работает, и вполне справляется (конечно никогда не использую его извращенным образом, например для дисплеев или других устройств, требующих большой скорости или объемов данных), так мелкие еепромки, тачпанели или конфигурация АЦП\ЦАП и подобных... Изменено 31 января, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 1 февраля, 2021 Опубликовано 1 февраля, 2021 (изменено) · Жалоба Чисто глядя исходники инициализации мастера. Про режим слейва мысль в голову не зашла. А разве ведущему не надо хранить адрес ведомого? Как автомат сформирует цепочу в танзакции? Изменено 1 февраля, 2021 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 1 февраля, 2021 Опубликовано 1 февраля, 2021 (изменено) · Жалоба Не понял. Зачем ведущему хранить адрес ведомого где то, кроме памяти. По крайней мере в случае использования аппаратного TWI, как мастера, регистры I2C_ADDR и I2C_XADDR не используются. Поясните Вашу мысль? Изменено 1 февраля, 2021 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться