uint8_t in_state = PIND; // фиксируем состояние входов
uint8_t currBit = 4; // бит вх. порта 2 ардуино,
а in_state пин форсунки?
Вы тут уже столько времени трётесь, тему вон на 500 постов запостили, так почитайте же хоть что-нибудь, не всё ж писать. Это переменная для сохранения ВСЕХ восьми пинов регистра D.
uint8_t in_state = PIND; // фиксируем состояние входов
uint8_t currBit = 4; // бит вх. порта 2 ардуино,
а in_state пин форсунки?
Вы тут уже столько времени трётесь, тему вон на 500 постов запостили, так почитайте же хоть что-нибудь, не всё ж писать. Это переменная для сохранения ВСЕХ восьми пинов регистра D.
Уже прочел. Я откуда знаю что такое PIND и с чем его едят ,поэтому и спросил.
qwone нужна помощь Проблемма в том что если я увеличиваю время допустим до 50 милисекунд получается следующее.
1 датчик дал сигнал зажигается светодиод ,если светодиод не погас и 2 датчик дал сигнал ,то 1 светодиод продолжает гореть ,то же происходит и с 3 и с 4 и опять 1-2-3-4-1-2-3-4 так до бесконечности до того момента пока не перестанут довать сигнал датчики.После этого проходит некоторое(скорее всего программа складывает время) время и все светодиоды тухнут.
10000 of digitalWrite(10, HIGH): 58ms ::: Single digitalWrite(10, HIGH): 0.01ms
10000 of digitalRead(11): 48ms ::: Single digitalRead(11): 0.00ms
10000 of analogRead(0): 1120ms ::: Single analogRead(0): 0.11ms
10000 of analogWrite(3, 127): 63ms ::: Single analogWrite(3, 127): 0.01ms
Все, кроме analogRead выполняется за 10мкс и меньше, а analogRead - за 110мкс, здесь он не ошибся.
Если бы у него (или у Вас) были мозги, он (или Вы) сразу бы заметил, что в его данных ошибка, т.к. не может такая сложная операция, как analogRead выполняться в 15 раз медленнее, чем digitalWrite.
Я Вам уже много раз говорил, что либо идите в "Ищу исполнителя", либо учитесь программировать. Вы же предпочитаете не делать ни того, ни другого, а клянчить о помощи по каждой мелкой ерунде. Квон, конечно, известный альтруист, но что Вы будете делать, когда и ему надоест? Может таки поучиться чему-нибудь и хоть таку мелочь уметь делать самому?
Я Вам уже много раз говорил, что либо идите в "Ищу исполнителя", либо учитесь программировать. Вы же предпочитаете не делать ни того, ни другого, а клянчить о помощи по каждой мелкой ерунде. Квон, конечно, известный альтруист, но что Вы будете делать, когда и ему надоест? Может таки поучиться чему-нибудь и хоть таку мелочь уметь делать самому?
Подскажите как исправить проблемму.Может и сам исправлю код.Я учусь но времени мало сижу читаю но пока не доходит.
А чего там читать, надо просто команды в нужном порядке записать. Другое дело, что Вы понятия не имеете что означает каждая команда в "Вашем" скетче. Тут уж подсказать невозможно, просто учите язык и думайте.
А чего там читать, надо просто команды в нужном порядке записать. Другое дело, что Вы понятия не имеете что означает каждая команда в "Вашем" скетче. Тут уж подсказать невозможно, просто учите язык и думайте.
А чего там читать, надо просто команды в нужном порядке записать. Другое дело, что Вы понятия не имеете что означает каждая команда в "Вашем" скетче. Тут уж подсказать невозможно, просто учите язык и думайте.
У меня 2 версии почему так происходит.
1В скетче нет конкретной привязки к ринам,и переписать строки в этом случае мало.
2То что нужно перепесать строки
П.С. А читаю я программирование код я уже когда меня разбудят говорить наизусть.
//--------------------Cl_HallToInj-------------------------------
// класс Датчик Холла задает начало открытия инжектора
class Cl_HallToInj {
uint32_t timeI = 0; // длительность задержки впрыска
uint32_t time1 = 0; // длительность впрыска
uint32_t *const pTimeI;// указатель на длительность задержки впрыска
uint32_t *const pTime1;// указатель на длительность задержки впрыска
const byte hallPin ; // пин холла
const byte injPin;// пин инжектора
bool hall, oldHall;//переменные для холла но почему 2 а не1
bool statI = 0; //состояние задержки
bool inj;//для инжектора
bool invH, invI; // инверсия выходов датчика Холла и инжектора
uint32_t past = 0;//походу для таймера
public:
Cl_HallToInj(byte _hallPin, bool _invH, byte _injPin, bool _invI, uint32_t *_pTimeI, uint32_t *_pTime1)
: hallPin(_hallPin), invH(_invH), injPin(_injPin), invI(_invI) , pTimeI(_pTimeI), pTime1(_pTime1) {}
void setup() {
pinMode(hallPin, INPUT); //вход
oldHall = digitalRead(hallPin)^invH; //присваеваем состояние
pinMode(injPin, OUTPUT); //выход
inj = 0; //присваеваем 0
digitalWrite(injPin, inj ^ invI); //устанавливаем инверсию
}
void loop() {
hall = digitalRead(hallPin)^invH; //смотрим состояние
if (hall && !oldHall) { //если сработал датчик Холла
oldHall = 1; //присваеваем 1
statI = 1; //присваеваем 1
timeI = *pTimeI; //выставить новое время задержки впрыска
past = micro; //присваеваем время ?
//** вот сюда надо поставить это
inj = 0; //то выкл Инжектор
digitalWrite(injPin, invI ^ inj); //устанавливаем инверсию
}
else if (!hall && oldHall) { //иначе если 0и1 то
oldHall = 0; //присваеваем 0
}
if (statI && micro - past >= timeI) { //если истекло время
statI = 0; //присвоить 0
inj = 1; //то вкл Инжектор
digitalWrite(injPin, invI ^ inj); //устанавливаем инверсию
time1 = *pTime1; //выставить новое время впрыска
past = micro; //присваеваем время ?
}
if (inj && micro - past >= time1) { //если истекло время
inj = 0; //то выкл Инжектор
digitalWrite(injPin, invI ^ inj); //устанавливаем инверсию
}
}
}
Но проблема не в этом. Почему водитель в очень сложной дорожной обстановке не играет в шахматы, да хоть сам с собой. Наверно потому что если и есть у человека за рулем свободная минутка, секунда , то все равно не надо отвлекаться на что-то посторонее. Вот так и МК. Не надо перегружать МК лишними заданиями и тогда он все будет успевать. Пусть он лишний раз впустую пробежит в loop(), но точно найдет время когда надо включить и выключить инжектор.
Но проблема не в этом. Почему водитель в очень сложной дорожной обстановке не играет в шахматы, да хоть сам с собой. Наверно потому что если и есть у человека за рулем свободная минутка, секунда , то все равно не надо отвлекаться на что-то посторонее. Вот так и МК. Не надо перегружать МК лишними заданиями и тогда он все будет успевать. Пусть он лишний раз впустую пробежит в loop(), но точно найдет время когда надо включить и выключить инжектор.
Я это уже понял с примерами скорости выполнения вот и вернулся к коду.
Питается он от дуины.По взмаху волшебной палочки в манитое меняется время и работает на этом времени пока не зальет или сразу высвечиваются кракозябры и глохнет.Один раз даже в минус показывать начал.
ну пробуйте дело ваше может получится
Ваш скечь можно переделать на один импульс для каждого из 4 импульсов задать класс
А!!! Класс! Квоны распростроняются!!! Галлактика в опасности!
ну пробуйте дело ваше может получится
Эти две строчки я так понял переменные?currBit это пин холла? а in_state пин форсунки?
Как я когда то начинал ничего не понимал вот вам подробная описание скетча:
На форуме у ребят много к чему научился лучьше спрашивайте узнавайте чем спорит с ними желаю успехов
uint8_t in_state = PIND; // фиксируем состояние входов
а in_state пин форсунки?
Вы тут уже столько времени трётесь, тему вон на 500 постов запостили, так почитайте же хоть что-нибудь, не всё ж писать. Это переменная для сохранения ВСЕХ восьми пинов регистра D.
uint8_t in_state = PIND; // фиксируем состояние входов
а in_state пин форсунки?
Вы тут уже столько времени трётесь, тему вон на 500 постов запостили, так почитайте же хоть что-нибудь, не всё ж писать. Это переменная для сохранения ВСЕХ восьми пинов регистра D.
Уже прочел. Я откуда знаю что такое PIND и с чем его едят ,поэтому и спросил.
Уже прочел. Я откуда знаю что такое PIND и с чем его едят ,поэтому и спросил.
Так надо знать! А если встретилось, то сначала прочесть, а только если не поможет - спроашивать.
На форуме у ребят много к чему научился лучьше спрашивайте узнавайте чем спорит с ними желаю успехов
Я с ними не спорю.Это они спорят.
A я чё? Я ниче. Другие вон чё, и ничё, а я чуть чё, и сразу вон чё!
.
Уже прочел. Я откуда знаю что такое PIND и с чем его едят ,поэтому и спросил.
Так надо знать! А если встретилось, то сначала прочесть, а только если не поможет - спроашивать.
Я такое первый раз встретил.Может это переменная такая которую обьявить забыли.
qwone нужна помощь Проблемма в том что если я увеличиваю время допустим до 50 милисекунд получается следующее.
1 датчик дал сигнал зажигается светодиод ,если светодиод не погас и 2 датчик дал сигнал ,то 1 светодиод продолжает гореть ,то же происходит и с 3 и с 4 и опять 1-2-3-4-1-2-3-4 так до бесконечности до того момента пока не перестанут довать сигнал датчики.После этого проходит некоторое(скорее всего программа складывает время) время и все светодиоды тухнут.
Выложете или укажите пожалуста эту программу.
А вы в курсе, что отработать меньше 2 микросекунд (2/100 000 сек) не реально. Программа работает с точностью (1/10000 сек)
А вы в курсе, что отработать меньше 2 микросекунд (2/100 000 сек) не реально. Программа работает с точностью (1/10000 сек)
Да.Там миллис пробовал пропустил неисправил.
Ну только так
Еще вопрос такой правильно ли я делаю график опенежения или нужно по другому.
Таких строк 26 26 параметров относительно оборотов двигателя.
infyniti, а на вашем инновационном нанодвигателе цилиндры в каком порядке работають?
infyniti, а на вашем инновационном нанодвигателе цилиндры в каком порядке работають?
Думаю, что в любом, причём на лету адаптируются в зависимости от состава смеси, IQ водителя и фазы Луны.
1-3-2-4
а у добрых людей 1-3-4-2
а у добрых людей 1-3-4-2
А у некоторых добрых людей 1-2-4-3 наврятли я ошибся у меня опозитка не рядный.Если только с углом.Я специально поставил потенциометр для корекции.
При такой схеме
У меня 2 варианта 1-3-4-2 и 1-2-4-3 Точно... куда смотрел провода когда снимал?
А может и такая
Завтра посмотрю
может так? Порядок работы двигателя: 1 – 4 – 3 – 2 или 1 – 2 – 3 – 4.
может так? Порядок работы двигателя: 1 – 4 – 3 – 2 или 1 – 2 – 3 – 4.
Нет я сейчас на второй каленвал смотрел.Я когда правода снимал с крышки на катушки по порядку ставил.1-3-2-4 или 1-4-2-3.
Но у меня 2 катушки правая и левая без разницы 2 раза правая 2 раза левая бьют.
Сегодня руками поймал зажигание схватывает теперь на 2 дунях но не заводится и не регулируется это скорее всего скетч тормозит.
qwone а что если
AnalogRead() — скорость выполнения 110 мкс.
AnalogWrite() — 2000 мкс
SerialPrintLn() — при скорости 9600 около 250мкс, а при максимальной скорости около 3мкс.
DigitalWrite() — 1800мкс
DigitalRead() — 1900мкс
все это дело ригистрами прописать?
https://geektimes.ru/post/255744/
AnalogRead() — скорость выполнения 110 мкс.
AnalogWrite() — 2000 мкс
SerialPrintLn() — при скорости 9600 около 250мкс, а при максимальной скорости около 3мкс.
DigitalWrite() — 1800мкс
DigitalRead() — 1900мкс
все это дело ригистрами прописать?
https://geektimes.ru/post/255744/
"У моего соседа была замечательная кобылка Соня, сивая такая, грациозная красотка. Так вот как-то захворала она и начала бредить ..."
Это я к чему ... поймайте автора этого опуса и плюньте ему в рожу.
А если не поймёт за что, покажите ему вот такой тест:
Пусть он его запустит и убедится что
Все, кроме analogRead выполняется за 10мкс и меньше, а analogRead - за 110мкс, здесь он не ошибся.
Если бы у него (или у Вас) были мозги, он (или Вы) сразу бы заметил, что в его данных ошибка, т.к. не может такая сложная операция, как analogRead выполняться в 15 раз медленнее, чем digitalWrite.
Просто включите мозги и снимите лапшу с ушей.
Как можно проверить скорость моего кода?
1. Выберите свободный пин (FPIN)
2. Сконфигурируйте его на OUTPUT
3. Объявите глобальную переменную bool kaka = false;
4. В ключевых точках программы вставьте вызов: digitalWrite(FPIN, kaka = !kaka);
5. Подключите к FPIN осциллограф и следите.
При каждом взове команды из п.4, состояние пина будет меняться с LOW на HIGH или наоборот (при нечётном вызове - LOW->HIGN, при чётном - HIGH->LOW).
Так Вы точно узнаете соклько времени выполняется любой отрезок программы между вызовами этой команды.
А без осциллографа ни как?
На глаз, либо ещё одной ардуиной с таймером в режиме захвата.
А без осциллографа ни как?
Ну, Вы можете выделить интересующий кусок, вытащить его отдельно и пропустить через тестер типа того, что я для digitalRead и пр. приводил.
Вроде нашел причину.
Если датчик дает сигнал и время не вышло то при следующем сигнале выстовляется новое время.
Вроде нашел причину.
Если датчик дает сигнал и время не вышло то при следующем сигнале выстовляется новое время.
Помоготе исправить проблемму.
Помоготе исправить проблемму.
Я Вам уже много раз говорил, что либо идите в "Ищу исполнителя", либо учитесь программировать. Вы же предпочитаете не делать ни того, ни другого, а клянчить о помощи по каждой мелкой ерунде. Квон, конечно, известный альтруист, но что Вы будете делать, когда и ему надоест? Может таки поучиться чему-нибудь и хоть таку мелочь уметь делать самому?
Помоготе исправить проблемму.
Я Вам уже много раз говорил, что либо идите в "Ищу исполнителя", либо учитесь программировать. Вы же предпочитаете не делать ни того, ни другого, а клянчить о помощи по каждой мелкой ерунде. Квон, конечно, известный альтруист, но что Вы будете делать, когда и ему надоест? Может таки поучиться чему-нибудь и хоть таку мелочь уметь делать самому?
В том-то и беда, если подскажу, то сами уже никогда не исправите.
Так что давайте, думайте, изучайте, ... ну, или ждите Квона.
В том-то и беда, если подскажу, то сами уже никогда не исправите.
Так что давайте, думайте, изучайте, ... ну, или ждите Квона.
А вы подскажите а там видно будет может я не то читаю.Зачем читать то что не нужно всему свое время.
А чего там читать, надо просто команды в нужном порядке записать. Другое дело, что Вы понятия не имеете что означает каждая команда в "Вашем" скетче. Тут уж подсказать невозможно, просто учите язык и думайте.
4дня рылся с ускорением а решилось одним ответом.Оно нафик не нужно.
А чего там читать, надо просто команды в нужном порядке записать. Другое дело, что Вы понятия не имеете что означает каждая команда в "Вашем" скетче. Тут уж подсказать невозможно, просто учите язык и думайте.
Не совсем я и тупой больше половины я понимаю.
Вот это я не понимаю
Это что переменная времени?
И пока все.Остальное закаментировано и читается.
Может и не верно но это как я читаю
А чего там читать, надо просто команды в нужном порядке записать. Другое дело, что Вы понятия не имеете что означает каждая команда в "Вашем" скетче. Тут уж подсказать невозможно, просто учите язык и думайте.
У меня 2 версии почему так происходит.
1В скетче нет конкретной привязки к ринам,и переписать строки в этом случае мало.
2То что нужно перепесать строки
П.С. А читаю я программирование код я уже когда меня разбудят говорить наизусть.
Но проблема не в этом. Почему водитель в очень сложной дорожной обстановке не играет в шахматы, да хоть сам с собой. Наверно потому что если и есть у человека за рулем свободная минутка, секунда , то все равно не надо отвлекаться на что-то посторонее. Вот так и МК. Не надо перегружать МК лишними заданиями и тогда он все будет успевать. Пусть он лишний раз впустую пробежит в loop(), но точно найдет время когда надо включить и выключить инжектор.
Но проблема не в этом. Почему водитель в очень сложной дорожной обстановке не играет в шахматы, да хоть сам с собой. Наверно потому что если и есть у человека за рулем свободная минутка, секунда , то все равно не надо отвлекаться на что-то посторонее. Вот так и МК. Не надо перегружать МК лишними заданиями и тогда он все будет успевать. Пусть он лишний раз впустую пробежит в loop(), но точно найдет время когда надо включить и выключить инжектор.
Завелась, ласточка.
Пришлось вернутся к одной катушке.
В двух катушечной системе второй камутатор отказывается работать.
Завелась на простом скече (пустом) и на 2 ардуинах.На меге инжектор на нано зажигание.
С потенциометром с сериал сбои идут или глохнет,а без него работает зараза как с родным даже без опережений.
Жалко не успел периодметр попробовать.
С потенциометром происходят странные вещи.
Питается он от дуины.По взмаху волшебной палочки в манитое меняется время и работает на этом времени пока не зальет или сразу высвечиваются кракозябры и глохнет.Один раз даже в минус показывать начал.
Один раз даже в минус показывать начал.
Это то, о чём говорил DetSimen - расход стал отрицательным, движок замироточил бензином. Поздравляю!
Один раз даже в минус показывать начал.
Это то, о чём говорил DetSimen - расход стал отрицательным, движок замироточил бензином. Поздравляю!
А я думаю чет не глохнет странно