Обновить
134
Автушенко Игорь@GarryC

Разработчик аппаратуры и программист ее

0,4
Рейтинг
283
Подписчики
Отправить сообщение
Посмотрите на код, который породил компилятор, я его привел во вкладках, и, Бога ради, покажите мне строки, порожденные компилятором для сохранения и восстановления sreg. Вы хотите спорить о вкусе бананов с человеком, который их ест в значительных количествах?
А — не зло, а инструмент, злом может быть только бездумное его использование.

И я не очень понял, что именно Вы хотите — уменьшить описание библиотек (категорически не согласен с таким подходом) или увеличить описание МК (берите STM, они реализовали Вашу мечту на 300+ страницах).
Автор такой, какой есть. Да, Вы правы, именно в стиле советских НИИ, и я Вас уверяю, там были и высококлассные специалисты, так что прошу Вас поосторожнее с эпитетами. Стиль сокращений произошел в то время в том числе и потому, что функции автозамены на пишущих машинках не было.

Далее по комментарию — там такой же исходный текст? Если да (а так оно и есть) то в чем пафос замечания? То есть я разбирал действительно исходный текст, взятый с другого ресурса и это что то изменило?

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

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

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

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

И, простите великодушно, рекомендация писать порт — это как раз из разряда юнных гуру, о которых я упоминал в самом начале поста, со всеми недостатками, которые я пречислил.

Еще раз, без обид, но меня, честно признаюсь, задела фраза о совковых НИИ, что и вызвало, может быть, излишне резкий ответ.
Еще раз утверждаю, и документация на микросхему со мной согласна, что sreg надо сохранять и восстанавлисать ручками.
А я думал так прикольно будет, но вообще то это от лени.
Ах добрые старые времена, когда мы соревновались в написании библиотек BCD арифметики на 580ВМ80 и хвастались друг перед другом уменьшением размера кода на 3 байта и увеличением скорости работы на 4 такта. В этом была своя романтика, которая, видимо, уже никогда не будет доступна современным инженерам, конечно, без обид.
В том то и дело, что в AVR программа обработки прерываний должна сохранять на стек sreg сама и сама его восстанавливать при выходе. Но в процессе обработки она может модифицировать бит глобального разрешения и она имеет право это делать. Она также может восстановить sreg со стека, запретить прерывания (не влияя на флаги, кроме IE) и возвратить управление командой ret, чтобы не выставить его снова. И если она это сделает, то тем не менее не сможет прекратить обработку прерываний, поскольку мы восстановим сохраненный нами sreg с взведенным IE.
В принципе Вы правы, но дьявол кроется в деталях. Периферию А чипов нельзя назвать очень богатой и иногда приходится через GPIO реализовывать стандартные интерфейсы типа I2S или SPI. А когда речь идет, например о последовательных шинах типа WS2811, то применение стандартного интерфейса хоть и возможно, но требует особого внимания в реализации, и пины здесь — весьма удобное подспорье.
У меня есть пост о SPI как универсальном интерфейсе, но их не так много на чипе.
Конечно же, последнее решение со специфическими командами — это реализация исключительно для AVR, я об этом сразу сказал.
А вот первый мой вариант с условной компиляцией будет жить где угодно, хотя на Edissone даст очень немного выигрыша (но все равно даст).
А вот с этого момента поподробнее — почему это программист должен оставлять бит неизменным, конечно, управление конкретным прерыванием через глобальное нельзя отнести к хорошему стилю, но ведь это и не запрещено. Если бы в примерах от Atmel это было ясно прописано, то еще как бы сошло, но ведь такого нигде нет. По крайней мере, мне не встречались подобные ограничения, если Вы где то в примерах такое ограничение видели явно прописанным, бросьте ссылку.
Я это и сделал, только через дефайн. Просто через шаблона лучше не получалось, я пробовал, но смысл становился менее понятен, все таки отнести шаблоны к интуитивно понятным частям С++ я не могу.
Конечно же семейство AVR MEGA, Вы абсолютно правы, надо было уточнить.
Так и писал я этот пост долго, конечно, с перерывами, но недели две. А насчет картинок — во первых, не умею, а во вторых, я инженер старой закалки и позволяю себе только схемы и временные диаграммы, може, последние тут и были бы не лишние, но сильно понимание не облегчили бы, а просто для привлечения внимения неохота их ставить.
Как раз то, что было у меня, мне пришлось искать подходящую карту. Но у меня приостанавливалось не более чем на 500 мс, наверное, от катрочки зависит.
Забавный у Вас робот, если он может себе позволить остановиться на десять секунд, чтобы найти свое место. Что Я Делаю Не Так?

И по поводу квадратного сигнала — есть еще термин прямоУгольный, с ударением на у, тоже неплохо. хотя и не так любимо в электронике.

По самому тексту — способ прикольный, хотя и весьма ограниченный в своем применении, только для сигналов, принимающих 2 значения, лично мне интегралы понятнее.
Ну и внешний триггер (для формирования выхода из сна?) это классно, Что Я Не Так Делаю, если обычно обхожусь без него?
По осциллограмме схемотехник не мог увидеть, что крутизна ключевых фронтов A и B будет недостаточной, чтобы обеспечить стабильное и своевременное срабатывание оптронов. По факту, для корректной работы схемы преобразования было необходимо использование компараторов
То есть Вы всерьез полагаете, что на заваленных фронтах компаратор предпочтительнее оптрона? Из чего вытекает такая уверенность? Ну и по поводу первой схемы с оптронами — помеху надо ловить в точке возникновения, а не после преобразования.
Конечно же обрабатывать такой сигнал непосредственно микроконтроллером не представляется возможным

Пока Вы не нанесли на график тарировку шкал по времени и по напряжению, данное утверждение не вполне очевидно.
А мы не должны получить предупреждение? Если пишем поперек стандарта? Или С думает, что мы понимаем, что делаем, раз есть явное приведение?
Ну я комментариев с такимим определениями не видел, наверное пропустил, в любом случае они не делают чести написавшим. И фраза «товарищ майор, перелогиньтесь» мне как то не представляется шедевром юмора.
Но все таки, согласитесь, Вы несколько увлеклись в своем определении оппонента, не надо так, хотя Вы можете думать и по другому.

Информация

В рейтинге
2 771-й
Откуда
Зеленоград, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность