БАНо

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 соединяются после резисторов в один провод.

alex57russ
Catsw:

Будет время - нарисую для красоты, а так “базовая” схема (как и прошивка) взята отсюда: rcopen.com/forum/f8/topic144500/74

Спасибо.
Извеняюсь за глупые вопросы, но судя по схеме для програмирования необходимо подключить определенные ноги на порт (LPT или COM?) так ведь? И еще что за программа используется для прошивки - “АБ”?

Спасибо.

Catsw
alex57russ:

для програмирования необходимо подключить определенные ноги на порт (LPT или COM?) так ведь?

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

alex57russ:

И еще что за программа используется для прошивки - “АБ”?

Algorithm Builder - удобная, простая графическая оболочка для написания под АТТини, к тому же бесплатная. Кстати, схема на КОМ есть там в хелпе. Если вам не нужны исходники - то вам только НЕКс файл нужен с моего архива ну и программатор. При программировании не забудьте подать питание на неё, программатор этим не занимается 😃

МаркАнтоний

Андрей, могу Вам предложить один хитрый ход по уменьшению количества слов в программе. Вот например в подпрограмме main сначала идут 9 строк, которые зажигают светодиоды, а их можно заменить всего на две: $FC -> PortA $07 -> PortB. По смыслу это одно и тоже. В Вашем случае с момента зажигания первого до момента зажигания последнего светодиода пройдёт более 2-х микросекунд, а в моём случае всего 0,7 микросекунд на зажигание светодиодов в порте А и В. Разница в словах, в Вашем163 , в моём 158 слов, и это только начало, ведь можно всю программу причесать. Я понимаю, что в этой программе это не критично, но ведь задачи бывают разные, а памяти из-за таких мелочей может и нехватить.

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

Андрей, могу Вам предложить один хитрый ход по уменьшению количества слов в программе.

Огромное спасибо за идею, только правильно просчитаю какие биты нужно поднимать - ИМХО там не все выводы портов используются, вернее - точно не все, я РЕСЕТ не трогал, где то пробегало, что если его использовать - то больше уже нельзя перешить кристал будет.

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

Я понимаю, что в этой программе это не критично,

Ага, 80% памяти свободно, а ноги все заняты… Может буду какие ключи ставить - тогда ноги 2…3 освободить точно можно будет.

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

Огромное спасибо за идею,

Рад что смог хоть чем то помочь.

Catsw:

я РЕСЕТ не трогал, где то пробегало, что если его использовать - то больше уже нельзя перешить кристал будет.

Програмировать можно будеть, но не SPI програматором. Для этого нужен “высоковольтный” програматор, что это такое сам не знаю, тоже слышал. А SPI програматор использует вывод Reset для начала програмирования, организовав на нём низкий уровень. Поэтому советую подтягивать этот вывод через несколько киломчиков на + питания, это не позволит самопроизвольно ресетиться кристалу.

25 days later
МаркАнтоний

Всех с наступившим Новым годом!!!
Понадобилось тут сделать бано, но возникла маленькая проблемка. Не получилось найти Тини24 и было решено переделать программу под Тини2313. За основу была взята прошивка из поста №182. Несколько часов работы и переделка готова! Выкладываю схему и прошивку.
Вот только думаю что лучше не просто через токоограничивающие резисторы диоды включать, а через транзистор. Так как порт контроллера выдерживает максимум 20 мА, а для нормального свечения диода этого может оказаться мало (в итоге кристал будет спален). Кто, что, по этому поводу думает?

BANO_tiny2313.rar

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

Всех с наступившим Новым годом!!!

Аналогично 😃

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

Вот только думаю что лучше не просто через токоограничивающие резисторы диоды включать, а через транзистор. Так как порт контроллера выдерживает максимум 20 мА, а для нормального свечения диода этого может оказаться мало (в итоге кристал будет спален)

Порт 2313 выдерживает 40мА рабочего тока, так что запас там есть:) Не все диоды 40мА выдержат, у многих ток как раз 20мА. И в ПДФке прямо написано - “линии порта имеют мощный буфер и позволяют подключать ЛЕДы напрямую”. ИМХО пока тут озадачиваться не стоит, тогда уже на стабилизатор тока надо озадачится.
А ИМХО для наших целей фразы “The pin driver is strong enough to drive LED displays directly” хватает с головой 😃

Catsw:

“The pin driver is strong enough to drive LED displays directly”

П.С. Перевод этой фразы в Гугле сразу поднял настроение на 5 баллов:) Цитирую “контактный водитель достаточно сильна, чтобы диск светодиодных дисплеев непосредственно”

alex57russ
Catsw:

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

А меня интересует такой вопрос:
Строб 1 и Строб 2 куда ставятся на самолете???

Catsw
alex57russ:

Строб 1 и Строб 2 куда ставятся на самолете???

В этой теме уже выкладывали описание: rcopen.com/forum/f8/topic144500/7
Там расписана и диаграмма, и показано, где какой строб должен быть!

7 days later
МаркАнтоний

Всем привет. Задался сделать огни для автомодели на основе Тини2313. Вот только столкнулся с проблемой: у меня не получается считать длительность импульсов с двух каналов (это необходимо чтоб сделать поворотники). А ещё подскажите пожалуйста: импульсы на каналах приёмника начинаются одновременно или сначала проходит импульс на первом канале, потом на втором канале и так далее. Буду благодарен за любую помощь или подсказку!

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

у меня не получается считать длительность импульсов с двух каналов

Надо второй таймер использовать, но ХЗ как там с прерываниями будет…

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

А ещё подскажите пожалуйста: импульсы на каналах приёмника начинаются одновременно или сначала проходит импульс на первом канале, потом на втором канале и так далее.

Именно по очереди, что обусловлено длинной ППМ пакета, поэтому и думаю, что со вторым таймером всё получится 😃 Таймера ставим на 2мс переполнение, ставим оба на 8бит = 255 значений, по подьёму запуск, по спаду останов, смотрим сколько насчитал - знаем длину импульса. Ну как то так в теории…

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

Именно по очереди, что обусловлено длинной ППМ пакета, поэтому и думаю, что со вторым таймером всё получится

А, ну если по очереди то и одним можно обойтись! Нужно просто в двух прерываниях его использовать. Ладно, спасибо за ответ. Буду пробовать. Обязательно отпишусь как сделаю.

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

Всем привет. Задался сделать огни для автомодели на основе Тини2313. Вот только столкнулся с проблемой: у меня не получается считать длительность импульсов с двух каналов (это необходимо чтоб сделать поворотники)…

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

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

А, ну если по очереди то и одним можно обойтись! Нужно просто в двух прерываниях его использовать. Ладно, спасибо за ответ. Буду пробовать. Обязательно отпишусь как сделаю.

То же верно! Ладно, ждёмс результатов 😃

МаркАнтоний

Получилось считать длительность импульсов независимо по каналам одним таймером. Но возникла другая проблемма: Длительность канального импульса видимо больше 2-х милисекунд и при максемальных отклонениях стиков всё работает неправильно. Я так понял что происходит переполнеие таймера, он обнуляется и в счётном регистре получается ерунда а не действительное значение длительности! Как с этим бороться я пока не разобрался! Может у кого нибудь есть мысли на этот счёт?

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

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

Да легко! Следующее значение делителя таймера - 256, время переполнения 8 мс (не 2, как в моей схеме), так что точность пострадает в 4ре раза, но зато запас будет, думаю, в вашем случае точность не актуальна:)

Еще одно - а по завершению импульса таймер останавливаете? А после записи в рабочую переменную счётчик таймера обнуляете? А то дальше считать будет 😃 В общем - проверьте на симуляторе эти два условия.

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

Еще одно - а по завершению импульса таймер останавливаете? А после записи в рабочую переменную счётчик таймера обнуляете? А то дальше считать будет В общем - проверьте на симуляторе эти два условия.

И останавливаю и обнуляю, все как полагается! Спасибо за наводку! Буду разбираться.

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

Спасибо за наводку! Буду разбираться.

Да не за что… Если 8мс переполнение, то в вашем случае 2мс = 256/8=32 “тика” таймера, 1мс = соответственно 16. Если чуть точнее, границы будут от 1,5мс (24тика) до 2,5мс (40 тиков) - т.е диапазон 16 тиков. Точность не ахти, но если точно подобрать границы импульса = должна сгодится 😃

Вариант 2 - при работе таймера проверять на переполнение и проводить необходимые действия - например остановить таймер, или декрементировать его.

valera_o

Надо разрешить прерывание по переполнению и в обработчике прерывания устанавливать флаг переполнения. При считывании данных из таймера в переменную по флагу к результату таймера прибавлять 255 или не прибавлять, только надо переменную period(по моей программе) сделать 16-ти битной.

Catsw
valera_o:

Надо разрешить прерывание по переполнению

valera_o:

в переменную по флагу к результату таймера прибавлять 255

Точно! Что то я ступил вчера…