Jump to content

demiurg1978

Members
  • Posts

    355
  • Joined

  • Last visited

Reputation

46 Обычный

Информация

  • Город
    Новосибирск

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Новосибирская область
  • Оборудование
    Промышленное оборудование

Recent Profile Visitors

2210 profile views
  1. С числами проще работать в шестнадцатеричном коде. Преобразование нужно делать только при выводе на дисплей. Действия с числами зависят от интерфейса. То, как вы работаете с числами и как вы их выводите. Поразрядное, более ресурсоемкое. В своих проектах я использую в параметрах шестнадцатеричные числа. И для вывода, редактирования приходится использовать двойное преобразование. В десятеричное, для вывода на дисплей, и обратно в шестнадцатеричные, чтобы в этом виде и сохранять в параметрах устройства. Поразрядное редактирование мне пришлось делать 1 раз, когда это было жесткое требование. Лично я старался работать напрямую с шестнадцатеричными числами. Преобразование делалось только для вывода на дисплей. Мой пример, как это было сделано у меня. Может и не так оптимизированно, но тогда я решил так. void change_recipe_parameters (void) { u16 a = 0; switch (cnt_blink_char) { case 1: change_num_recipe (); break; case 2: change_num_component (); break; case 3: if (++tmp_num_str_buf [6] > 0x39) // Тысячи. tmp_num_str_buf [6] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [6] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; case 4: if (++tmp_num_str_buf [7] > 0x39) // Сотни. tmp_num_str_buf [7] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [7] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; case 5: if (++tmp_num_str_buf [8] > 0x39) // Десятки. tmp_num_str_buf [8] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [8] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; case 6: if (++tmp_num_str_buf [9] > 0x39) // Единицы. tmp_num_str_buf [9] = 0x30; a = weight_to_int (); if (a > 5000) { tmp_num_str_buf [9] = 0x30; a = weight_to_int (); } info_parameters. tmp_components [info_parameters. tmp_num_component] = a; break; } rerun_blink_noblank_char (); rst_out_mode_work (); } В том проекте у меня было так: ХХ ХХХХ где первый х - это номер рецепта, второй х это номер компонента, и последние четыре икса это значение веса от 0 до 9999. Вывод я делал сразу в ASCII кодах, поэтому несколько заморочно. Также в том проекте было только кольцевое приращение числа. И если 9, то сброс в 0. В вашем случае еще придется проверять, в какую сторону идет редактирование. Инкремент или декремент. После каждой операции сразу идет преобразование числа в шестнадцатеричное. Комментарии какие есть, я сейчас занят. Небольшое пояснение могу показать только на видео. Если найду.
  2. ТипаТроник. Так ваша конечная цель? Что вы хотите?
  3. Оппа. Признаю. Схему бегло глянул и на этом успокоился. В схеме ещё нет сброса счётчиков при подаче питания.
  4. Смотрите внимательно графики. Паузы не будет. Счётчики переключатся почти синхронно плюс задержка (смотрим даташит, сколько это) на первом счётчике. Светодиоды будут светиться, ессно, жручие не стоит ставить. Если яркости не хватит, тогда ставьте повторители уровней с повышенным выходным током.
  5. График работы К561ИЕ8 Ну вы и сами могли набрать в поисковике "К561ИЕ8". Не так ли?
  6. Берете справочник по цифровым микросхемам и смотрите таблицу истинности. На каждую микросхему есть графики работы и таблицы истинности. Берете и курите. И поверьте, вы сэкономите время нам и себе. Тем, что научитесь САМИ изучению этих микросхем. Что за мода, кидаться на форумы за вопросами, ответы на которые вы самостоятельно найдёте в книжках? Лень? Ну да, мозг ленивая скатына. Это не эмоции. Не лично. Вы не первый и не последний. Когда нибудь сами спасибо скажете за мой ответ.... Схемы либо умеете читать, либо нет. Тогда это не ваша тема. Смириться и двигаться по тому направлению, которое вам доступно.
  7. Конечные автоматы. Состояния: KBD_INIT. Инициализация. KBD_WAIT_DOWN. Следим за нажатием. Если не нажато, выход. Если нажато, установка программного таймера на 20-40 мс, выход. Установка состояния KBD_DOWN. KBD_DOWN. Если время не вышло, выход. Если вышло, проверка нажатия. Если не нажато, то помеха, установка состояния KBD_WAIT_DOWN. Если нажато, установка флага, события, что короткое нажатие. Установка таймера длительного нажатия и состояния KBD_HOLD_REPEAT. Ну и так далее, смысл понятен.
  8. Народ. Не пси*****те. А подумайте. Я вас поматерю. Вот вы мыслите хер пойми с какой позиции. Текущая позиция автоматика. А вы лезете в какое то непонятное усложнение. Всё можно сделать на логике. Достаточно прочитать книги Шило. К примеру. И все будет тупо и просто. МК. Да, я решу большинство ваших задач на мк. Но! Также я решал бы тупо и просто. Просто ваше мышление завело вас куда то непонятно куда. И кажется я понял проблему. Аналоговая техника. Цифровая техника. Это две большие разницы. Алгоритмы. Это цифровая техника. И не вздумайте вешать алгоритмы аналоговой техники на цифровую. Есть алгоритм, - ы, начинайте изучать цифровую технику. Логику. Поверьте, где начинаются алгоритмы, аналоговая электроника отдыхает. Именно в этом ваша ошибка. И это не ваша вина. Это нужно понять и осознать. Автоматика, значит меняйте мышление. Тупо и просто.
  9. F_CPU - тактовая частота микроконтроллерах, который будет работать в железе. Эта константа нужна для корректного задания временных интервалов и констант. К примеру в функциях delay. В формуле расчёта значения для UART и так далее. UL - unsigned long. Это нужно для того, чтобы компилятор не оптимизировал константу по своему хотению и разумению. Грубо, примерно, как-то так...
  10. А вы замеры делали на отсоединенных датчиках, или подключённых к плате? Возможно вы впопыхах воткнули разъём наеборот. Могли ткнуть во включенную плату, понять что перепутали, выткнуть и обратно нормально воткнуть. Выше уже написали. Возможно в плате проблема. Варианты возможны.
  11. Дарю схему. Примечания по схеме: для подбора требуемой частоты подбираете конденсатор. Точка A подсоединяется к точкам A1 или A2, в зависимости от типа датчика скорости, от какого напряжения он запитывается. От 5 вольт (точка A1) или от 12 (точка A2). Предполагается, что у установщика моталки руки растут откуда нужно. И в плане спаять эту схему и в плане установки моталки на автомобиль. Автор не несет никакой ответственности за любой возможный ущерб. Все на вашей совести. Соблюдайте правила электромонтажных работ. Сечение проводов не менее 0,35 мм2. Лучше всего использовать провод с двойной изоляцией (к примеру, МГШВ). Наружняя изоляция пластик, внутренняя шёлк, тряпичная. Плавкий предохранитель ОБЯЗАТЕЛЕН и устанавливается как можно ближе к подключаемой цепи.
  12. А это в данном случае уже лишнее.
  13. 1 - А что было под руками. 2 - Отработка технологии. Идеи. Универсального генератора импульсов. 3 - Отработка схемотехнического решения. Питание МК от автобильной бортовой сети. 4 - Ну и параллельно подработать, раз такая оказия случилась с подмоткой. Когда клиент позвонил, эта коробочка была уже собрана. Под другие задачи.
  14. Нужную частоту на конкретный автомобиль задал один раз и заклеил отверстия под кнопки скотчем или изолентой...
  15. Смотрю, сообщение относительно свежее. Как вы все любите как бы простые схемы. Да ещё на 555 таймер, с лишним обвесом. А без соответствующих цепей ещё и летят. Потому что напрямую подключаются к бортовой сети. Я раньше работал автоэлектриком. И ещё в 90-х у меня был случай. Попросили посмотреть подмотку спидометра. Выяснилось, что сгорел 555 таймер. Точнее ви1006. Не суть. 555 тоже были пациентами. В итоге я стал использовать следующую схему. Параметрический стабилизатор, задающий генератор на к561тл1. На этой микросхеме делается самый простейший мультивбратор в мире. Резистор и конденсатор. Все. С выхода задающего генератора на транзисторый каскад по схеме открытый коллектор. Все. Схема работоспособная, работает пожизненно. Можно применить и зарубежный аналог к561тл1, но следует учитывать что параметры зарубежных аналогов хуже. Наша, советская, работает в широком диапазоне питающего напряжения. До 15 вольт, но, лучше ограничиваться 12 вольтами. И частотозадающий резистор можно применять в большом диапазоне. До мегаомов. 4,7 МОм переменный резистор работает на ура. Аналоги в этом плане хуже. Позже я стал делать моталки на мк AVR. Буквально на днях мне звонят, просят сделать очередную моталку. Именно этот клиент обращается ко мне периодически, более 10 лет, как бы даже не 15 лет. Просит сделать очередную моталку Все мои моталки работают до сих пор. По его словам, мой знак качества стоит. Я сейчас как раз занимаюсь изготовлением моталки. МК AVR. Частота задаётся кнопками. И результат изменения частоты сохраняется в EEPROM. Такое решение вызвано тем, что переменные резисторы с годами дохнут. Окисляется резистивный слой. Также Окисляются, ржавеют металлические детали.
×
×
  • Create New...