БАНо

МаркАнтоний
Catsw:

Попробуйте аварийку вообще отключить, проверьте логику, и тогда бум знать от чего плясать

Я же уже писал. Что без аварийки всё работает!

Например вот. Полностью правильно работает на два канала. Только когда аварийку начинаешь вводить, ерунда твориться!

Рабочая без аварийки.rar

Catsw
МаркАнтоний:

Я же уже писал. Что без аварийки всё работает!

Ок, беру тайм аут до завтра, завтра со свежей головой покапаю… Просто так таймер дальше не отодвинешь, НО - в моём проэкте БАНО аварийка включалась только при пропадании сигнала, НИКОГДА раньше не включалась… Бум копать, завтра расскажу…

Catsw

Изменил логику работы таймера аварийки, теперь он так же останавливается и стартует от прерываний, а не просто обнуляется, опять таки, в симуляторе всё идеально, проверьте в железе…
П.С. Проверьте так же работу 2313 от 3х вольт питания, по возможности посмотрите осциллографом размах (а заодно и период увидите) канального импульса.

LostSignal2_7.rar

МаркАнтоний
Catsw:

Изменил логику работы таймера аварийки, теперь он так же останавливается и стартует от прерываний, а не просто обнуляется, опять таки, в симуляторе всё идеально, проверьте в железе…

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

Catsw:

П.С. Проверьте так же работу 2313 от 3х вольт питания, по возможности посмотрите осциллографом размах (а заодно и период увидите) канального импульса.

От ртёх вольт работает точно так же. Только яркость свечения упала, ну это правильно. Померить нет возможности.

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

Catsw
МаркАнтоний:

Прошил. Приёмник подключён, аппаратура выключена: ничего не горит.

Логично.

МаркАнтоний:

Аппаратуру включил, приёмник поймал сигнал: заморгала аварийка и одна из фар(зависит от положения стика)

Аварийка… Очень странно, у меня 90% уверенность, что по какой то причине кристалл НЕ обрабатывает все приходящие прерывания. Было у меня такое как то, причину так и не нашёл, ИМХО либо глюк АБ, либо что то с кристаллом не так…
Сейчас гляну, фары одна за другой должны включатся, или по очереди?

МаркАнтоний:

А Вы не сможите на каком нибудь своём кристале в железе попробовать? Может это у меня приёмник какойнить кривой?

Ок, после обеда буду искать, вроде где то должна валятся 2313.

МаркАнтоний:

От ртёх вольт работает точно так же. Только яркость свечения упала, ну это правильно.

Значит проблема не в уровне сигнала…

МаркАнтоний:

А ещё такое впечатление, как будто прерывания по каналу свет срабатывают не постоянно, ведь в каждом прерывании у Вас гасятся обе фары, но они моргают не постоянно.

Дык вот, проблема есс-но с прерываниями, ХЗ почему в железе они по другому работают, искал в инете - ничего подобного не нашёл…

МаркАнтоний:

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

Тем более удивительно, она проверяется первой, и если таймер её сработал - то только она и будет мигать, что бы вывести её из этого состояния, нужно прерывание, а оно почему то не проходит 😦

МаркАнтоний

Андрей, если нет тини 2313 то может на 24 попробуете?

А ещё такой вопрос: Резисторы нужно припаивать на входы D.3 D.2 или можно напрямую провода из приёмника припаять? У меня напрямую.

Catsw
МаркАнтоний:

Андрей, если нет тини 2313 то может на 24 попробуете?

Не вопрос, просто сейчас на пару часов по работе надо отвлечься…

МаркАнтоний:

Резисторы нужно припаивать на входы D.3 D.2 или можно напрямую провода из приёмника припаять? У меня напрямую.

Кстати, вообще то как раз нужно…

Изменил логику работы сигналов, ХЗ, это уже на уровне шаманства 😃 И в отладчике включил два генератора на выводы, увидите, заодно посмотрите на форму ППМ в канале 😃 на аварийке стоит брекпоинт, и в симуляторе туда она не попадает, работает всё идеально… Попробуйте резисторы поставить…

П,С, Сейчас ещё порты гляну, может там шалят…

П.П,С Работа чуть отодвинулась, а с портами лажа, ИМХО тут и покопалась собака! Ща поправим 😃 2,8 пока не ставьте.

Всё, теперь в портах порядок, а то чёр те чё бегало, а симулятор помехи ловить не обучен 😃

LostSignal2_8.rarLostSignal2_9.rar

МаркАнтоний

Резисторы поставил. 1,8К и 22К.
Последнюю, 2,9 прошил, но не работает! Так же аварийка моргает! 😢😢😢
Попробуйте на своём кристале, может мне нужно пойти и новый купить!

V_Alex

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

  1. при включенном передатчике замерьте такт прохождения сигнала, прицепившись к любому каналу ;
  2. при включенном передатчике попробуйте подключиться через резисторы 10-15 кОм (одним концом спаянными вместе и этой-же точкой подключенной ко входу осциллографа) к тем выходам приемника, которые Вы постоянно мучаете. По картинке сразу станет ясно, идут ли выходные сигналы приемников один за другим или одновременно.
  3. при выключенном передатчике посмотрите, что творится на выходе приемника. Если есть фэйл-сейф, то импульсы будут идти, но с увеличенной синхропаузой между ними. При наличии фэйл-сейфа нормально заставить работать аварийку не получится по определению.
    Без ясности этой картины Вы не поймете, с чем именно сражаетесь.
Catsw
МаркАнтоний:

Последнюю, 2,9 прошил, но не работает! Так же аварийка моргает!

Странно… Либо кристалл кривой (как у меня было 😃 ) либо АБ глючный…

МаркАнтоний:

Попробуйте на своём кристале, может мне нужно пойти и новый купить!

Да уж… Но эт только завтра, сегодня дел по горло 😦 И завтра у меня под руками будут и три сервотестера, и приёмник 😃 Главное - откопал таки в барахле у себя нулёвую 2313, так что есть на чём опыты ставить 😃

V_Alex:

Респект Вам, мужики. Каждый день жду продолжения .

😃 Хоть кто то смотрит, уже приятно 😃 Может доведённый до ума проэкт кому то и пригодится!

V_Alex:

Лучше сперва найти знакомого с любым осциллографом,

Лучше тогда за 50 енотов купить с ебея нормальный карманный осциллограф с памятью, в формфакторе мобильника - и всё сразу на своих местах будет 😃

V_Alex:

Если есть фэйл-сейф, то импульсы будут идти, но с увеличенной синхропаузой между ними.

Да ХЗ, у каждого разработчика дешифратора ППМ в приёмыше своё видение ФС, могут и не менять длину пакета, в общем - как кто видит, так и реализовывают - кЭтай 😃

V_Alex:

При наличии фэйл-сейфа нормально заставить работать аварийку не получится по определению.

Ну почему? Если есть исходники, можно по 2 каналам проверку длинны точнее сделать - и заработает, но это уже тогда каждый под себя подстраивать будет, хотя повесить кнопку (благо ног хватает) и ей в ЕЕПРОМ писать значения при ФС - то же не так много труда, примерно такое я реализовывал в другом (не авиа) проэкте - работает отлично, только после первой записи в ЕЕПРОМ 😃 Но этим точно на досуге займусь, не сейчас… Хотя может это и есть выход в борьбе с аварийкой? Надо покурить и подумать 😃

МаркАнтоний

Взял сегодня на работе осцилограф. Померил канальный импульс, и всё стало на свои места! Период импульсов равен 20 мс. И убедился что на моих приёмниках никакого ФС нет (передатчик выключил, импульсы пропали)!
Видимо поэтому всё становится на свои места. На таймере Т0 нам реализовать не получится, нужен 16-ти битный таймер.

Rula
МаркАнтоний:

На таймере Т0 нам реализовать не получится, нужен 16-ти битный таймер

Извиняюсь, что лезу не изучив вашу прошивку, но пропажу импульсов можно и просто по прерываниям считать (не знаю какие и как у вас настроены), и даже совсем без них, совершенно отдельно от замера длинны импульса, так что на разрядности таймера свет клином не сошёлся 😉

Иван

Андрей, может проблема от того что в цикле аварийки вы используете непосредственно регистр таймера - если его списывать в переменную и работать с ней,думаю проблем поисчезнет.
и не совсем понятно - после остановки таймера 0 зачем в его счётный регистр вписывать 220?
для снижения возможных коллизий, можно такт мигалова на поворотники брать от меж канального интервала

МаркАнтоний

Поборол таки я его! Вроде получилось! Теперь буду наблюдать, может ещё какой баг появится!
Это пока ещё не окончательная прошивка! Это так сказать для народа, кому интересно как получилось отследить потерю сигнала.

Catsw
Иван:

Андрей, может проблема от того что в цикле аварийки вы используете непосредственно регистр таймера - если его списывать в переменную и работать с ней,думаю проблем поисчезнет.

Можно и так, на вкус 😃 В реале это экономит код и быстродействие, просто в основном цикле так нельзя делать - там надо изменения фиксировать, поэтому и переменная введена - и перезаписывается она только при завершении нового измерения импульса, до этого она константа.

Иван:

и не совсем понятно - после остановки таймера 0 зачем в его счётный регистр вписывать 220?

Каюсь, косяк, с тех времён, когда таймер считал постоянно. Можно убрать, с точки зрения логики - никаких изменений не будет!

Иван:

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

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

МаркАнтоний:

Поборол таки я его! Вроде получилось!

Поздравляю!!!

МаркАнтоний:

Теперь буду наблюдать, может ещё какой баг появится!

Ну не знаю, уже и так вилизывали, хотя…куда без них 😃

МаркАнтоний:

Это так сказать для народа, кому интересно как получилось отследить потерю сигнала.

Да уж, оригинально 😃 Инкриментировать Аларм при переполнении… ну что сказать - раз работает, значит и не трогаем! 😃 Можно было частоту тактирования уменьшить, но раз так работает - то так тому и быть!

V_Alex
МаркАнтоний:

Поборол таки я его! Вроде получилось!

Мои осторожные поздравления 😁

МаркАнтоний

Ну почти работает. Есть ещё такая ошибка: Почему то подмаргивают поворотники, когда ничего не трогаешь. Определённой зависимости нет, моргают когда хотят.

На видео видно. 33-38 секунда видео левый поворотник, 44-48 секунда правый поворотник. Всё остальное время какаято помеха, за исключение начала и конца, там сама аварийка.

Это последняя прошивка что я выкладывал, которая 3_0.
А что самое интересное. Удаляю Настройщик прерываний для переполнения таймера Т0 и эта помеха пропадает, обсалютно нормально работает, возвращаю всё обратно и снова эта помеха появляется.

valera_o

“fara” когда-нибудь включается? Везде в нее помещается “1”…
Вот еще натырка. При входе во все обработчики надо сохранять в стеке регистр sreg, а по выходе - возвращать. Да и r16,r17 неплохо бы в стеке сохранять(АБ это автоматически не делает). Несохранение первого даёт ошибки при сравнении, поскольку могут потеряться биты знаков, переполнеия и т.д., а вторые используются прогой как временные регистры при действиях с 16-ти битными переменными, регистрами ввода-вывода, макросами и т.д., так уж заведено автором АБ.
матчасть будем когда-нибудь учить? 😉

МаркАнтоний
valera_o:

“fara” когда-нибудь включается? Везде в нее помещается “1”…

В моей последней прошивке “fara” и “fara1” зажигается и гасится стиком.

valera_o:

Вот еще натырка. При входе во все обработчики надо сохранять в стеке регистр sreg, а по выходе - возвращать. Да и r16,r17 неплохо бы в стеке сохранять(АБ это автоматически не делает). Несохранение первого даёт ошибки при сравнении, поскольку могут потеряться биты знаков, переполнеия и т.д., а вторые используются прогой как временные регистры при действиях с 16-ти битными переменными, регистрами ввода-вывода, макросами и т.д., так уж заведено автором АБ

Буду пробовать. Может поможет!

valera_o:

матчасть будем когда-нибудь учить?

😒

Валерий, попробовал сохронять, но всё равно неправильно работает. “Не выходит чаша каменная” (С)

valera_o

Антон, не нашел где в бит “фара” записывается “0”, почему-то.
отработка по период1 будет только при наличии “период” в пределах нормальных длительностей, т.е. при пропадании сигнала на ноге Д2 будет отрабатываться последняя поступившая длительность импульса, а если длительность сигнала выйдет за пределы 900-2200мкс, на ногу Д3 реакции не будет. Никакой. т.е. прерывание-то будет, но в теле маин действий не будет.
В симе отлично видно, что sreg до входа в обработчик и по выходе из него совершенно разные имеет значения.
Такой вариант.