Обсуждаем контроллеры компании Atmel.
Ответить

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

Пт янв 04, 2019 19:28:18

Хочу собрать автомобильный компьютер на Ардуине. Среди функций: часы, GPS логгер, возможность вводить и запоминать данные о заправке с клавиатуры, считывать уровень топлива с штатного датчика и т.д. Как часть алгоритма, нужно получать данные с датчика скорости, т.е. счетчик импульсов. Т.к. нагрузка на контроллер большая, то, вероятно, программные варианты будут пропускать импульсы. По этому хотелось бы счетчик выполнить аппаратно, чтобы считывать с него данные в любое удобное время. Как вариант I2c или что-то подобное. Какие варианты можно рассмотреть?

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Пт янв 04, 2019 20:10:15

PCF8583/PCF8563
Смысл микрухи в том, что она может считать импульсы по осциляторному входу.
В режиме счетчика можно вытаскивать насчитанное по I2C с защелкиванием результата из всех регистров при чтении первого.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Пт янв 04, 2019 21:09:41

DS1672 вот спецмикросхема.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 06:22:12

Ок, спасибо, буду изучать.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 07:31:41

не знаю, есть ли это в ардуине, но в мегах точно есть:
1) завести сигнал на ногу прерывания, можно даже само прерывание не включать, а только флаг его иногда проверять (с частотой не ниже частоты максимальной скорости) и сбрасывать.
2) можно один из таймеров под счетчик отдать...

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 08:10:26

не знаю, есть ли это в ардуине, но в мегах точно есть:
1) завести сигнал на ногу прерывания, можно даже само прерывание не включать, а только флаг его иногда проверять (с частотой не ниже частоты максимальной скорости) и сбрасывать.
2) можно один из таймеров под счетчик отдать...


Вот как раз насчет максимальной скорости и есть сомнения, а если контроллер будет занят, тогда импульс потеряется, счетчик будет врать в минус.
А насчет таймеров - не знаю, я недавно с микроконтроллерами разбираюсь. Можно ссылку?

Добавлено after 2 minutes 21 second:
Насчет тех двух таймеров. Посмотрел даташиты. Судя по ним, это часы. Счетчики кварца с декодерами под дату и время. Как перевести их в режим просто счета я не нашел... :( К тому же DS1672 только под 3.3 вольта, там еще питание надо отдельно городить. Может я что-то недочитал?

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 08:17:46

neo-m8 - часы, GPS и горизонтальная скорость.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 09:32:55

Питание отдельно городить нет необходимости. Там два пина питания . Основной и бекап батарея с возможностью зарядки.
Счетчик 32 битный. Может работать автономно и только по требованию можно проверить что он там насчитал и сбросить.
Что мешает завести сигнал для счета на OSCIN.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 15:05:05

Tehnikr писал(а):Т.к. нагрузка на контроллер большая, то, вероятно, программные варианты будут пропускать импульсы.
Почему не выбрали более мощный контроллер?
Они разные есть. И с аппаратным подсчетом импульсов и с частотой тактирования 400 МГц и больше.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 17:17:28

Почему не выбрали более мощный контроллер?

Потому что адурина. Для более мощного надо самому хоть что то уметь делать...

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 19:39:44

На ардуине все само делается?

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Сб янв 05, 2019 20:19:39

Потому что адурина...
потому и не хватает ресурсов.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 08:25:06

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

Добавлено after 23 minutes 4 seconds:
т.к. аппаратный PWM у тебя не задействован, то и таймеры (кроме того, что миллис считает) скорее всего свободны, почитай про таймер 1, (попробуй обратиться к его регистрам напрямую, как к переменным) прикинь, на какую ногу ардуины выведен его счетный вход. этот таймер 16 битный, а потому даже при частоте импульсов 1кГц его можно раз.в минуту опрашивать. таймер считает покругу, это значит что его можно не сбрасывать, а просто вычитать старые показания из новых (если при этом разность ляжет в 16 битную переменную,ито и в случае переполнения таймера ошибки не будет).

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 09:09:16

Адуринки тоже РАЗНЫЕ бывают.
Соответственно и задачи под соответствующие платформы.
В принципе подход верный - обработчик периферийными задачами реального времени заниматься не дложен - дело "головы" считать и команды выдавать (даже не интерфейсом пользователя заниматься - на то своя "видеокарта" должна бысть по-максимуму).
Только вот для подобных конструкций...
Знание только адуринки явно маловато будет...
Ибо периферию надо также САМОМУ творить из разношерстных подручных МК ВСЕХ типовых семейств (то, что наиболее удобно из имеющегося в доступности) да предпочтительно под ассемблером...
8)
А такой вариант даже Мурик вряд-ли решится сделать.
:tea:
:wink:

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 09:58:30

Вообще, тут да, скорее принципиальный вопрос. Задачи реального времени - независимая аппаратная реализация. А насчет мощности, мне кажется ее тут за глаза, при правильной реализации. Запросил значение десятка датчиков, отправил их на экран, точнее.2 экрана и скинул на SD карту.

Добавлено after 1 minute 31 second:
Про таймеры почитаю, про счетчик тоже.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 11:58:59

BOB51 писал(а):Ибо периферию надо также САМОМУ творить из разношерстных подручных МК ВСЕХ типовых семейств
Периферия (по отношению к процессорному ядру) аппаратная и находится внутри МК, а не программная. Речь не про внешние микросхемы по отношению к МК.

BOB51 писал(а):да предпочтительно под ассемблером...
Медленно (разработка) и не переносимо между МК с разными ядрами.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 12:22:53

А насчет мощности, мне кажется ее тут за глаза, при правильной реализации. Запросил значение десятка датчиков, отправил их на экран, точнее.2 экрана и скинул на SD карту.

А что уже работает? Просто в начале еще говорилось про часы, GPS, клавиатуру, шансы все это реализовать начинающему, не важно на чем, меньше 1%.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 12:52:22

Часы работают и макетка датчика уровня топлива. GPS - там тоже просто, сам модуль дорогой, еще не купил. В ближайших планах сд карта и отдельный экран под часы, жду модули.

Добавлено after 5 minutes 9 seconds:
Вообще, основная задача - gps логер + точный датчик скорости + рассчет реального расхода топлива. Скорость + пробег будут считаться на совместных данных gps и датчика пробега.

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 13:04:44

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

Re: Аппаратный счетчик импульсов на I2C для Ардуино.

Вс янв 06, 2019 19:51:30

у ардуины есть преимущество, которое особо ценят новички: куча ( и доступность) библиотек под всякую периферию и настраиваются они довольно просто...
Ответить