Re: Главный принцип Ардуинавтики- в чем?
Добавлено: Ср апр 30, 2025 17:11:38
[uquote="Уош",url="/forum/viewtopic.php?p=4710159#p4710159"]зачем? что симулировать в отрыве от реальной периферии?[/uquote]
Да, именно в точности для этого. Потому что если например программа принимает данные то нужно иметь возможность посмотреть как они обрабатываются. А реальное устройство не будет ждать пока вы обработку каждого байта по шагам пройдете. В отличие от симулятора, где можно задать подаваемые на вход МК байты и посмотреть как они будут обрабатываться. В том числе и какие-нибудь редкие граничные или вообще "невозможные" значения. У меня к примеру был случай с цифровым токовым датчиком у которого при отсутствии тока изредка проскакивали очень малые но _отрицательные_ значения. И моя программа на этом спотыкалась так как по по логике работы схемы - тока "в другую сторону" просто не могло быть.
Но они лишь обнаружат появление ошибочных данных на входах микроконтроллера. А вот чтобы отладить реакцию на эти неправильные данные - и нужен симулятор.
Естественно, работать с симулятором нужно уметь. Это далеко не просто "нарисовал схему и включил". Например если есть подозрения на некие сбои из-за помех на линии связи с внешним устройством - можно в симуляторе подать контроллеру на вход неправильные данные и посмотреть как он обрабатывает такие ошибочные ситуации. На реальной железке отлаживать обработку ошибок существенно сложнее потому что вы не можете управлять типом возникающих ошибок - они будут случайны. И повторить точно такую же ошибочную ситуация невозможно.
Понимаю,что для профессионала, работающего с микроконтроллерами ежедневно по восем частов - всё мной написанное это мелкая, не стоящая внимания фигня. А вот программисту-любителю,который пишет код для контроллеров далеко не каждый день и не в таких количествах - симулятор очень даже нужен.
Добавлено after 24 minutes 2 seconds:
[uquote="Уош",url="/forum/viewtopic.php?p=4710163#p4710163"]Если информация в спецификация неполная, как сейчас у китайцев, то она запрашивается. Если всё равно нет - то берётся микроконтроллер, где она полная.[/uquote]
Это если и возможно то только для профессионалов,причем работающих в крупных и известных компаниях. Любитель может с тем же нулевым результатом обратиться хоть к Богу с молитвой о ниспослании ему нужной спецификации :)
Ибо с "промышленной" точки зрения они и медленнее и дороже чем например те же stm,не говоря о китайских risc.
Да, именно в точности для этого. Потому что если например программа принимает данные то нужно иметь возможность посмотреть как они обрабатываются. А реальное устройство не будет ждать пока вы обработку каждого байта по шагам пройдете. В отличие от симулятора, где можно задать подаваемые на вход МК байты и посмотреть как они будут обрабатываться. В том числе и какие-нибудь редкие граничные или вообще "невозможные" значения. У меня к примеру был случай с цифровым токовым датчиком у которого при отсутствии тока изредка проскакивали очень малые но _отрицательные_ значения. И моя программа на этом спотыкалась так как по по логике работы схемы - тока "в другую сторону" просто не могло быть.
Примитивны эти проблемы только для чайников которые не знают что такое переполнение при вычислениях и что такое потеря точности из-за обрезания младших разрядов. Тем более что gcc по сей день не выдает предупреждение если просто например long = int + int. Оно старшие разряды _молча_ обрежет и только потом присвоит. Этой "особенности поведения" лет тридцать.как работает а = б + с и прочие примитивные стотыщ раз решённые проблемы?
Да, vmlab это делает. Перевод контроллера в сонное состояние и выход из сна по прерываниям я в нем отлаживал.Энергопотребление симулятор тоже просимулирует?
В общем случае это не задача симулятора, для этого нужен осциллограф и логический анализатор.кривая трассировка, забытый блокировочный, ЭМП
Но они лишь обнаружат появление ошибочных данных на входах микроконтроллера. А вот чтобы отладить реакцию на эти неправильные данные - и нужен симулятор.
Естественно, работать с симулятором нужно уметь. Это далеко не просто "нарисовал схему и включил". Например если есть подозрения на некие сбои из-за помех на линии связи с внешним устройством - можно в симуляторе подать контроллеру на вход неправильные данные и посмотреть как он обрабатывает такие ошибочные ситуации. На реальной железке отлаживать обработку ошибок существенно сложнее потому что вы не можете управлять типом возникающих ошибок - они будут случайны. И повторить точно такую же ошибочную ситуация невозможно.
Понимаю,что для профессионала, работающего с микроконтроллерами ежедневно по восем частов - всё мной написанное это мелкая, не стоящая внимания фигня. А вот программисту-любителю,который пишет код для контроллеров далеко не каждый день и не в таких количествах - симулятор очень даже нужен.
Добавлено after 24 minutes 2 seconds:
[uquote="Уош",url="/forum/viewtopic.php?p=4710163#p4710163"]Если информация в спецификация неполная, как сейчас у китайцев, то она запрашивается. Если всё равно нет - то берётся микроконтроллер, где она полная.[/uquote]
Это если и возможно то только для профессионалов,причем работающих в крупных и известных компаниях. Любитель может с тем же нулевым результатом обратиться хоть к Богу с молитвой о ниспослании ему нужной спецификации :)
С одной стороны вроде бы и да,с другой - встречал мнение что продолжение выпуска микроконтроллеров avr в течении трех десятков лет во много обязано именно спросу со стороны любителей.Микроконтроллеры не делают для радиолюбителей
Ибо с "промышленной" точки зрения они и медленнее и дороже чем например те же stm,не говоря о китайских risc.
Вот и я об этом - любителю часто приходится писать свой велосипедный код потому что код из используемых в промышленности библиотек ему никто не даст или запросят совершенно неадекватных денег.да, может быть ситуация, что что положено Юпитеру, не положено быку.
Именно про это я и говорил, и две ссылки на эту тему привел. Так вот, хороших примеров в даташитах от производителей - на эту тему нет (или они недоступны для свободного ознакомления). Приходится руководствоваться статьями типа тех что по приведенным ссылам.Что же касается I2C, то необходимо понимать событийную модель, и если уж охота, то не так уж и сложно её всю проанализировать в прерывании.
Для профессионала - может быть. А вот я,любитель, отлаживал код конечного автомата именно что в vmlab. Можно конечно отлаживаться и методом печати в uart,но у меня бы на такое наверно терпения не хватило бы. За основу своего конечного автомата я брал код,выложенный по той ссылке на easyelectronix. Написать такое совсем полностью с чистого листа - было бы _очень_ долго.Симулятор притом здесь будет бесполезен
С "средой" ардуино и ее весьма специфическим языком я стараюсь дела не иметь. Максимум что было однажды - это подсмотрел алгоритм как сделано и переписал на Си.в ардуине притом это сделать невозможно.
Вот и я о том же. Особенно в случае программистов-любителей.Но так-то да. Велосипеды с микроконтроллерами постоянны.