Список разделов Flyback.org.ru » не HV » Микроконтроллеры и всё, что с ними связано
Тему сейчас просматривают - зарегистрированных: 0, скрытых: 0 и гостей: 0
Зарегестрированные - Нет
Ответить с цитатой

abap
 


Функционал довольно прост. Нажимает кнопку, включается механизм насыпа корма, например на 30 секунд (придумаю механику). Камера нужна чтобы:
1. Видеть пусто ли в миске.
2. Видеть что очередная доза корма точно подана, а если что-то подзависло, чтобы не пытаться еще раз нажать кнопку. Перекормить нельзя, у кошки курдюк уже вырос. )

Раз в минуту кидать фото можно, но это вед какой-то мини комп уже нужен, чтобы обрабатывать фото и выкладывать кудато.

Добавлено: Mon Aug 30, 2021 4:30 pm
Ответить с цитатой

Николай
 


ip камеры умеют сами фото слать на фтп\почту. по крайней мере многие

Добавлено: Mon Aug 30, 2021 4:43 pm
Ответить с цитатой

Кейс
 


Ну, какие-то вычислительные мощности нужны будут полюбому - хоть vpn держать, хоть upnp анонсировать... Я бы написал какую-нибудь админку на белом адресе, отдающую клиенту команду на кормление или начало видео трансляции. Клиент бы поднимал порт, скидывал его в админку и мапил бы его на камеру в локальной сети...

Добавлено: Mon Aug 30, 2021 4:52 pm
Ответить с цитатой

Николай
 


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

проще заказчику (бабе) сказать что без белого ip или нового роутера не получится. и все. выбор за ней. если кошка не стоит 100руб в мес за белый ip или 2тр единовремннно за бу роутер - так мож пусть жрет из большого ведра бесконечного ))

рабочее время и силы на настройку извратов выдут дороже роутера....

Добавлено: Mon Aug 30, 2021 4:59 pm
Ответить с цитатой

abap
 


Николай писал(а):
рабочее время и силы на настройку извратов выдут дороже роутера....
Согласен.

Предложу другой роутер.
Всем спасибо!

Либо ESP8266+Blynk, но без видео. Вот еще придумал: Эта связка ведь умеет и считывать с GPIO и передавать в смартфон? - Можно же сделать датчик потока корма и передавать в смартфон - если после кормежки сработал датчик, значит жрать реально подано.

Добавлено: Mon Aug 30, 2021 6:12 pm
Ответить с цитатой

Ivani
 


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

Добавлено: Mon Aug 30, 2021 10:17 pm
Ответить с цитатой

Spiriter88
 


abap писал(а):
Есть идея сделать кошкокормилку для сестры супруги с визуальным контролем.

1. У меня были дома (достались от старых жильцов) обычные дешманские камеры по 1000р., цеплялись к регистратору 3-4 т. рублей. Регистратор был доступен из любой точки мира через свое приложение. Без, white IP, VPN и прочего. Думаю и IP камер таких навалом.
Облако ни облако, не знаю, просто работало.
2. Сейчас когда надо посмотреть за собаками, я просто использую teamviewer на моноблоке, камера встроена. Более того, такое можно и на смартфон поставить.
3. Есть уже и домашние сигнализации с камерами, аякс кажется, там и исполнительные устройства есть. И каких только камер не делают в китае, даже в форме обычной лед лампы.
4. Очень неплохие вайфай реле сонофф, недорого и работает. Тоже из любой точки и по расписанию.

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

И кошка это живое, ей общение тоже нужно. И контроль. Инженерная задача хороша, но для теплицы или цветов. А кошку надо друзьям, знакомым, родным, соседям. Или пусть приходит кто то. Есть и гостиницы для них. Есть даже кафе приют. Думаю можно договориться. Да и с собой можно взять.

Добавлено: Mon Aug 30, 2021 11:01 pm
Ответить с цитатой

N1X
 


abap писал(а):
Можно же сделать датчик потока корма и передавать в смартфон -
Купи тензодатчик с ацпхой на алике, в виде шилда к ардуйне. Обнулил показания, сыпанул корма, посмотрел чтобы насыпалась норма - профит Smile

Добавлено: Tue Aug 31, 2021 8:43 am
Ответить с цитатой

главный колбасист
 


У меня такое для зверья. по принципу поилки для птиц.ничего лишнего.

Добавлено: Tue Aug 31, 2021 9:21 am
.jpg (104.14 Кб)

Ответить с цитатой

Электромонтёр
Экспериментатор


Народ, где нарыть русскоязычную документацию по опциям gcc? Вот я расковыриваю сорцы а там

ARCH_CFLAGS = \
-ffixed-r8 \
-marm \
-march=armv5t \
-mno-thumb-interwork \
-mabi=aapcs-linux \
-msoft-float \
-fno-stack-protector

Часть из них впервые вижу. Вот -ffixed-r8 что это? Что делается с регистром R8? -march=armv5t архитектура ARM v5. Что означает буква t? -mno-thumb-interwork а это что? -mabi=aapcs-linux чё за херь и при чём тут линух? -fno-stack-protector совсем не понял - нет защиты переполнения стека или что-то ещё?

Добавлено: Tue Aug 31, 2021 12:35 pm
Ответить с цитатой

Spiriter88
 


А ПЛК типа сименс лого никто не эксплуатирует здесь?

Есть лифты. Есть даже специальные лифтовые блоки, для связи с ними. Умеют и подключится по CAN или другим (зависит от лифта) шине к плате управления лифтом и шлют
на сервер информацию по UDP. Вполне серьезное решение. А душа хочет что то свое попроще и дешевле. Но не ардуино или еще какой самодел, а что то на дин рейку уже готовое. Что бы могло считывать хотя бы логические входы или лучше CAN и другие шины и слать емейл, пакеты UDP на сервер или СМС.

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

Добавлено: Sat Sep 11, 2021 1:31 am
Ответить с цитатой

Электромонтёр
Экспериментатор


Шнайдер программируемые реле на =24В только не ставь. Схемотехника говно - на входах атмеги резисторные делители вместо оптронов. Сименс лого на (=24В?) тоже оказывается без опторазвязки входов, вот это новость! https://cs-cs.net/logicheskie-rele-siemens-logo-ustoistvo Овен ПР200 по докам имеет гальваническую развязку - но на фото нижней стороны основной платы нет https://cs-cs.net/owen-pr100-pr102-pr200-pt1-ustroistvo-vozmojnosti

Мой самодельный ПЛК и то безопасней программируемых реле шнайдера и сименса - у меня стоит опторазвязка входов и выходов и изолированное питание микроконтроллера - но компилятор любительский, аудита кода никто не делал и в лифты его ставить нельзя...

Добавлено: Sat Sep 11, 2021 7:10 am
Ответить с цитатой

Электромонтёр
Экспериментатор


Написал под миландрокортекс тестовую прошивку. Ядро ARM Cortex-M3, библиотека CMSIS стандартная. Таймер и прерывания от него. Компилятор GCC.

Но мне непонятно, ядро работает на 80 МГцж. программа простейшая

Обработка прерывания:
Код:
   MDR_PORTC ->RXTX |= 0x0001;
   if ( ( MDR_TIMER3 ->STATUS & 0x0003 ) != 0){
      if ( point <159>KR = 0xAAAA; // загрузка сторожевого таймера!
      }
      MDR_TIMER3 ->CCR1 = sinus [ point ]; //первая фаза
      if ( point <120>CCR2 = sinus [ ( point + 40 ) ]; //вторая фаза
      else MDR_TIMER3 ->CCR2 = sinus [ ( point - 120 ) ]; //вторая фаза
      MDR_TIMER3 ->STATUS &= 0x0001FFFC; //сброс флагов прерывания счётчика
   }
MDR_PORTC ->RXTX |= 0x0002;


циклически перебирает байты из 160 байтового массива
Код:
 unsigned char sinus [160]

основной цикл:
Код:
MDR_PORTC ->RXTX &= 0xFFFE;
      MDR_PORTC ->RXTX &= 0xFFFD;


В начале и конце процедуры идёт установка двух пинов, а в основном цикле их сброс. Вот осциллограмма:


Жёлтый канал - первый пин, в начале процедуры, синий сигнал - второй пин в конце процедуры.

Но 1,3 мкс на полтора декремента со сравнением?! При 80 МГц???

А ЧЁ ТАК МЕДЛЕННО?

Я как на пики вернулся...


Добавлено: Mon Oct 11, 2021 5:53 pm
CM3.png (20.79 Кб)

Ответить с цитатой

Доктор Зло
 


А что означают в языке С записи типа "point <159>KR" и "point <120>CCR2"?
Этот только в GCC (не знаком) или везде такое есть?

Добавлено: Mon Oct 11, 2021 11:25 pm
Ответить с цитатой

Николай
 


Электромонтёр писал(а):

А ЧЁ ТАК МЕДЛЕННО?

дизасм этого куска посмотри жеж. в какую простыню это компилится

Добавлено: Mon Oct 11, 2021 11:38 pm
Ответить с цитатой

Электромонтёр
Экспериментатор


Доктор Зло писал(а):
А что означают в языке С записи типа "point <159>KR" и "point <120>CCR2"?
Этот только в GCC (не знаком) или везде такое есть?


Блин, это движок форума так отобразил код, чёт просмотрел? надо было отрубить хтмл теги огорчён

Код:
   if ( ( MDR_TIMER3 ->STATUS & 0x0003 ) != 0){
      if ( point < 159 ) point ++; // обновление указателя синусной таблицы
      else {
         point = 0;
      }
      MDR_TIMER3 ->CCR1 = sinus [ point ]; //первая фаза
      if ( point < 120 ) MDR_TIMER3 ->CCR2 = sinus [ ( point + 40 ) ]; //вторая фаза
      else MDR_TIMER3 ->CCR2 = sinus [ ( point - 120 ) ]; //вторая фаза
      MDR_TIMER3 ->STATUS &= 0x0001FFFC; //сброс флага прерывания счётчика
   }


Николай писал(а):
дизасм этого куска посмотри жеж. в какую простыню это компилится

Ну, начало функции 0х080000Е4 выход 0х0800011А. 12+16+10=38 байт или около 20 команд. 100 тактов??? Кстати, пробежался отладкой - реально оптимизатор работает (на этапе инициализации переменных это заметно), может из-за чтения двух значений из 160-байтового массива?

Обновлено!

Отказался нахер от центрированной ШИМ, которая нужна была для минимизации фазовых искажений после фильтрации... Переделал в оконную ШИМ (от и до) с двумя регистрами, соответственно синусная таблица вдвое похудела в объёме, прерывания только при переходе через ноль... Работает так же как центрированная, но дальнейшего алгоритмического гемору меньше. Один хер 1,5 мкс процедура жрёт.

Код:
if ( ( MDR_TIMER3 ->STATUS & 0x0001 ) == 1){
      if ( point < 79 ) point ++; // обновление указателя синусной таблицы
      else {
         point = 0;
         //MDR_IWDG->KR = 0xAAAA; // загрузка сторожевого таймера!
      }
      MDR_TIMER3 ->CCR1 = 250 - sinus [ ( point ) ]; //первая фаза
      MDR_TIMER3 ->CCR11 = 249 + sinus [ ( point ) ]; //первая фаза
      if ( point < 60 ) {
         MDR_TIMER3 ->CCR2 = 250 - sinus [ ( point + 20 ) ]; //вторая фаза
         MDR_TIMER3 ->CCR21 = 249 + sinus [ ( point + 20 ) ]; //вторая фаза
      }
      else {
         MDR_TIMER3 ->CCR2 = 250 - sinus [ ( point - 60 ) ]; //вторая фаза
         MDR_TIMER3 ->CCR21 = 249 + sinus [ ( point - 60 ) ]; //вторая фаза
      }
      MDR_TIMER3 ->STATUS &= 0x0001FFFC; //сброс флага прерывания счётчика
   }


Добавлено: Tue Oct 12, 2021 6:32 am
Ответить с цитатой

Spiriter88
 


Так это, к МК есть документация, там и ассемблерные команды и сколько они тактов выполняются. Конечно писать на нем долго и трудно, но можно больше утолкать.
Хотя и на СИ специалисты пишут учитывая как это будет обработано компилятором.

Добавлено: Tue Oct 12, 2021 10:25 am
Ответить с цитатой

Николай
 


стесняюсь спросить, а таблица синуса где находится? на флеше? или в оперативе? или в progmem (или где-там у кортексов память программ находится)
флеш вещь медленная. я все быстрое неизменяемое пихаю в прогмем. все изменяемое сначала в оперативку выкачиваю.
не пишу под кортексы, но что-то подсказывает что флеш там тоже не супер скоростная
около 20 команд
вааще ни о чем не говорит - из нее прыгает в функции чтения всякие например. 20 инструкций может выполняться 10 минут )))


Spiriter88 писал(а):
Хотя и на СИ специалисты пишут учитывая как это будет обработано компилятором.
только так под контроллеры и надо писать. и никак иначе. иначе ардуино получается.
помнится тут был конкурс - асм vs си vs ардуна. мигалка секундная софтовая. я на си победил ))

Добавлено: Tue Oct 12, 2021 11:16 am
Ответить с цитатой

Электромонтёр
Экспериментатор


Флешь там четыре сектора с чередованием. Доступ к флеши - 25 МГц всего, но за счёт чередования при последовательном чтении удаётся повысить эффективную скорость до 100 МГц, но ветвления портят эту идиллию. Загнал убрал объявление const - массив теперь в оперативке. Ну где-то 100-150 нс выиграл.

Хотя если почитать доташит, то оперативка, флешь, пдп и системный таймер подключены к ядру через AMBA AHB арбитр, какбэ северный мост, а вся периферия, порты, таймеры, ацп подключены не к ядру, а к AMBA AHB арбитру через дополнительный AHB APB арбитр, какбе южному мосту. ХЗ, с каким быстродействием работает южный мост на самом деле.

Добавлено!

В общем увеличением массива на 90 градусов, для сокращения вычислний с объявлением массива как переменной удалось ужать выполнение тела функции в 1,2 мкс, + по 0,4 мкс на вызов и возврат - итого 2 мкс при периоде 6 мкс. Ладно, хрен с ним, оставлю пока как есть.

Ну ни финды себе! НАШОЛ!!!1111

В общем, мой массив был объявлен unsigned char то есть беззнаковыми байтами. А ARM Cortex-M3 из-за системы команд Tnumb в качестве загружаемых операндов обычно полуслова жрёт. Объявил массив unsigned short - и время выполнения тела процедуры сократилось до 1 мкс, то есть на 20%. Вот не ожидал! В общем в век кортексов грех жопиться на память для переменных - минимум должно быть 16 бит. И как ни странно сократилось время возврата в главную процедуру! Итоговое время вызов-функция-возврат в чистом виде составляет около 1,5 мкс! Увеличение размерности переменных до 32-битныx unsigned int несколько снижает быстродействие - четыре байта грузятся в ядро за два присеста.

Вердикт - для миландрокортексов лучше 16-битные переменные юзать, если это не идёт вразрез целевой задаче. Думаю, и к стмкам это имеет отношение!

Добавлено: Tue Oct 12, 2021 12:53 pm
Ответить с цитатой

Александр
 


Электромонтёр а какой ключ оптимизации стоит при коппозиции? Попробуй добавить -Ofast. Может ещё удастся сократить время.

Добавлено: Wed Oct 13, 2021 6:10 am
Ответить с цитатой

Электромонтёр
Экспериментатор


-Ofast в кокосе нет. Имеющиеся -О2, -О3 и -Оs были в моём коде не давали разницы производительности. Только переход от байтовых переменных к двухбайтовым. Это вполне согласуется с набором команд Thumb

Добавлено

Есть ещё такая вещь, как задержка реакции на прерывание. Проц ведь должен заныкать пять регистров в стек, сохранить адрес возврата и перейти к подпрограмме? Для разных армовых архитектур есть такая таблица:

Код:
Processors        Cycles with zero wait state memory
Cortex-M0                 16
Cortex-M0+                15
Cortex-M3                 12
Cortex-M4                 12


Миландрокортекс ВЕ92 на ядре М3, поэтому 12 тактов или 150 нс на 80 МГц.

Выходит, что более 100 кГц частота прерываний на 80 МГц сделать можно очень немного. В общем, в период лучше закладывать не меньше тысячи тактов. Для стмок те же яйца. Увы...

DMA пока не предлагать - у Миландра он какой-то зело перемудёный.


Добавлено: Wed Oct 13, 2021 8:00 am
Ответить с цитатой

Evan
 


Ешкин кот, как я заебался с Arduino.
Возникла необходимость собрать синтезатор частоты, и для интереса транзистор тестер.
Год назад устанавливал , работало , прошивалось.
Переустановил систему, все пиздец. Arduino IDE установилось, а драйвер нет.
При подключении к ноуту ( dell e 6530, система win 10 / 64), отображается "неопознанное устройство" .
Может быть граната не той системы, подумал я , пробовал на других устройствах, но бестолку.
Драйвер никак не устанавливается , то не найден, то без объяснения причин "instal failure" гнев
Собственно вот

Как бороться с этим ?

Добавлено: Fri Oct 15, 2021 9:02 pm
.jpg (89.37 Кб)

failure.jpg (106.83 Кб)

Ответить с цитатой

Электромонтёр
Экспериментатор


Надо искать устаревший драйвер. Сам сталкивался с подобным для СР210х еле нашёл устаревшую версию.

Добавлено: Fri Oct 15, 2021 9:43 pm
Ответить с цитатой

Seriyvolk
Бездельник


Evan писал(а):
Как бороться с этим ?
Отключить обязательную проверку цифровой подписи драйверов.

Добавлено: Fri Oct 15, 2021 11:16 pm
Ответить с цитатой

Электромонтёр
Экспериментатор


Как силами gcc запретить использования некоторых регистров?

Вот наример, функция func () {/* в ней нельзя пользоваться регистрами R4-R11*/} Можно ли кск-то обозначить запрет только для отдельно взятой функции?

Добавлено: Sun Oct 17, 2021 9:07 am
Список разделов Flyback.org.ru » не HV » Микроконтроллеры и всё, что с ними связано
На страницу Пред.  1, 2, 3 ... 133, 134, 135 ... 151, 152, 153  След.     Просмотр темы целиком



Лицензионное соглашение

(c)Flyback.org.ru
Российское общество любителей высоких напряжений.
Использование материалов с данного сайта и форума возможно только с разрешения администрации.