uldemir я посоветовался с человеком который мне набор на часы отправлял, он сказал что визуальные ефекты что на них есть (их там 3 разных) сделаны програмно, вот Спойлер
[9:20:35] Autosave: евгений, здравствуйте. мне нужна ваша помощь, подскажите, как вы сделали плавное зажигание и затухание ламп в часах? мне сейчас помогат сделать спидометр на лампах и есть немного проблем с етим. вы б мне очень помогли если б обьяснили кратко как такой ефект сделали.
[9:20:49] Autosave: http://radiokot.ru/forum/viewtopic.php? ... 5#p2117775 вот тут темка обсуждается моя
[9:58:00] Евгений Сергеевич: Здравствуйте
К сожалению я тут не силен.
Я Я занимался только частью железа, программу мне писали.
[9:58:34] Autosave: тоесть там програмно записанны все еффекты?
[9:58:47] Евгений Сергеевич: Ну да =)
[9:59:33] Евгений Сергеевич: Вообще плавная смена, это шимировнаие высокго.
Да знаю я! Просто не люблю, когда всё пытаются делать программно, хотя в микроконтроллерах теперь столько периферии запихивают, что там можно столько всего наворотить! А большинство этим не пользуется. Даже и пытаются. А еще и не используют прерывания. Стоит мне увидеть в каким исходнике в выводе на индикатор цепочку delay_ms(10); как меня сразу блевать тянет. И не забудьте, вам еще и скорость мерить надо.
p.s. У вас на клавиатуре отсутствует буква "э"? Одолжите у Остапа Бендера, у него, как помню, на печатной машинке не было "е", зато "э" была.
Если есть проблема написать кусок с дин индикацией,я бы присоветовал не обострять внимание на плавной смене, а заняться собственно дин.индикацией и расчетом скорости . Марафетить можно и потом...
Не понятно что там не получается?
В обработчике программы Вы ставите флаг что сработало прерывание.
В основной программе анализируете флаг:
при 1 срабатывании зажигаете 1 лампу, сбрасываете флаг, при втором -гасите ее сбрасываете флаг
при следующем зажигаете следующую лампу и так по кругу для 3 ламп:) .
А зачем опрашивать флаг? Почему нельзя сразу по факту прерывания - вывалиться в прерывание, сделать дело и вернуться обратно в программу заниматься основным делом?
Вот мой обработчик из последнего проекта. Правда у меня анодные ключи управлялись через сдвиговый регистр (у меня копыт не хватало), причем загрузка этого регистра делалась тоже аппаратно (строчки связанные с USISR, USICNT). Опять же загрузка делалась для следующего цикла. Так сказать предзагрузка.
А зачем опрашивать флаг? Почему нельзя сразу по факту прерывания - вывалиться в прерывание,
uldemir, у пиков(как и у АВРов, думаю) вектор прерываний один и нет приоритетов , их можно организовывать в основном цикле=> надо сделать обработку прерывания как можно меньше.
Ели не успеваешь обрабатывать флаги, можно увеличить частоту кристала.
Тем более, им по прерыванию еще ловить импульсы с датчика скорости
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
У старых пиков - тоже. У приведённого фрагмента от MSP430, прерывание от таймера, тоже одно: там можно разглядеть case, который выбирает обрабатывать переполнение счетчика или событие совпадения с регистром сравнения. Так что никто нигде не опаздывает. Более того, я там кое-что еще и подсократил, чтобы не утомлять: в том же прерывании у меня еще запускается АЦП опрашивающий кнопки, декрементируются счетчики разных задержек и еще куча всего. И проблем с потерей прерывания или какой другой задержкой - нет.
А импульсы с датчика скорости надо ловить тоже аппаратно в другой счетчик, который с некоторым периодом надо считывать (что тоже можно и нужно делать аппаратно - есть же счетчики с capture регистрами) и вычислять скорость. Причем период тоже можно формировать аппаратно. Т.е. если подумать, получается просто и изящно. И совсем не надо страдать программазмом. Конечно, надо присмотреть не любимый микроконтроллер, а тот в котором есть необходимые аппаратные средства.
Mishany вам не будет проще если я датчик скорости вам отправлю? его можно подкрутить от дрели или шуруповерта для получения импульсов, возможно будет проще в настройке.
С датчика скорости идут импульсы с размахом 12 вольт (если я правильно помню)- 6 импульсов за один оборот.. их можно "смоделировать" обыкновенным 555 таймером
Небольшое отступление: все автомобильные датчики с электронной начинкой работают по минусу, т.е. у них есть питание 12В либо 5В и выход который подтянут к плюсу резистором как в датчике так и может в эбу, при работе датчика на его выходе появляется минус (земля).
Датчиков мне присылать ни каких не надо, у меня на работе их целая коробка на любой вкус , а импульсы генерировать проще прибором который предназначен для таких целей. ТС, есть возможность установить датчик и посчитать количество импульсов на 1 км? счетчик можно на аттини13 сделать с использованием eeprom с парой кнопок и парой диодов, после замера слить eeprom и посмотреть что там за число... программу написать 5 мин, спаять на проводках навесным мин 15, если датчик будет работать от 5В то вообще замечательно будет.
Последний раз редактировалось Mishany Вс сен 07, 2014 23:02:25, всего редактировалось 1 раз.
Mishany писал(а):. ТС, есть возможность установить датчик и посчитать количество импульсов на 1 км?
Я уже расчёты выкладывал:
Спойлер
Я тут немножко "прикинул"- посчитал, какой сигнал будет приходить от датчика скорости- в общем- если поставить автомобильный датчик скорости- (6 импульсов /оборот) то при скорости 10 км/ч и заданной ТС длине окружности колеса (2145мм) на выходе датчика скорости будет частота 15,4 Гц - при времени измерения 0,6435 секунды на индикацию прямо выведется скорость. Пробег 1 километр будет соответствовать 5594 импульсов.. Конечно, при малой скорости точность измерения будет низкой, но при скорости где- то больше 10 км/ч- вполне приемлемой..
ТС в самом первом сообщении "выдал" исходные данные..
Mishany писал(а):а расчеты с учетом давления в колесе,
А ОНО НАДО?- для того, чтобы точно измерять скорость- есть спутниковый GPS или ГЛОНАСС, а при измерении скорости в авто и мото технике точность "плюс- минус километр" - нормальное явление- ни один автомобильный спидометр не показывает скорость ТОЧНО.. - у меня, например, спидометр показывает 80 км/ч, а навигатор- 75... Это как раз и есть РАЗУМНАЯ ДОСТАТОЧНОСТЬ- иначе пользователю придётся тарировать спидометр каждый раз, как он подкачает колесо или сменит резину.. - а как учитвать износ резины?- а он довольно значительный- например, с новой резиной показания спидометра будут точными, а при износе он начнёт завышать показания.. Так что- нет смысла- надо делать расчётные величины, а то, что при недокачанных колёсах или изношенной резине спидометр будет завышать показания- на это не стоит обращать внимания..
Еще вопросик к ТС: показания общего пробега не нада? только суточный? И как программа должна это понимать?
если суточный тогда он должен сбрасываться, вот только чем или кем? Геркон в корпус и магнитиком?
Mishany писал(а):показания общего пробега не нада? только суточный? И как программа должна это понимать?
если суточный тогда он должен сбрасываться, вот только чем или кем?
Ну, ТС писал, что ОБЩИЙ пробег ему не нужен, а только суточный.. Ещё он собирался ставить какой- то "БОЛЬШОЙ ТУМБЛЕР" в одном положении которого показывалась скорость, в другом- ПРОБЕГ.. В принципе, можно сделать так, что при положении тумблера "пробег" при выключении (или при включении) зажигания счётчик пробега обнулялся, а в положении "скорость"- не обнулялся..
Во вторник буду пробовать запустить на железе динамическую индикацию с плавной сменой циферок
Еще просьба к ТС если уже есть датчик уровня топлива, замерить сопротивление датчика от пустого до полного бака с градацией в 1 литр.
Mishany писал(а):Еще просьба к ТС если уже есть датчик уровня топлива, замерить сопротивление датчика от пустого до полного бака с градацией в 1 литр.
Не советую к такой точности стремиться- надо мерить в "полбаках"- как в автомобиле.. И, судя по всему- ТС будет использовать датчик от автомобиля.. Скажем, от наших- они практически однотипные, основная разница в длине поплавка.. Вообще ТС, по- моему, больше всего подойдёт УАЗ- овский или Волговский/газовский датчик- типа такого: http://www.konsulavto.ru/cat/avtozapcha ... avtopribor (есть и более "длинные" варианты..)
Для спидометра было бы интереснее считать не частоту импульсов с датчика, а период их повторения, меньше будет период обновления информации... И нужно небольшое усреднение показаний за некоторый период - что бы "стрелка не скакала"...
Mishany да, АлександрЛ все более менее правильно расписал. на деле у меня посчитать данные не получится, движок разобран до винтика и готовится к пескострую и координатно расточным работам и работы по нему если честно очень много, движок старый, будет много механических доработок по нему, плюс надо менять поршня с кольцами и все клапана и гнезда на них растачивать а-то ржавчиной взяло... ну в общем до зимы думаю управится.
Если можно то обнуление датчика сделать от нажатия кнопки, я выведу себе маленькую кнопочку гдето в незаметном месте под баком. Мот я для себя делаю, и исходя из алгоритма моих типичных действий - суточный пробег я использую скорее чтоб знать расход топлива на километраж или расстояние по городу от точки а до точки б и среднюю скорость с которой я перемещаюсь. как одометр - пользусь редко, только в дальних поездках
Я же уже писал- на какие "константы" нужно опираться-
Спойлер
при скорости 10 км/ч и заданной ТС длине окружности колеса (2145мм) на выходе датчика скорости будет частота 15,4 Гц - при времени измерения 0,6435 секунды на индикацию прямо выведется скорость. Пробег 1 километр будет соответствовать 5594 импульсов..
То есть- берёте программу от какого- нибудь примитивного частотомера, только период счёта делаете- 643,5 Миллисекунды (644), а пробег- считатете же импульсы- как только насчитается 5594 - в счётчик пробега прибавляется единица..