Отвлекитесь, эмбеддеры! Отвлеченные темы - обсудить проблемы тепловой смерти вселенной, или просто пиво. Этот раздел - для отдыха. |
26.10.2018, 19:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 02.07.2009
Сообщений: 1,110
Сказал спасибо: 1,246
Сказали Спасибо 2,178 раз(а) в 624 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от serg28serg
|
получается бабки лежат - не ты поднимешь, так кто-то другой
уж лучше себе поднять чем кто то другой огород подчистит
|
Ню - Ню..... А про то что ты как разработчик несеш ответственность не забыл??? И не дайбог ктото помрет покалечится кто отвечать будет???? естественно не заказчик...
|
|
|
|
26.10.2018, 19:26
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от verdana
|
а дисплей раскрашивает через FSMC.
|
![Улыбка](images/smilies/icon_smile.gif) )) Кстати, FSMC для дисплея - это уже дико устаревший вариант эпохи первых F103. Ну это так, к слову.
Сообщение от serg28serg
|
этом же плане про MODBUS
|
А причем тут протокол Модбас и набор правил МИСРА? Хотя, в принципе, если соблюдаешь правила хорошего тона в программировании, то и виснуть там ничего не будет в Модбасе. Потому что, когда ты пишешь прогу по всем правилам, ты СРАЗУ уже не допускаешь неоднозначностей и опасных мест.
Ну как вам проще объяснить, чтобы вы наконец-то поняли о чем именно я говорю... ну не знаю, ну вот давайте вот например вот так:
Код:
|
switch(value){
case 1: /* что-то выполнить */;
break;
case 2: /* что-то выполнить */;
break;
} |
и представим, что value по какой-либо причине оказалась не равна ни 1, ни 2. Особенно если value - это читаемое извне значение. То есть, на ошибочное значение никак не среагировали, пропустили.
Или другой пример. Цикл ожидания чего-либо:
- это потенциальный источник мертвого зависания. Причем, тут даже две ошибки. Первая - если event объявлен НЕ volatile. Тогда компилятор при оптимизации выкинет вообще event, посчитав ее константой. И вторая ошибка - а вдруг event не наступит никогда? Вооо. Нужен таймаут ожидания.
Знающий, опытный программер видит такие проблемы на два шага вперед, еще даже не написав эту строчку.
Ладно. Третий пример, совершенно практический. Кто немного вкурсах MIDI, тот поймет. Там, кароче, значения второго и третьего байта сообщения должны быть в диапазоне 0 - 127.
Код:
|
void MIDI_SendNoteOn(uint8_t note, uint8_t velocity)
{
SendInterface(0x90);
SendInterface(note);
SendInterface(velocity);
} |
причем, velocity зачастую получается преобразованием длительности времени между размыканием и замыканием переключающего контакта, или же как результат АЦП. Представьте, если результат каким-то образом превысил значение 127. И вы его отправляете. Что произойдет на принимающем устройстве??? Как оно отреагирует? Отбросит ли старший бит и посчитает, что velocity = принятое - 127? Или проигнорирует принятое сообщение целиком? Как???
Опытный программист сразу же добавит условие, что если переменная выходит за диапазон, она будет считаться равной верхней или нижней границе диапазона. В данном случае, это будет выглядеть вот так:
Код:
|
void MIDI_SendNoteOn(uint8_t note, uint8_t velocity)
{
if(note › 127) note = 127;
if(velocity › 127) velocity = 127;
/* код отправки */
} |
Ну что, теперь понятно, что такое грамотное, отказоустойчивое программирование? Имеют ли ардуино-скетчи подобные "излишества"? Знают ли вообще об этом ардуинщики, когда делают "контроллер пассажирского лифта"?
Ошибки многих кодописателей в том, что они считают, что если какое-то событие явно не может произойти, то оно и не произойдет никогда. Как показывает практика, если событие может произойти, то оно рано или поздно произойдет, когда для этого наступит время, стечение обстоятельств или просто по "закону подлости".
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
26.10.2018, 19:55
|
|
Заблокирован
Регистрация: 16.03.2005
Сообщений: 5,918
Сказал спасибо: 560
Сказали Спасибо 9,145 раз(а) в 2,892 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от NewWriter
|
)) Кстати, FSMC для дисплея - это уже дико устаревший вариант эпохи первых F103. Ну это так, к слову.
|
Не буду возражать. Непринципиально.
У меня и F429 так работал. Может и некошерно, но это именно для себя.
Подставьте любой термин по вкусу.
Смысл не изменится ни на йоту.
А по поводу случáев...
https://kazus.ru/forums/showpost.php...&postcount=321
Последний раз редактировалось verdana; 26.10.2018 в 20:20.
|
|
|
Сказали "Спасибо" verdana
|
|
|
26.10.2018, 20:14
|
|
Заблокирован
Регистрация: 16.03.2005
Сообщений: 5,918
Сказал спасибо: 560
Сказали Спасибо 9,145 раз(а) в 2,892 сообщении(ях)
|
Re: Абдуринщики на марше.
"-Чем отличается хороший лётчик от плохого?
-Хороший лётчик умеет делать всё то же, что и плохой,
но кроме того, совершенно точно знает, чего нельзя делать" ©
|
|
|
Сказали "Спасибо" verdana
|
|
|
26.10.2018, 20:29
|
|
Прописка
Регистрация: 18.09.2008
Сообщений: 271
Сказал спасибо: 237
Сказали Спасибо 127 раз(а) в 69 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от NewWriter
|
Кстати
|
В целом согласен, кроме настроя именно против Ардуин.
Мой коллега, которого я упомянул, был именно классическим ардуинщиком, т.е. любил повторять схемы на основе Atmel без анализа схемы, кода.
Но это вопрос философский.
Мы с ним как-то поспорили - я - какой интерес повторять чужие конструкции, чужие коды, не вникая в них?
Он - а вам какое дело, мне это нравится.
Я вспомнил про своего знакомого, который хранил массу системных программ - например, когда я его спросил - у тебя есть P-CAD ? - он спросил - какую версию - у него были от 1. до Altium.
Ну спасибо, что у него всё это есть, но зачем это всё хранить?
Мне это напомнило тем, что он не вникал в них - просто хранил.
Мой коллега, надо признать, стал вникать в код, менять под себя.
И это правильно.
Просто наезд на ардуино мне напоминает своё.
10 лет назад у нас на фирме было принято программировать на PIC - было официально принято на учёном совете. ![Улыбка](images/smilies/icon_smile.gif)
Ну на PIC, так на PIC, я вообще был знаком с 8086 и Z-80.
Наш системный программер на остановке поговорил на остановке с программером конкурентов - PIC гавно, Atmel рулит.
Ну, я и не являлся адептом PIC, за что платят, то программирую.
Просто, повторюсь, проблема не в контроллере, а в подходе к нему
Последний раз редактировалось mahacytl; 26.10.2018 в 20:32.
|
|
|
|
26.10.2018, 20:37
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Абдуринщики на марше.
По поводу того случАя... Нуууу если уж ваще строго подходить, то программист сам по себе этого может и не знать. Ему вообще пофик, ему надо знать, что на входе есть и может быть есть, и что должно быть на выходе, и задача программиста - чтобы было четко по ТЗ.
Но на практике зачастую программист - мастер на все руки, и там должен знать, и это должен уметь, и плату отрисовать правильно, и подготовить герберы, а еще лучше - сам и сделать и спаять. Да еще и корпус подобрать и в корпус запихать, да еще и красивые надписи напечатать
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
26.10.2018, 20:49
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от mahacytl
|
кроме настроя именно против Ардуин.
|
Я НЕ против Ардуин. Я против того, чтобы их пихали втуда, куда им вход запрещен. И я это уже не раз повторил. Ардуина - это не только плата, но и адруино-подход к программированию вообще. Дело не в микроконтроллере. AVR и PIC встречается в серийных устройствах гораздо чаще, чем тот же STM32. Между прочим, контроллер пассажирского лифта OTIS - там PIC. Причем, еще даже в DIP-корпусе. Но он прошел сертификацию на безопасность.
А приходилось ли вам видеть "бутерброды" из ардуино-шилдов, обмотанные паутиной проводов, и засунутые в стандартный электрический шкаф? Ну-ну, так посмотрите, поглазейте.
Вот, вот это - как думаете, безотказно ли будет работать?
беспаечные платы знаете? Фкурсах, что у них ослабевают прижимы контактов и что помехи по шинам питания просто ужасны?
Касательно готовых плат - есть и Intel Edison, и Raspberry, которые в принципе являются готовыми для работы. Те же "Малины" ставят как контроллеры LED-панелей. Причем, китайцы их пачками штампуют. Правда, говно получается низкопробное, надежность - вообще отстой, сам сталкивался.
Кстати, для желающих программировать в промышленных масштабах - есть PLC (ПЛК, программируемый логический контроллер). Сименсы например считаются весьма кошерными и расово верными для промышленной автоматики. Берите, пользуйте. По крайней мере, за схемотехнику сам Сименс ручается, к нему все косяки, ежели вдруг чаво.
Последний раз редактировалось NewWriter; 26.10.2018 в 21:06.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
26.10.2018, 21:05
|
|
Заблокирован
Регистрация: 16.03.2005
Сообщений: 5,918
Сказал спасибо: 560
Сказали Спасибо 9,145 раз(а) в 2,892 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от NewWriter
|
но и адруино-подход к программированию вообще..
|
А что именно?
Абстракция от железа?
Ну так по сравнению с LD и FBD для PLC, Ардуино нервно курит в углу.
И ни кто на них не матерится...
|
|
|
|
26.10.2018, 21:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,920
Сказал спасибо: 2,982
Сказали Спасибо 3,162 раз(а) в 2,146 сообщении(ях)
|
Re: Абдуринщики на марше.
Сообщение от serg28serg
|
глючить и долго копаться в тестах чужого софта не очень комильфо , лучше взять готовое и тестить, правки как правило - минимальны, ну то есть гораздо меньше чем самопись
|
Прощу прощения, но тут взаимоисключающие пункты.
__________________
Экзорцист 40-го уровня.
|
|
|
|
26.10.2018, 21:14
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Абдуринщики на марше.
Не, не абстракция от железа. Нет. Ладно бы только абстракция. Абстракция и универсальность влияет только на скорость и эффективность использования процессорного времени. Абстракция - это вообще правильный подход в кодонаписании, когда все разложено по полочкам, по уровням.
Но вот универсальность - враг оптимальности.
Ладно, хрен с ней, с абстракцией.
Я говорю о ардуино-подходе, когда вон там, как на картинке в предыдущем посте. Каша. И такая же каша - в программном коде. ВОТ о каком ардуино-подходе я говорю.
Часто (да почти всегда) ардуинщики ляпают код ужасно нерационально. Зачастую, аппаратные интерфейсы МК заменяются программной их реализацией, да еще в самом черезжопном варианте, когда тайминги делаются через блокирующий delay. Из-за чего вся система получается просто тормознутой.
Вот и об таком ардуино-подходе я толкую.
Вот!
ПЛК конечно тоже еще тот венец творения. Но они хотябы сертифицированы. Имею ввиду Сименс, как самый распространенный и многоуважаемый. Еще есть Овен, как вариант для тех, у кого не хватило денег на Сименс.
Но вы посмотрите на внутренности ПЛК. Там стоят весьма производительные процы (микроконтроллеры), дающие на выходе очень даже невысокий КПД. Как раз по причине универсальности. Фактически, внутри там крутится транслятор кода. Но почему ПЛК сертифицированы? Да потому, что блоки, из которых генерируется исполняемый код, они построены по отработанному отказоустойчивому алгоритму.
Последний раз редактировалось NewWriter; 26.10.2018 в 21:26.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо NewWriter за это сообщение:
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:55.
|
|