Как получить на Uno импульс длительностью 0.5 мкс ?

Qwestin
Offline
Зарегистрирован: 02.05.2015

Как получить на Uno импульс длительностью 0.5 мкс и менее?

maksim
Offline
Зарегистрирован: 12.02.2012

Примерно так:

  pinMode(13, OUTPUT);
  
  // 16 MHz - это 16 тактов на 1 мкс, 0.5 мкс = 8 тактов
  cli(); // запрещаем все прерывания
  PORTB |= 1<<5;  // устанавливаем высокий уровень
  asm("nop");
  asm("nop");
  asm("nop");
  asm("nop");
  asm("nop");
  asm("nop");  // ждем 6 тактов
  PORTB &= ~(1<<5); // устанавливаем низкий уровень, занимает 2 такта
  sei(); // разрешаем прерывания

Ну а как сделать меньше думаю ясно.

Qwestin
Offline
Зарегистрирован: 02.05.2015

Спасибо, попробую!