БАНо

МаркАнтоний

Андрей, я вот обратил внимание: Когда создаёшь настройщик прерываний, то справа ВСЕ квадратики отмечены галочками, а в вашем проекте одной галочки нет (PCMSK1) может она нужна? Не пробовали? На работу в протеусе она не влияет.

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

проекте одной галочки нет (PCMSK1) может она нужна? Не пробовали? На работу в протеусе она не влияет.

Оо!!! Идея!!! Сейчас подкинул транзистор с резистором - поднялись уровни - “0” - 0,4в, “1” 4,2в, не помогло… Сейчас буду галочку ставить! Ведь всё 100 раз проверено, а вот в этих нюансах я ещё слаб 😦

Ставил/убирал галочку, менял амплитуду на входе - не выходит каменная чаша 😦 По прежнему Период = 0 и постоянное срабатывание какого то прерывания…

А если сверху МАИН - где все порты в "1"цу переводятся дописать 200 -> Period то всё мигает по всем ногам идеально, крутясь в основном цикле (маин) Как только хочешь отдать Период таймеру - в симуляторе всё отлично - в реале либо Период = 0, либо что то постоянно срабатывает, вне зависимости от наличия/отсутствия сигнала на 13й ноге…

МаркАнтоний

Андрей, попробуйте дописать перед 1->I строчку ^Period (обнуление регистра), потом ещё вставте строчку r16 -> (запись регистра в стек) после заголовка Pin_Change_0 и строчку -> r16 перед строкой выхода из прерывания reti. Народ пишет что из-за прерываний теряются данные из рабочего регистра. Может поможет. А так ещё чего нибудь думаю.

А ещё, если с r16 не получится, попробуй изменить на r17. Я смотрю он тоже там используется при сравнении.

Catsw

Дописал - ничего… ИМХО какая то не правильная интерпретация АБ, т.е. он то считает всё правильно, а вот при работе в кристалле что то не так идёт. Я не нашёл а АБ никакого средства мониторинга в режиме запуска с кристаллом, или это я размечтался??? 😃

valera_o

“Фильтрация” - это два условия “меньше 170” и “больше 250”, отсекает импульсы длительностью не вписывающейся в “ворота” 1-2мс.

Catsw
valera_o:

“Фильтрация” - это два условия “меньше 170” и “больше 250”, отсекает импульсы длительностью не вписывающейся в “ворота” 1-2мс.

А насколько правильно таймер считает? Эти условия отсекают уже от результата, выданного таймером. Насколько я понял его логику ( а вот её я как раз не до конца понял ) - то первый “таймер” - запускает инкрементирование при появлении лог 1, а второй (нижний) его останавливает, когда сработает прерывание на изменение на выводе, и условие скажет, что там 0. А как там с частотой? Вроде как он переполняется как раз при 2+ мс или я не правильно понял его делители? Может он переполняется раньше, чем надо? Или наоборот… Ведь вся остальная программа и задержи для мигания, и переходы - работает отлично…

valera_o

Таймер “щелкает” на единицу каждые 8мкс. По прерыванию, если на ноге “1”, то таймер обнуляется и начинается счет. Если по прерыванию на ноге “0”, то запоминается насчитаное таймером значение, таймер обнуляется и в дальнейшем оценивается записанное значение. Если оно больше 170(*8 = 1360мкс) и меньше 250(*8 = 2000мкс), то проделываются какие-то действия, есл вне этого диапазона, то программа переходит на начало. Типа так задумывалось.

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

Я не нашёл а АБ никакого средства мониторинга в режиме запуска с кристаллом, или это я размечтался???

Нет, это Вы невнимательно читали МАНУАЛ. Страница 37 глава Отладка алгоритма на кристалле (мониторная отладка)

Catsw:

Насколько я понял его логику ( а вот её я как раз не до конца понял ) - то первый “таймер” - запускает инкрементирование при появлении лог 1, а второй (нижний) его останавливает, когда сработает прерывание на изменение на выводе, и условие скажет, что там 0. А как там с частотой? Вроде как он переполняется как раз при 2+ мс или я не правильно понял его делители? Может он переполняется раньше, чем надо? Или наоборот…

Принцип работы таков: При появлении 1 запускается таймер и считает он до появлении 0 максимум что он может насчитать это 2,048 мс, а число что записано в счётчике таймера максимум 256, дальше произойдёт обнуление. В принципе нам этого в полне достаточно. Так что всё там должно работать.

Catsw

Ага, уже тоже с калькулятором посидел и понял 😃 тогда только одно не понятно - почему у меня всегда Период = 0 ? Проблему то нашёл, а вот решение от меня ускользает - в отладчике он прекрасно показывает - а в реале = всегда в нуле, проверил простейшим условием в теле МАИН. Только нулю равен и всё. Ставлю джамп при =0 и оно там всегда и крутится… Может импульсов не видит на 13й - ХЗ, теперь с этим копаюсь…

МаркАнтоний

Андрей, смотрите чтоб при определении портов в DDR и Port А0 записывались 0. Ещё попробуйте в настройщике прерываний изменить способ отслеживания с any logical change на rising adge. В протеусе работает. Ну если это не поможет, тогда как вариант пойти и купить ещё один камушек, только из другой партии нежели Ваши.

А чтоб убедиться видит импульсы или нет, накидайте како нибудь алгоритмик типа ежели на 13 появилась 1 то в любой другой порт пишим 1 а если 0 то пишим 0 и осцилографом можно проконтролить. Только незабывайте правильно инициализировать порты. 1->DDR выход 0->DDR вход При DDR=1 1->Port на ножне высокий уровень 0->Port на ножке низкий уровень. При DDR=0 1->Port включён подтягивающий резистор.

Иван

Попробуйте стопить таймер а потом списывать с него то что он насчитал, у меня в моём БАНо всё именно так и работает, поначалу тож проблемы были.

CKDIV8 и вот эту галку подёргайте, может чего изменит, в фузах.

Catsw

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

Catsw

Всё, проблема решена - всё заработало!!! ОГРОМНОЕ СПАСИБО ВСЕМ, помогавшим советами и прочим!!! Без Вашей поддержки я бы не поборол… просто бы забросил!
Проблема с камнем № 1 - неадекватно работающий 13й вывод - при “статических” - т.е. тумблером и прочими медленными методами он переключался, а от импульсов ППМ - НЕТ! Т.е. просто “не видел” их.

Проблема с камнем №2 - выкинут из за игр с фюзами, я тогда не понимал разницы в АБ между “запуск с кристаллом” и “запуск с монитором кристалла” - при втором камень не может работать ВНЕ программы, поэтому я фюзами и игрался, не понимая главного.

Теперь всё в порядке, выжившие камни отлично работают, кстати, совет на будущее - если ситуация с БАНО и небольшим уровнем ППМ у кого то возникает - лечится очень просто - подать питание на 1ю ногу АТтини через 3…4 диода - питание чипа станет меньше, и то, что он раньше считал лог 0 - станет лог 1й 😃 Реально мной проверено - работает отлично!!!

МаркАнтоний

Андрей, то что заработало, это клёва!!! Это получается, что было две проблемы: Одна, неправильно работающий камень. А вторая, прошивали кнопкой Запуск с монитором кристала. Правильно я вас понял? Тогда уберите ещё все токи остановки, это галочки розового цвета.

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

Андрей, то что заработало, это клёва!!!

И не говорите - сам рад, как Слон, неделю бился 😃

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

Правильно я вас понял?

Абсолютно!!!

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

Тогда уберите ещё все токи остановки, это галочки розового цвета.

Да, хотя на компиляцию они не влияют, но вид портят 😃

Catsw

Друзья, ещё раз хочу поблагодарить всем, кто помогал побороть мои мучения с битым камнем, дабы не быть только потребителем Вашего времени 😃 😃 серьёзно изменил/дописал программу.
Теперь мы имеем следующий алгоритм:
до 1,2 мс - ничего не горит.
до 1,48 мс - горят огни на крыльях
до 1,84 мс - огни на крыльях + все стробы
выше 1,84 - загорается посадочная фара.

Повесив на крутилку - можем ходить туда/сюда без ограничений.

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

Все Фьюзы стоят правильно, включена опция прошивки их при программировании, если шьёте через АБ - одним нажатием программируем всё.

ДОПОЛНИТЕЛЬНО:
1е. Сделан “Тестовый” выход для СМД светодиода (буду устанавливать непосредственно на плату) - при наличии сигнала он горит в том случае, если ширина импульса недостаточна для включения какого либо режима работы, но сигнал ППМ есть и стабилен, при увеличении импульса до момента включения первого режима - включается первый режим, а этот светодиод гаснет. При изначальном отсутствии импульсов - он мигает часто и ярко, сигнализируя о неисправности - нет сигнала или проблемы с его уровнем, т.е. сигнал не видим с самого начала, при пропадании ППМ после его (ППМ) наличия ранее - мигает тускло и реже.
Сделан просто для удобства контроля при монтаже и настройке БАНО, в дальнейшем пользы от него не много 😃

2.е Сделан “Аварийный” выход - подключенный к нему светодиод будет мигать в случае, если сигнал ППМ _был_, но пропал (пропали импульсы на входе, (задействован второй таймер)) - так как я летаю ФПВ один раз пришлось в сумерках, перешедших в ночь, искать Куляриса на поле километр на километр, удовольствие ниже среднего + 7 часов времени коту под хвост. Не смотря на наличие приятеля с ещё одним ФПВ самолётом в сумерках по камере уже было ничего не разглядеть, и при поисках очень хотелось бы, что бы на нём хоть что то мигало - оччень бы сократило время поисков. Так что на этот выход я себе 2 светодиода повешу (сверху/снизу) - всё таки сильно увеличит вероятность найти модель в сумерках/темноте при отказе РУ. Тем более, что с помощью пары диодов и например, батарейки от Нокии (1а/ч и 2…3 уе стоимости) можно для “аварийных” светодиодов и самой БАНО очень просто организовать “аварийное” питание, и этот режим будет работать автономно от всей электрики модели, являясь альтернативой поисковым маякам.

П.С. Изначально размах ППМ от сервотестера (2 вольта) был для тиньки недостаточен, поэтому, что бы мне не заморачиватся с увеличением амплитуды ППМ, мной было придумано простое решение - подать питание на тиньку (1й вывод) через 3…4 диода, включённых последовательно, так как её диапазон рабочих напряжений начинается с 2,7 вольта, а уровень лог 1цы = 0,6*Напряжение питания, то при 5 вольтах она хочет 3 вольта как лог 1цу, а при 3х вольтах питания - соответственно уже 1,8 вольта будет для неё уже лог единицей 😃 Просто, надёжно и со вкусом 😃
На яркости светодиодов это никак не отражается, так как она их коммутирует на землю.

Цоколёвка:
1- питание
2-тестовый
3-хвост
4-не используется
5-строб1
6-строб2
7-красный
8-фара
9-фара(рекомендую их запаралелить,если один мощный светодиод/ключ используется
10-красный/зелёный на крыле
11-красный/зелёный на крыле
12-Аварийный
13-вход ППМ (через 2 резистора, как раньше описывалось)
14-земля.

BANO_Emegency_v2_1.rar

Catsw

Немного изменил логику работы таймеров и самой программы, аварийный режим стал более чётко включатся и стабильней работать. Кроме него в очередной раз причесал всё остальное. Появилась ещё одна идея - вместо “аварийных” светодиодов можно повесить “самогенерирующую” “пищалку”, весит очень мало, стоит ещё меньше, так что кому актуальней звук - готовое решение.

Bano_emegency_v2_5.rar

alex57russ
Catsw:

Друзья, ещё раз хочу поблагодарить всем, кто помогал побороть мои мучения с битым камнем, дабы не быть только потребителем Вашего времени 😃 😃 серьёзно изменил/дописал программу.
Теперь мы имеем следующий алгоритм:
до 1,2 мс - ничего не горит.
до 1,48 мс - горят огни на крыльях
до 1,84 мс - огни на крыльях + все стробы
выше 1,84 - загорается посадочная фара.

Повесив на крутилку - можем ходить туда/сюда без ограничений.

Доброго времени суток!
Большая работа проделана, уважаю.😃
А можно увидеть итоговую схемку?

Спасибо.

Catsw
alex57russ:

Доброго времени суток!
Большая работа проделана, уважаю.

Она ещё продолжается 😃 Жалко, у Тинки 24ой свободные ноги закончились раньше, чем память 😃 Памяти там ещё 80% свободно - пиши не хочу…

alex57russ:

А можно увидеть итоговую схемку?

Будет время - нарисую для красоты, а так “базовая” схема (как и прошивка) взята отсюда: rcopen.com/forum/f8/topic144500/74
Изменения: все резисторы на светодиоды 150 ом, т.е. вывод - 150 ом резистор - светодиод(ы). Резисторы ТОЛЬКО по одному на вывод (в отличии от исходной) - после них светодиод(ы) на +5в - т.е. если нужно 2…3 светодиода повесить на один вывод - светодиоды в паралель, потом одним проводом на резистор, от него уже на Тиньку. Резисторы можно ставить где удобно по монтажу - я использую 05 СМД резисторы, но можно и на ноги светодиодов обычные напаивать - дело вкуса. Цепь управления - 13 вывод - без изменений. Т.е. вся схема - 2 резистора на 13м выводе, и по одному на всех остальных, за исключением 1-(+5вольт) 4го-(ресет), 13го-(управление) и 14го-(общий).
При использовании одного мощного светодиода (или ключа управления) как “посадочной фары” - выводы 8 и 9 соединяются после резисторов в один провод.