gvsp, в проге ардуиновской есть такое что пишешь чего нить в порт ( ну например включаешь какой нить индикаторный светодиодик ) , а потом читаешь с порта - горит ли светодиодик - и делаешь какое то действие связанное с тем состоянием которое обуславливает горение или негорение светодиодика.
как то попросили разобратся: "почему управление автоклавом глючит" ( управление на ардуино сделано в лучших ардуиновских традициях выше описанных ) . хохотал как обычно.
перевел просто логику с анализа горит / не горит светодиодик ( их там несколько было - каждый отображал свой шаг действия ) - на структуру в объединении - просто в озу хранится. и глюки изчезли
Как собрать систему старт-стопа для чайников
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.140 19 Мая 26, 20:01
gvsp
Кандидат наук
Ленинград
440 49
Отв.141 19 Мая 26, 21:05
потом читаешь с порта - горит ли светодиодикSedoY, 19 Мая 26, 20:01Наверное пытались читать состояние вывода назначенного выходом, а функция применима если вывод назначен входом.
dee
Научный сотрудник
Минск
12.8K 2.9K
Отв.142 20 Мая 26, 09:20
gvsp, что бы зажечь встроенный светодиодик ардуино записывает единицу в 5й бит порта В, нет никаких проблем потом прочитать этот бит в байте PORTB т.е узнать находиться порт в высоком состоянии или низком
Добавлено через 6мин.:
включить 13 пин (5 бит порта В) можно командой bitSet(PORTB, 5)
выключить - bitClear(PORTB, 5)
узнать в каком он состоянии - bitRead(PORTB, 5)
принудительно записать нужное значение bitWrite(PORTB, 5, Х) где Х или 0 или 1
Добавлено через 12мин.:
тоже самое делают команды по маске но они мне не нравятся зато обработывают в один такт сразу весь порт
PORTB |= B00100000; // Включаем 13-й пин (HIGH)
PORTB &= B11011111; // Выключаем 13-й пин (LOW)
Добавлено через 6мин.:
вот пример вывода символов на семисегментный индикатор что бы были часы
PORTD = B10001000; // 1
PORTD = B10110011; // 2
PORTD = B10111001; // 3
...
PORTD = B01101011; // b
PORTD = B01010011; // C
PORTD = B10101011; // d
PORTD = B01110011; // E
PORTD = B01110010; // F
PORTD = B01100011; // t
Добавлено через 6мин.:
включить 13 пин (5 бит порта В) можно командой bitSet(PORTB, 5)
выключить - bitClear(PORTB, 5)
узнать в каком он состоянии - bitRead(PORTB, 5)
принудительно записать нужное значение bitWrite(PORTB, 5, Х) где Х или 0 или 1
Добавлено через 12мин.:
тоже самое делают команды по маске но они мне не нравятся зато обработывают в один такт сразу весь порт
PORTB |= B00100000; // Включаем 13-й пин (HIGH)
PORTB &= B11011111; // Выключаем 13-й пин (LOW)
Добавлено через 6мин.:
вот пример вывода символов на семисегментный индикатор что бы были часы
PORTD = B10001000; // 1
PORTD = B10110011; // 2
PORTD = B10111001; // 3
...
PORTD = B01101011; // b
PORTD = B01010011; // C
PORTD = B10101011; // d
PORTD = B01110011; // E
PORTD = B01110010; // F
PORTD = B01100011; // t
Volume
Научный сотрудник
Уфа
789 440
Отв.143 20 Мая 26, 18:55
gvsp, что бы зажечь встроенный светодиодик ардуино записывает единицу в 5й бит порта В, нет никаких проблем потом прочитать этот бит в байте PORTBdee, 20 Мая 26, 09:20тут бы уточнить - все это про ардуинки на AVR. А ардуинки ныне AVR-ами не ограничиваются, поддержаны офигеть сколько процессоров, в которых все не так
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.144 20 Мая 26, 19:10 (через 15 мин)
Наверное пытались читать состояние вывода назначенного выходомgvsp, 19 Мая 26, 21:05там было - вместо того чтобы создать переменную в озу для хранения статуса, использовали ножки , да еще к которым проводки подключены - это же "антенны" - чего наловили из эфира то и получалось состояние.
это я как например привел - как ардуинщики ловят глюки в своих поделках
а функция применима если вывод назначен входомgvsp, 19 Мая 26, 21:05палкой в мозг ардуинщика это не вколачивают)))
Добавлено через 2мин.:
А ардуинки ныне AVR-ами не ограничиваютсяVolume, 20 Мая 26, 18:55людям бы на си писать, думать на си. архитектуру программы продумывать заранее, может и был бы толк
Добавлено через 2мин.:
обработывают в один такт сразу весь портdee, 20 Мая 26, 09:20вообще то 3 такта: чтение в регистр, модификация в регистре, запись обратно из регистра
или это - что вместо bitSet(PORTB, номер ножки)
Volume
Научный сотрудник
Уфа
789 440
Отв.145 20 Мая 26, 19:50 (через 41 мин)
людям бы на си писать, думать на сиSedoY, 20 Мая 26, 19:10проблемка не в языке а в отсутствии понимания автоматизируемых реалий. Если не понимаешь что на пине кнопки будет дребезг и обрабатываешь его как 1/0 - нажат или нет, результат будет херовым хоть на питоне хоть на расте
TVM73
Доцент
Серпухов
1.1K 79
Отв.146 20 Мая 26, 20:08 (через 19 мин)
тоже самое делают команды по маске но они мне не нравятся зато обработывают в один такт сразу весь портdee, 20 Мая 26, 09:20Мне нравится.
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.147 20 Мая 26, 20:15 (через 7 мин)
вот пример вывода символов на семисегментный индикатор что бы былиdee, 20 Мая 26, 09:20а я ленивый, так делаю:
#define pset(b) (b)&=~0b11111011// установка точки в знакоместе
uint8_t simvolss [19]={// точка - сбрасываем бит 2
0b11111001,//0
0b10000001,//1
0b10111010,//2
0b10101011,//3
0b11000011,//4
0b01101011,//5
0b01111011,//6
0b10100001,//7
0b11111011,//8
0b11101011,//9
0b11110011,//А
0b01011011,//b
0b01111000,//C
0b10011011,//d
0b01111010,//E
0b01110010,//F
0b00000010,//-
0b01011010,//t
0b00000000 //ничего не горит
};
//пример:
txo.segment = simvolss[ tmp ];
txo.segment = pset(txo.segment);// точка
dee
Научный сотрудник
Минск
12.8K 2.9K
Отв.148 20 Мая 26, 20:42 (через 28 мин)
это же "антенны"SedoY, 20 Мая 26, 19:10если подключены как высокоипедансный вход, если подключен подтягивающий резистор то особо не наловят
Добавлено через 14мин.:
а я ленивый, так делаю:SedoY, 20 Мая 26, 20:15ОЗУ в обмен на ПЗУ, ОЗУ меньше
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.149 21 Мая 26, 05:14
если подключены как высокоипедансный вход, если подключен подтягивающий резистор то особо не наловятdee, 20 Мая 26, 20:42просто переделал на переменные в озу , и глюки ушли
ОЗУ в обмен на ПЗУ, ОЗУ меньшеdee, 20 Мая 26, 20:42там и const применить не зазорно )))))
да и в нынешних МК занять озу даже на 30% уже не удается - давние привычки экономить ресурс не искоренимы)))
superezhik
Кандидат наук
Новосибирск
449 37
Отв.150 21 Мая 26, 12:03
ардуино то зачем? У меня XH-W3002, сейчас клапан нормальный подберу и ничего больше не надо? Или есть ньюансы?
gvsp
Кандидат наук
Ленинград
440 49
Отв.151 21 Мая 26, 16:47
да и в нынешних МК занять озу даже на 30% уже не удаетсяSedoY, 21 Мая 26, 05:14На Нано в момент забил, когда стал меню добавлять. знал бы, что с оперативой беда, делал бы на Меге. Но хватило и нано. Пришлось в PROGMEM пихать и то еле влез. Понял, что Веб интерфейс уже не светит. Пришлось обойтись Telnet. На телефон приходит примерно так:
O_01:10 T_855 K_751 P_101325 Что означает, что отбор тела идёт один час и 10 минут, температура по датчику расположенном в баке (танке) 85,5°С. Температура по датчику, расположенному в колонне ниже узла отбора 75,1°С. Атмосферное давление 101 325 Па.
Или так: A_150->150 T_855 K_751 Идёт отбор головных фракций, оставшееся и прошедшее время в минутах.
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.152 21 Мая 26, 18:20
На Нано в момент забилgvsp, 21 Мая 26, 16:47переходи на стм32 или чтото подобное условно современное, на древних мк, да ещё с ардуиноговнобиблиотеками - хотелки исполнять - мазохизм
я щас разучиваю особенности CH32Vхххх
Добавлено через 11мин.:
На телефон приходитgvsp, 21 Мая 26, 16:47телефону и не такую карабарщину разбирать - не напрягатся
dee
Научный сотрудник
Минск
12.8K 2.9K
Отв.153 21 Мая 26, 19:20 (через 60 мин)
Понял, что Веб интерфейс уже не светитgvsp, 21 Мая 26, 16:47веб-морду можно сделать на ESP32, скармливать ей строчку из telneta а она будет показывать
svarnoy
Профессор
Жуковский.
9.7K 4.8K
Отв.154 21 Мая 26, 21:04
Чем вам есп 32 не нравится, там и интернет и чего хочеш
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.155 22 Мая 26, 07:19
написанно же :
Ограничения и решения
В суровых производственных условиях применение «голых» плат для разработчиков (например, ESP32 DevKit) недопустимо.
Для промышленной автоматизации применяются готовые промышленные контроллеры (выпускаемые, например, брендами Emotas, NORVI, Teensy и др.), которые обеспечивают:Изолированные интерфейсы (опторазвязка RS-485/CAN).Защиту от электромагнитных помех и скачков напряжения.Промышленные типы питания (вход на 12 В или 24 В) и монтаж на DIN-рейку.
Ограничения и решения
В суровых производственных условиях применение «голых» плат для разработчиков (например, ESP32 DevKit) недопустимо.
Для промышленной автоматизации применяются готовые промышленные контроллеры (выпускаемые, например, брендами Emotas, NORVI, Teensy и др.), которые обеспечивают:Изолированные интерфейсы (опторазвязка RS-485/CAN).Защиту от электромагнитных помех и скачков напряжения.Промышленные типы питания (вход на 12 В или 24 В) и монтаж на DIN-рейку.
svarnoy
Профессор
Жуковский.
9.7K 4.8K
Отв.156 22 Мая 26, 08:07 (через 49 мин)
SedoY,
Для бытовых решений нужно обезательно на дин рейку?
Ну и опторазвязки сам делай, не цепляеш же 220 на пин напрямую.
Я уже писал, повторюсь.
У меня автоматизировано вообще все до чего могу дотянуться, две коптилки, автоклавы, полив, три самогонных аппарата, климат система мастерской, и все на есп32 врум 32у, все платы разводятся под один контроллер.
И за примерно 8 лет на на есп32, не было ни одной с ними проблемы.
Полив и коптилка вообще живут на улице, под навесом.
Ну и допустимо недопустимо, может сертификата нет не по тому что плохая, а по тому что не делали.
Тут каждый для себя решит сам.
Домашнее управление самогоном это не обезательно пром решения и пром контроллеры.
Для бытовых решений нужно обезательно на дин рейку?
Ну и опторазвязки сам делай, не цепляеш же 220 на пин напрямую.
Я уже писал, повторюсь.
У меня автоматизировано вообще все до чего могу дотянуться, две коптилки, автоклавы, полив, три самогонных аппарата, климат система мастерской, и все на есп32 врум 32у, все платы разводятся под один контроллер.
И за примерно 8 лет на на есп32, не было ни одной с ними проблемы.
Полив и коптилка вообще живут на улице, под навесом.
Ну и допустимо недопустимо, может сертификата нет не по тому что плохая, а по тому что не делали.
Тут каждый для себя решит сам.
Домашнее управление самогоном это не обезательно пром решения и пром контроллеры.
dee
Научный сотрудник
Минск
12.8K 2.9K
Отв.157 22 Мая 26, 09:21
Для промышленной автоматизации применяются готовые промышленные контроллерыSedoY, 22 Мая 26, 07:19ну так и ценник там "промышленный", готовые модули опторазвязки тоже есть. Кстати на озоне висит контроллер MicroPython PyBoard V1.1 в районе 1000РФ на STM32F405, 192КБ оперативы и акселерометр, в наши палестины полетные контроллеры для квадриков не возят но вот плату разработчика купить можно
SedoY
Профессор
Новосибирск
5.2K 2.2K
Отв.158 22 Мая 26, 10:54
svarnoy, просто нелюблю для ответственных решений использовать МК у которых ПЗУ внешнее. для вебки - да пофиг, а управлять чем то , что может убить ( те же 220в ) ну его с таким потенциалом.
учили меня так
учили меня так
svarnoy
Профессор
Жуковский.
9.7K 4.8K
Отв.159 22 Мая 26, 10:58 (через 5 мин)
SedoY,
Думается мне, что все не так грустно .
Вопервых, глюконуть или отработать не так, не отработать, может любой контроллер!
Во-вторых, при проектировании на есп32 можно внедрить кучу защитных механизмов, это не отменяет возможного не так. За счёт большей памяти, простоты, этих механизмов можно внедрить много.
Думается мне, что все не так грустно .
Вопервых, глюконуть или отработать не так, не отработать, может любой контроллер!
Во-вторых, при проектировании на есп32 можно внедрить кучу защитных механизмов, это не отменяет возможного не так. За счёт большей памяти, простоты, этих механизмов можно внедрить много.