mega2560 - Прерывает чтение цифрового входа

Привет, я очень новичок в Arduino, у меня очень мало опыта программирования.

Я использую mega 2560 и пытаюсь понять, как работает прерывание.

У меня есть написанный код, он очень похож на пример кода Memsic2125, поэтому я буду использовать его здесь.

В моем случае я считываю данные со своего оборудования, массива датчиков 5x5.

Что я хотел бы сделать, так это -- распечатать x и y с помощью прерываний , я хочу распечатать выходные данные x и y каждые 10 мс. Вместо того, чтобы печатать его непрерывно прямо сейчас.

Я буду отправлять его в 16-битном формате. Я попробовал другой пример и прочитал много материала. но все еще не мог заставить его работать.

Любая идея, предложение, помощь, комментарий приветствуются.

const int xPin = 2;    
const int yPin = 3;

void setup() {

  Serial.begin(9600);
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
}

void loop() {

  int pulseX, pulseY;

  int x, y;

  // считываем импульс с осей x и y:
  pulseX = pulseIn(xPin, HIGH);
  pulseY = pulseIn(yPin, HIGH);


  x= ((pulseX / 10) - 500) * 8;
  y= ((pulseY / 10) - 500) * 8;

  // напечатать х, у
  Serial.print("x,y= ( ");

  Serial.print(x);   Serial.print(,);
  Serial.print(y);   Serial.println(")");


  delay(100);
}

, 👍1

Обсуждение

Вы уже печатаете каждые ~100 мс., @gre_gor

У вас не может быть прерывания в коде (это аппаратная вещь), но вы можете смоделировать прерывание через ISR, которого у вас нет., @Aaron


2 ответа


1

В том, что вы опубликовали, нет кода прерывания. в чем именно проблема?: Одно важное замечание заключается в том, что вы не должны пытаться печатать в строку Serial в обработчике прерываний, поскольку последовательный порт сам управляется прерываниями, которые отключаются во время кода вашего обработчика. Если все, что вы действительно хотите сделать, это печатать что-то каждые 10 мс, тогда вам не нужно прерывание. Просто используйте стиль синхронизации «Мигание без задержки» и не допускайте блокировки другим кодом.

,

0

Проще всего было бы прочитать данные и зациклиться на желаемое время.

В качестве альтернативы отметьте время событий и сохраните данные, если требуемое время истекло.

Или использовать для этого прерывание по таймеру.

,

Что означает «onkybread the data»?, @James Waldby - jwpat7