Прерывания

vipok72
Offline
Зарегистрирован: 20.02.2018

Всех приветствую!

Есть задача реализовать прием и передачу данных в виде чисел, при этом должны работать постоянно прерывания, их у меня два. Задачу выполнил, но при активации прерываний, которые выполняются очень часто у меня происходит какое то искажение данных.

Примерно это выглядит так:

//Это как должно быть
OK;123;123;123;123
OK;120;125;121;122
//Это после того как активируются прерывания
123
;12
3;1

Впринципе я понимаю что всё это из-за того что запуск прерываний слишком частый и мой весьма таки сложный в плане процессорного времени код выполнится не успевает и происходит это... Я новичок в Ардуино и не знаю как лучше всего обойти такое, главное для меня это отправка 4 разных чисел, прием двух чисел (всё это через Serial порт) и обработка этих данных. Прошу подсказать решение для этой проблемы. Спасибо

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Попровьте константу в 32-ой строке скетча.

vipok72
Offline
Зарегистрирован: 20.02.2018

О, спасибо большое, и правда.

Теперь новая проблема, при передаче данных (отправляю до 4 цифр с пк на ардуино) происходит неправильное чтение почему то.

if (Serial.available()) {
    buff = Serial.parseInt();
    Serial.println(buff);
 }

Отправляю например:

2200

2201

В ответ приходит:

220

221

Это все с учетом того что прерывания постоянные идут

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

buff как объявлен?

vipok72
Offline
Зарегистрирован: 20.02.2018
long buff; //для приема данных

перед setup()

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Penni пишет:

buff как объявлен?

Пенни, предланаю прекратить терять время на подобные вопросы пока ТС наконец не поймёт, что он должен выложить скетч. А то эдак Вы часми будете про каждую переменную спрашивать. Новичков надо воспитывать, а то потом выясняется. что полфорума полдня чесало репу из-за того, что человек аналоговый сигнал с пина ресет читал (помните такую историю?)

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

И то верно, все привыкнуть не могу.

nik182
Offline
Зарегистрирован: 04.05.2015

Обойти это можно только уменьшив время нахождения в прерывании.