Jump to content

Nilas

Members
  • Content Count

    218
  • Joined

  • Last visited

Community Reputation

11 Обычный

1 Follower

About Nilas

  • Rank
    Постоялец

Информация

  • Пол
    Мужчина
  • Город
    Курганская обл.

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    Хобби
  • Оборудование
    руки и голова + мультиметр да паяльник

Recent Profile Visitors

1541 profile views
  1. Получается, что при вызове функции берем адрес переменной _swap(&x0, &x1) В самой функции адрес "перекочевывает" в указатель переменной void _swap(uint16_t *a, uint16_t *b) И в самой функции оперирует с переменными через адресацию. Сейчас все нормально скомпилировалось! и в коде, и в голове
  2. Переделал на void _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { _orientCoordinates(*x0,* y0); _orientCoordinates(*x1, *y1); if (x1 < x0) {_swap(*x0,* x1);} if (y1 < y0) {_swap(*y0, *y1);} Теперь ругается на каждый аргумент: .c:292:24: error: invalid type argument of unary '*' (have 'uint16_t') Совсем уже запутался. Понимаю что указатель это адрес переменной, но вот в использовании в функциях...
  3. Переделал на указатели: void _orientCoordinates(uint16_t *x1, uint16_t *y1) { switch (_orientation) { case 0: // ok break; case 1: // ok *y1 = _maxY - *y1 - 1; _swap(x1, y1); break; case 2: // ok *x1 = _maxX - *x1 - 1; *y1 = _maxY - *y1 - 1; break; case 3: // ok *x1 = _maxX - *x1 - 1; _swap(x1, y1); break; } } void _swap(uint16_t *a, uint16_t *b) { uint16_t w = *a; *a = *b; *b = w; } Объявил в хидер-файле функции как: void _swap(uint16_t *a, uint16_t *b); void _orientCoordinates(uint16_t *x1, uint16_t *y1); Но теперь компилятор выдает варнинги на тип переменных, хотя по моему разумению вроде как все одной масти (uint16_t): void _setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { _orientCoordinates(x0, y0); _orientCoordinates(x1, y1); if (x1 < x0) {_swap(x0, x1);} if (y1 < y0) {_swap(y0, y1);} .с:292:5: warning: passing argument 1 of '_orientCoordinates' makes pointer from integer without a cast [enabled by default] .h:148:9: note: expected 'uint16_t *' but argument is of type 'uint16_t' и т.д. на каждый аргумент. Хотя на эту функцию не ругается: ........................................... case 1: // ok *y1 = _maxY - *y1 - 1; _swap(x1, y1); break; ............................................ Или в вызове функции надо сразу ставить указатель: _orientCoordinates(*x0, *y0); , но тогда, как я понимаю, в функцию будут посылаться указатели на переменную (и получится указатель указателя), и обрабатываться будут они, а не переменные?
  4. Здравствуйте всем! В программировании на С новичок. Переделываю программу из Ардуино в АВР Студию 4. Попался вот такой кусок кода: .............................................. void _orientCoordinates(uint16_t &x1, uint16_t &y1) { switch (_orientation) { case 0: // ok break; case 1: // ok y1 = _maxY - y1 - 1; _swap(x1, y1); break; case 2: // ok x1 = _maxX - x1 - 1; y1 = _maxY - y1 - 1; break; case 3: // ok x1 = _maxX - x1 - 1; _swap(x1, y1); break; } } .............................................. void _swap(uint16_t &a, uint16_t &b) { uint16_t w = a; a = b; b = w; } Посмотрев в инете, понял, что &a и &b - это "ссылки" на языке С++. Компилятор С ругается на такое. Как я понял, "ссылка" - это псевдоним переменной и все операции в итоге совершаются с ними. Можно ли тогда сделать код без "ссылок" и оставить одни переменные? Наведите на нужную мысль void _swap(uint16_t a, uint16_t b) // сделать так??? { uint16_t w = a; a = b; b = w; } void _orientCoordinates(uint16_t x1, uint16_t y1) { // и тут убрать???
  5. Наоборот: мы уже ушли от трамблера и пришли к магнитам. На трамблере тоже за один период берется полный оборот КВ (всего 2 шторки), только еще плюсом накладывается ошибка механической части трамблера. Если использовать 2 магнита на КВ, то нужен еще один датчик (еще одна точка отсчета)
  6. Причем тут репер? Система на 1 магните, в отличие от 4-хцилиндровых. А для каналов статики нужна дополнительная точка отсчета, чтобы определить в какой паре цилиндров искрить.
  7. Ccылаюсь на "ФУОЗ-676 (Продолжение) потому, что Сергей (master-ruden) опубликовал материалы по установке датчика раньше, чем я прошивку. Прошивку на 675-м (та же схема, тот же функционал) считаю мини ФУОЗом, и ОКУ автомобилем (только со своей логикой работы). Если в чем-то ошибаюсь, то объясните.
  8. Прошивка для ОКИ под магнит на КВ и с доработанным датчиком холла. На выходе сигнал 3/8 на 5/8 (под коммутатор). Прошивка была проверена и обкатана Сергеем (master-ruden). Установка и доработка датчика здесь . 675_1T_03feb17_OKA_mgn_5_8.rar
  9. Здравствуйте всем! Представляю форумчанам измененную для ОКИ прошивку 676_1T_03feb17 от Игоря (IGO61). Прошивка была проверена и обкатана Сергеем (master-ruden). Применение - ДХ в трамблере. F675rpm_1T_FEB17_OKA.rar
  10. Делал на "десятку", работала отлично. Так и продал с ней. Такую же сделал тестю, тоже на 10-ку, и до сих пор работает.
  11. Можно также попробовать запустить без ДАД (перемычку между +5в и входом на разъеме к ДАД) и проверить на надежность контакты к R11 (а возможно и заменить R11), если конечно эти элементы участвуют в алгоритме запуска. И как вариант проверки ДПКВ - замерить его сопротивление со стороны ПП перед запуском машины (возможно плохой контакт).
  12. У меня было: был уверен, что грузики были закреплены, но после звона и плохих запусков движка , оказалось, что был не закреплён грузик
  13. грузики зафиксировал?
  14. Эти без встроенного генератора. HCM1212Х идут со встроенным генератором. В автозапчастях подобные продаются как звуковой повторитель поворотов. Использовал так же излучатели без маркировки - работали. Только подбирал C2,R4 по частоте (по громкости пищания (резонанса)). Тогда вместо КТ315 лучше поставить помощней (по ножкам подойдет КТ815, КТ817).
  15. Использовал электромагнитный излучатель звука HCM1212A. Можно использовать и другие подобные излучатели.
×
×
  • Create New...