Задержать менее 1 мкс ?

Акронис
Пн, 6 ноября 2017 г. 12:14
Привет .
Как сделать задержку (пауза) менее 1 мкс ?
Например, 10 наносекунд ?

Пито
Пн, 6 ноября 2017 г. 12:24
Вы не можете сделать это в SW, afaik. Попробуйте его в HW - например, один 74HC -ворота (или инвертор) производит ~ 10NS на 3.3В..

Акронис
Пн, 6 ноября 2017 г. 12:38
Я понял тебя.
И если у меня есть 1 наносекунда ?

Эдогальдо
Пн, 6 ноября 2017 г. 12:49
Запуск @72 МГц ваш период часов составляет чуть менее 14 нс (при условии, что F103 MCU), поэтому я бы сказал, что 14NS - это минимальное разрешение, которое вы могли бы достичь.
Чтобы отложить один тактовой цикл по коду, который вы можете использовать: volatile int f1;

Акронис
Пн, 6 ноября 2017 г. 12:53
Большой !
Спасибо, я постараюсь F407Vet6 Black.
Я отписываю подписку на результаты

Пито
Пн, 6 ноября 2017 г. 13:03
И если у меня есть 1 наносекунда ? Вы можете получить 1NS или меньше с:
1. FPGA (у некоторых есть XXX Picoseconds Fine-Tunig с задержками)
2. Линии задержки - т.е. линии передачи, кабель коаксиаса
3. Есть серия STM32 (3x4), которая получила: Таймер с высоким разрешением: 217 л.с., самокомпенсированные по сравнению с источником питания и дрейф температуры.

Акронис
Вторник 07 ноября 2017 г. 14:00
Сегодня я попробовал
ASM volatile ("nop");

код:

петля ()
{
DigitalWrite (PA5, Low);
ASM volatile ("nop");
DigitalWrite (PA5, High);
}

Осциллограф показал неудачу в 200NS на борту STM32F407.


Как вы получили 14NS на STM32F103 ?

Акронис
Вторник 07 ноября 2017 г. 14:06
Вы прокомментировали "Nop"

петля ()
{
DigitalWrite (PA5, Low);
// asm volatile ("nop");
DigitalWrite (PA5, High);
}

время остается прежним - 200 нс в состоянии переключения на сосне ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ном

Zoomx
Вторник 07 ноября 2017 г. 16:10
Этот пост!
наносекунд задержка
http: // stm32duino.com/viewtopic.PHP?f = 3&T = 2080#P27850

Эдогальдо
Вторник 07 ноября 2017 г. 16:19
Конечно, это цифровой и цифровой накладной..
14NS - это продолжительность одиночного ASM (NOP) (на F407 это 1US/168 = 6NS), что гораздо мало уважает продолжительность всех других вещей..

Рик Кимбалл
Вторник 07 ноября 2017 г. 16:34
Вы должны искать в фрагментах кода для поста, который я сделал об использовании периферийного устройства DWT для подсчета цикла

Рик Кимбалл
Вторник 07 ноября 2017 г. 11:34
Я использовал код Пито, чтобы создать переключатель 100 кГц с помощью таймера DWT. Конечно, вы не сможете создать импульс 10NSEC, так как количество циклов в 72 МГц составляет 13.888 NSEC, однако вы можете сделать точные импульсы использования, используя периферийные устройства DWT.

CMOS ---> 360ohm -----> BPill interrupt input

Эдогальдо
Ср. 8 ноября 2017 г. 11:14
[Акронис - Вторник 07 ноября 2017 г. 14:06] - Вы прокомментировали "Nop"

петля ()
{
DigitalWrite (PA5, Low);
// asm volatile ("nop");
DigitalWrite (PA5, High);
}

время остается прежним - 200 нс в состоянии переключения на сосне ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ном
Если вы хотите достичь скорости уровня часов, вам нужно пойти с сборкой..
Здесь образец эскиза ASM для переключения PA5 на F407: #define SS BOARD_SPI1_NSS_PIN #define MOSI BOARD_SPI1_MOSI_PIN #define MISO BOARD_SPI1_MISO_PIN #define SCK BOARD_SPI1_SCK_PIN

Акронис
Ср. 8 ноября 2017 г. 12:17
Вы очень много.
Я постараюсь сделать это

Эдогальдо
Ср. 8 ноября 2017 г. 13:18
[Акронис - Ср. 8 ноября 2017 г. 12:17] - Вы очень много.
Я постараюсь сделать это
Извините, я допустил ошибку с установкой BSRR..
Здесь коррекция в любом случае я не могу проверить его на F407, поэтому я не могу гарантировать, что больше нет ошибок: static const uint8_t SS = BOARD_SPI1_NSS_PIN; static const uint8_t SS1 = BOARD_SPI2_NSS_PIN; static const uint8_t MOSI = BOARD_SPI1_MOSI_PIN; static const uint8_t MISO = BOARD_SPI1_MISO_PIN; static const uint8_t SCK = BOARD_SPI1_SCK_PIN;