Включение/выключене с 1 канала нескольких нагрузок. Возможно-ли?

dimaris

Здравствуйте Дмитрий!
Проверил я в железе исправленные прошивки, RC_2IN_ATtiny13_4_1.hex теперь прекрасно работает и калибруется, разобрался как правильно калибровать, сначала в максимум потом подаем питание начинаем отклонять стик в крайние положения в течении 5с.
А вот RC_2IN_ATtiny13_4_23.hex тоже хорошее работает но лишь в режиме работы №2, хотя я выставлял Fuse: RSTDISBL. По понятным причинам вы не смогли проверить режим №3, мне как раз он и нужен.

Dimac
dimaris:

А вот RC_2IN_ATtiny13_4_23.hex тоже хорошее работает но лишь в режиме работы №2, хотя я выставлял Fuse: RSTDISBL. По понятным причинам вы не смогли проверить режим №3, мне как раз он и нужен.

Что не так в 3-ем режиме? Я так понял Fuse: RSTDISBL Вы запрограммировали. И после этого он всё равно работает в режиме №2?
Если так, то спрошу: заранее извиняюсь, а Вы уверены, что запрограммировали его? (Просто бывает разные программы-прошивальщики по разному отображают значение фьюзов которые запрограммированы и которые нет), иногда надо поставить специальную “галочку” чтоб запрограммировать фьюзы.

У меня прошивка читает значение этого фьюза и настраивает работу 1 пина (Reset) соответствующим образом. Соответственно проверял только в протеусе, но там работает идеально (как только меняешь фьюз RSTDISBL - сразу меняется режим работы).

dimaris

Хорошо еще раз пере прошью, хотя странно когда прошивал RC_2IN_ATtiny13_2_2.hex и выставлял фьюз RSTDISBL то все работало и резет как порт работал. Прошиваю с помощью avrdudeshell очень удобная программа, там все наглядно и проблем не было.

Только что еще раз пере залил прошивку и выставил RSTDISBL обычной AVRDUDEPROG, результат тот же самый режим работы №2. После выставления RSTDISBL контроллер перестает читаться значит фьюз правильно устанавливается. Потом чтобы вернуть контроллер к заводским настройкам я его лечу специально сделанной для этих целей автономной лечилкой, после все прекрасно шьется. А каким образом программа читает значение этого фьюза? Всетаки в протеусе идеальная среда не стоит полностью ему доверять.

Dimac

Лечилки у меня нет, проверить в железе не могу (надо тоже сделать лечилку).
Сегодня вечером протестирую на чтении других фьюзов (в принципе без разницы какие читать), возможно что-то с чтением не то.
Решение проблемы видится такое:

  • или я найду проблему с программным чтением фьюзов.
  • или сделаю для третьего режима отдельную прошивку (просто хотелось универсальности), там надо всего 1 строчку поменять.

Чтение фьюзов там немного через одно место. Я даже сперва не мог найти в даташите, как их читать. Вот так читаю:
ldi ZL,low(0x0003)
ldi ZH,High(0x0003)
ldi var1,(1<<RFLB | 1<<SELFPRGEN)
out SPMCSR,var1
lpm var1,Z
После этого, в регистре var1 должно быть, в нулевом бите значение фьюза RSTDISBL

Dimac

Не, что-то я никак программно не могу фьюзы прочитать на реальном чипе.
Сделал для 3-го режима отдельную прошивку.

RC_2IN_ATtiny13_4_3.rar

Dimac

Всё таки добил я универсальную прошивку RC_2IN_ATtiny13_4_23.hex
Теперь должно всё работать.

RC_2IN_ATtiny13_4.rar

dimaris

Только что проверил в железе универсальную прошивку RC_2IN_ATtiny13_4_23.hex, четко проходит калибровку но запускается в режиме №2, а когда передернешь питание то начинает работать в режиме №3. Проверял серво-тестером, вечером проверю на простом передатчике с кароновским приемником.

Dimac

Блиииин 😃)))
Сегодня вечером посмотрю. Спасибо за терпение тестировать мои недоделки 😃

dimaris

Сейчас протестировал с простой 4х канальной футабой скайспорт и приемником карона безкварцевым (RP6S1), центр не уплывает как в прошлый раз. Но никак не смог вывести в режим калибровки, осциллографа под рукой не было поэтому не знаю что выдает приемник в момент включения и поиска передатчика. Еще обнаружил интересный момент, решил попробовать родной футабовский приемник на те-же 35 мегагерц и реакции никакой, хотя сигнал есть так как рулевки работают на всех каналах. Надо осциллографом ткнуть посмотреть что там происходит.

Dimac

А если (для калибровки) сперва включить передатчик, чтоб он нашёл приёмник, при выключенном модуле. Установить стики в максимум и потом подрубить модуль.
А то может при поиске передатчика в канал какие импульсы проскакивают и программа их принимает за сигнал и сразу переходит в работу. (хотя у меня сделано на такой случай при старте пауза 0.6сек., типа при включении тупо ждём 0.6сек, ничего не делаем и только потом смотрим, что там на входном канале)
Можно паузу увеличить. Я когда у себя на своей аппаратуре тестировал (Туринга9Х и модуль Корона), хватало 250ms.

dimaris

Ну мне именно так и удалось вывести в калибровка, сначала связал приёмник и передатчик а потом подрубил модуль и все прошло на ура. В принципе этого достаточно для первоначальной настройки плюс дополнительная защита от случайного вывода в калибровку.