• advertisement_alt
  • advertisement_alt
  • advertisement_alt
G

Советы для грамотной архитектуры прошивки.

32 сообщения в этой теме

3 часа назад, oldmao сказал:

 Отдельно делаем опрос датчиков, например 1-Wire, где критичны временные интервалы, с запретом остальных прерываний на время работы с датчиком. Это миллисекунды, пропуск даже пары тактов динамической индикации глазом будет не заметен. 

не заметен, говорите? на форуме как минимум можно найти 5-6 тем , где все заметно и даже очень...

к слову прием/передача одной команды в  ds18b20  составляет  9,6мс этого вполне достаточно получить мигание индикатора, при неправильно составленном коде.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, GDK сказал:

@IMXO , там 3 октавы, я не разбираюсь в этом, это до 2 кГц? Ну и МК там... напр.   14кбайт - память программ, 368 байт - опер. память, а у меня 4к и 168 байт соответственно. Там ОСРВ, в мой МК наверное не влезет.

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

ОСРВ влазит даже в pic10f222

а вот нужна она вам или нет это решать вам, в конечном счете ваша хотелка все равно придет к использованию конечных автоматов или ОСРВ,

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
53 минуты назад, IMXO сказал:

к слову прием/передача одной команды в  ds18b20  составляет  9,6мс этого вполне достаточно получить мигание индикатора, при неправильно составленном коде

Вот именно, при неправильно составленном.

А неправильно составляется он обычно при невнимательном чтении документации.

А при внимательном становится ясно, что критичным для протокола 1-wire интервалом является всего-навсего от 15 до 65 микросекунд. Запрет прерываний на такое время заметить невозможно.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня между циклами динамической индикации и опроса кнопок (каждые 20 мсек) программа успевает опросить DS18B20, преобразовать значение в готовые байты для засылки в 74HC595 (сегменты индикатора), проверить состояние кнопок. При тактовой 8 МГц не было ни одного пропуска циклов индикации, при тактовой 1 МГц один цикл пропускается. Но поскольку опрашиваю термодатчик 1 раз в 3 секунды, то это абсолютно незаметно.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, IMXO сказал:

ОСРВ влазит даже в pic10f222

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

Изменено пользователем GDK
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В ОС реального времени спящего режима не может быть по определению. Интересно, что будет удерживать реле управления насосом во время сна процессора? И сколько там по даташиту требуется тактов для гарантированного запуска кварцевого или встроенного RC-генератора при выходе из сна?
Экономить энергопотребление имеет смысл только при батарейном питании, а тут явно сетевое, смысла нет.

Изменено пользователем oldmao
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, GDK сказал:

Мне показалось, что 16LF1823 справится

Легко. Сразу запускайте на 32 МГц и будет много свободного времени ;)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сообщения

    • @Yurkin2015 Вот тут подробное описание работы схемы задержки. В оригинале статьи есть и видео работы собранного устройства (включение и выключение вентилятора)  Благодарю за комментарий. Но по Datasheet, всё правильно! Транзистор BD-876 p-n-p Реле времени.rar
    • Восточная мудрость, однако...
    • https://ru.aliexpress.com/item/New-Microsoft-Mouse-2-4Ghz-Flexional-Foldable-Wireless-Computer-Mouse-Folding-Arc-Touch-Mouse-fold-mouse/32807000153.html?s=p&ws_ab_test=searchweb0_0%2Csearchweb201602_4_10152_10065_10151_10068_10136_10137_10060_10138_10155_10062_10156_10154_10056_10055_10054_10059_10099_10103_10102_10096_10148_10147_10052_10053_10142_10107_10050_10051_10170_10084_10083_10080_10082_10081_10110_10111_10112_10113_10114_10181_10078_10079_10073_10070_10123_10127_10124_10125%2Csearchweb201603_2%2CppcSwitch_5_ppcChannel&btsid=a35a2d8d-64b8-4609-9669-84b75ab5e055 Не?
    • Добрый день, Сергей. Скажите пожалуйста, во сколько обойдётся кольцо R63*38*25,из недорогих Epcos, в г. Ростов на Дону.
    • Всем доброго времени суток! 
      Дано: фотоэпилятор (китай), попросили отремонтить, проблема: при нажатии на кнопку не происходит поджига импульсной газоразрядной лампы. До этого не включался вообще,бп уходил в защиту, заменялись: транзистор стоящий в цепи ВВ (высоковольтного) трансформатора, заряжающего ВВ электролиты, и диод на выходе с того же трансформатора на ВВ электролиты. Транзистор заменил той же фирмы но с большим током, диод был SMD заменил на выводной  аналог(указал на фото). Аппарат стал запускаться, но как я уже говорил нет реакции на кнопку которая в свою очередь дает команду на поджиг лампы. Заметил такую особенность при включении аппарата, загораются индикаторы включения и частоты вспышек, если поднести палец к обмоткам трансформатора заряжающего ВВ электролиты (обозначен на фото ) то индикаторы частоты вспышек начинают моргать и в таком режиме если нажать на кнопку пуска, то аппарат работает и лампа начинает делать вспышки... за что собственно и хочу спросить, а точнее прошу разъяснить почему так происходит? 
      P.S. Сильно прошу не пинать я не гуру в этом деле, а только учусь. Заранее спасибо!
  • Похожие публикации

    • Автор: KushlaVR
      Здраствуйте. Возникла необходимовсть управления несколькими устройствами разных производителей с помощю одного елемента управления.
      В качестве управлялки нужно использовать Sony RM-X6. и сенсорний монитор с виходом формата NEC (на дисплее есть кнопки и когда в их нажымать - транслирується команда)
      Управление осуществляєтся с помощю устройства (которое мне нежно разработать). С протоколом NEC - разобратся получилось (есть куча примеров).
      А вот протокол Sony rm-X6 темный ящик. Такое ощущение что ето обичний UART...
      Значит вопрос собственно такой:
      1) Помогите распознать что за протокол?
      2) Помогите составить алгоритм по распознанию (контроллер Atmega8 тактовая частота внутреннего генератора 8МГц)
      3)Возможнор ктото уже работал с ним, и готов поделится примерами...
      П.С.
      Усилографа нет... Снял сигнал с помощю звуковой карточки (в формате waw). Результат можна посмотреть вот тут:
      drive.google.com/folderview?id=0B-SmX6iwS8HeT3NYSXlYQzJMY2M&usp=sharing
      (извините, waw не могу прикрепить к теме, потому разшарил папку. Если у модераторов есть возможность, то прикрепите, буду благодарен)
      Спасибо всем за внимание и помощь....
    • Автор: Grandfiesto
      Поступило задание разработать цифровой тахометр с такими параметрами:
      1. Диапазон измерений - 0-12000 об.мин.
      2. Тип датчика - Герконовый.
      3. Разрядность АЦП - 12 разрядов.
      4. Напряжение АЦП и микроконтроллера - 5 В.
      5. Скорость серийного порта 9600 бит/с.
      6. Кол-во импульсов датчика за один оборот - 3.
      Разработка программы в среде IDE, желательно на C.
      Разработать алгоритм.
      Задание завело в тупик. Очень нужна помощь!
    • Автор: Arthur
      Короче посетила меня идея (с таблеткой эспумезана), имеется дисплей MT-12864A-2FLA по сути он ничем наверное не отличается от LGM12641BS1R у них такие же контроллеры стоят. Рисовать растр, согласитесь это занимает очень много места в памяти микроконтроллера. И задумался я написать драйвер для него (аля векторная графика), задаю точку 1 и точку 2 а он чертит сам мне линию. Алгоритмы уже есть, написаны за долго до меня, за основу взял алгоритм Брезенхема. Написать программу это пол беды, столкнулся я с такой проблемой, ведь дисплей по сути разбит на два сектора (кристалла) по 64 столбца. и если допусти мне надо поставить одну точку в одном кристалле а другую в другом, программа то расчитает мне точки линии, но как мне сделать перенос с одного кристалла на другой?
      Дальше еще думаю, как быстро он будет делать расчёты. всех точек. и на сколько быстро он прочертит одну линию.
      Конечно я лезу в дебри если честно и наверника уже есть такие дисплеи со встроенным контроллером, которому эту программу не надо писать, и дисплею нужно лишь подать координаты двух точек (графический контроллер) но я пока такие дисплеи не нашёл, может не там искал.
    • Автор: Pragmatik91
      Здравствуйте! Ситуация такая: нужно разработать микропроцессорную систему измерения температуры с цифрового датчика tmp03 и передать результаты через UART. Подключил датчик, написал программу считывания:

      0016 14 RDTMP: ;Подпрограмма чтения датчика
      00B0 15 TMPIN bit P3.0;Порт связи с датчиком TMP03
      0040 16 T1H data 40H;Определение места хранения старшего байта T1
      0041 17 T1L data 41H;Определение места хранения младшего байта T1
      0042 18 T2H data 42H;Определение места хранения старшего байта T2
      0043 19 T2L data 43H;Определение места хранения младшего байта T2
      0016 758911 20 mov TMOD,#11H;Задание 16-разрядного режима работы таймеров
      0019 758C00 21 mov TH0,#0;Обнуление таймера 0
      001C 758A00 22 mov TL0,#0;Обнуление таймера 0
      001F 758D00 23 mov TH1,#0;Обнуление таймера 1
      0022 758B00 24 mov TL1,#0;Обнуление таймера 1
      0025 30B0FD 25 WT1: jnb TMPIN,WT1;Ожидание перехода входной величины
      в высокое состояние (начала T1)
      0028 D28C 26 setb tr0 ;Запуск таймера (для замера T1)
      002A 20B0FD 27 WT2: jb TMPIN,WT2;Ожидание перехода входной величины в
      низкое состояние (конец T1, начало T2)
      002D C28C 28 clr tr0 ;Остановка таймера
      002F D28E 29 setb tr1 ;Запуск таймера (для замера T2)
      0031 30B0FD 30 WT2E:jnb TMPIN,WT2E;Ожидание перехода входной величины
      в высокое состояние (конец T2)
      0034 C28E 31 clr tr1 ;Остановка таймера
      0036 22 32 ret ;Возврат из подпрограммы Теперь мне нужно преобразовать считанные данные с датчика. Преподаватель сказал взять температуру 23 градуса для примера. Формула для рассчета температуры исходя из количества считываемых импульсов такая: T©=235-((400*T1)/T2). Нужно написать алгоритм и подпрограмму.
    • Автор: Dan_Rudenko
      Доброго времени суток, поставлена задача написать программу для рассчета конструкции СВЧ-фильтра (регулярный волновод-запредельный волновод - резонатор - запредельный волновод - регулярный волновод), читал несколько книг, например - Капилевич Б.Ю. - волноводные диэлектрические фильтры, все равно не могу понять в чем методика, входные данные у меня - значения полей в областях, как составить матрицу, а затем как получить из нее АЧХ