[uquote="jcxz",url="/forum/viewtopic.php?p=4706961#p4706961"]А на Pico для этого видимо нужно 8 команд? И ни о какой одновременности речи не может идти?[/uquote]
Нет, для отдельных пинов одни команды, для портов целиком - другие. У Pico2 максимум 48 GPIO, сопроцессору можно передать в качестве аргументов команды две 32-х битных маски и затоглить любые из этих пинов одновременно, т.к. интерфейс сопроцессора 64-х битный. И сопроцессор - это дополнительная фича, у первого Pico его не было, у второго он работает только с M33, а там еще RISC-V есть, потому обычные регистры GPIO позволяющие выполнять атомарные операции тоже есть.
jcxz писал(а):Насчёт выполнения сопроцессором (не знаю что это такое) - манипуляции с пинами на XMC4xxx можно выполнить вообще без процессора. Поручив DMA и таймеру пересылку потока инвертирующих констант в регистр правления GPIO. И не отвлекая основной поток программы от более важных дел. Возможно ли такое на Pico с его сопроцессором?
Когда в стартапе пишут что-то типа:
Код: Выделить всё
SCB->CPACR |= (3 << 20) | (3 << 22); // set CP10 and CP11 Full Access
то включают сопроцессор для FPU, а у M33+(начиная с какой-то ревизии) появились вендор специфик кастомные инструкции, т.е. возможность добавлять свои сопроцессоры.
У Pico часть периферии висит на Single-cycle IO, в том числе порты, потому тут как с M0+/M23, где DMA не работает с портами. С сопроцессором DMA тоже не работает, но зато есть 12 PIO( programmable input/output block) которые специализированны для работы с портами, т.е. DMA гонит данные в PIO, 32 бита за такт!, и там можно одной командой за 1 такт вывести до 32-х бит в порт начиная с указанного пина, параллельно дергая еще до 5-ти других пинов. И у самомого PIO есть 16.8 делитель частоты, так что даже без дополнительного таймера можно скорость вывода настроить и в отличие от DMA c таймером не будет никакого джиттера.
Добавлено after 19 minutes 41 second:
[uquote="a5021",url="/forum/viewtopic.php?p=4706963#p4706963"]по неведомой мне причине заголовочник stm32f303xc.h утверждает, что битбендинг есть, а на самом деле его нет.[/uquote]
Да есть он там, но по описанной ранее причине не работает с портами и ADC, c остальной периферией должно работать.