Спасибо)) Ещё бы этих денег получить... А то не первый раз занимаю места на Радиокоте и на сколько помню не всегда они присылали. А по моей статье с БП в своё время даже целую тему на форуме просто удалили бесследно... Хотя там постов было не мало, народ делился печатками и т.д. Совершенно непонятно почему удалили.
Вроде главный кот писал, что денег всем перевёл. Там на форуме и раньше проскакивали жалобы на медленную рассылку призов. БП с оранжевым дисплеем от телефона Сименс? Помню такой.
Да офигенно! Оказывается, ты один из моих учителей, когда я учился программировать на си. Тогда ассемблер плохо понимал. Недавно нашёл в мусоре несколько микроконтроллеров at89c2051 с параллельным программированием, вот это интересный квест, написать для них программатор, заодно и питон начал изучать. Писать на ассемблере, для, как пишут, легендарного ядра 8051, отдельный кайф :3
А мне на самом деле до сих пор стыдно, что в тех прошивках на ассемблере я не использовал команды умножения)) Почему-то тогда мне не совсем было понятно что и как, было лень разбираться. И по привычке с ассемблера Z80 использовал другие методы (циклы, сдвиги). В целом ассемблер вполне себе гибкая штука, но надо всегда думать об используемых регистрах...
А вот какой ассемблер мне не нравится так это на pic16, с их банками памяти ещё.
Полезное чувство
Штука то гибкая, и мозги хорошо проветривает. Но нагромождения кода плохо воспринимаются визуально. То есть понять смысл происходящего мешают многочисленные служебные перекладывания из регистра в регистр, не имеющие отношения к общему алгоритму. Регистры нужно постоянно в голове держать, банки регистров, пока просто пишу в комментариях используемые регистры над каждой "функцией". Должен же быть какой-то инструмент для этого? И инструмент от дураков, которые могут потерять стек в 128 байтах озу и тупить почему данные портятся.
Ну да, тот же Си исключает подобные ошибки, но так хочется goto )))
Я теперь пользую асм только для МК с очень скудным количеством ОЗУ и флеша, например attiny13, ну или даже attiny12, где ОЗУ вообще отсутствует))
Си порождает свои ошибки, на своём уровне абстракции от железа, применение goto ухудшает положение. Как всегда, нужно искать компромисс. Мнение дилетанта. Мне просто нравятся микросхемы и ассемблер и си и другие языки
Ну да, на си свои ошибки, но честно говоря после ассемблера появляется облегчение)) Но есть масса не очевидных вещей при использовании прерываний и переменных более 8 бит, там прям ууххх...
А так я дилетант не менее, всё таки для меня это тоже хобби, а не работа.
А после си, на ассемблере появляется другое облегчение — я уверен в своих косяках, на компилятор их уже не свалишь Какая масса вещей? Ты же знаешь ассемблер, что может быть неочевидного в си, с такими знаниями?
Ну это если не смотреть дизасм как оно получается, и вообще я имею ввиду если не знать асм при этом. Вот к примеру, есть программный таймер или переменная более 8 бит, которая изменяется в прерывании. Если в основном цикле читать/записывать эту переменную, а в момент когда первые 8 бит будут обработаны произойдёт прерывание и переменная изменится, то явно будет глюк. На си, когда на вид работа идёт сразу с 16 битной (например) переменной эта ошибка очень не очевидна. Ну или трюки с тем, что бы после перехода в обработчик прерываний сразу разрешать прерывания. На си не всегда понятно, как это сработает, но иногда такое решение просто необходимо.
Да, атомарный доступ к переменным, атомарные операции? О таком с ходу не догадаешься, согласен.
Типа вложенных прерываний? Ни разу не разрешал прерывания внутри прерывания. Что может пойти не так? Если внутри обработчика, перед глобальным разрешением, запретить лишние прерывания, то вроде должно работать?
В 8 битых то да, они всегда атомарные по 8 бит)))
А прерывания вообще по разному, обычно разрешаю внутри обработчиков если требуется достаточно точная ловля, например, внешнего прерывания. Не так давно писал таймслотовый протокол с хоппингом каналов на nrf24L01, так вот ловил прерывания от этой микрухи для синхронизации таймслотов. При этом в другом обработчике прерываний сразу разрешал. А пойти может не так если произойдёт перезапуск обработчика если он не завершился от первого вызова. Для этого ставил флаг в переменной о том, что обработчик выполняется и повторный вызов об этом узнавал и сразу выходил из обработчика. А ситуация такая возможна не из-за того, что обработчик жирный и долго выполняется, а из-за того, что при синхронизации идёт поправка таймера, который этот обработчик вызывает, ну и в "удачных" случаях следующее обнуление таймера может произойти очень скоро.
Круто. Значит, если соблюдать осторожность, то работает. В руководстве пользователя компилятора xc8 есть такое примечание, в разделе "Enabling Interrupts":
Цитата:
Never re-enable interrupts inside the interrupt function itself. Interrupts are automatically re-enabled by hardware on execution of the RETFIE instruction. Re-enabling interrupts inside an interrupt function can result in code failure.
Ну то пики, я то на авр такое проворачиваю. На пиках же ещё надо флаг прерывания сбрасывать перед выходом из обработчика. А ещё не у всех пиков стек в ОЗУ, у каких-то стек аппаратный уровня на 3 и действительно в случае повторного вызова стек может переполниться))
Но вообще в документации видимо решили на корню избавиться от возможных глюков))
Я ещё когда только начинал на WinAVR Си компилировать, то столкнулся с тем, что если компилятор не видит в функции, что глобальная переменная может меняться в процессе выполнения данной функции, то он тупо ее константой делает. Потом только подсказали тип volatile.
Программный стек переполнить тоже много ума не надо... Мне хватило.
В документации не открещивались от глюков, имхо, просто там прямо заявляют — компилятор не даёт гарантий. Как с атомарностью. Вся ответственность на программисте. В стиле си.
Кроме volatile очень не хватает atomic ><
Ну штош,эпопея с созиданием нового принтера вышла на финишную прямую)
Ещё есть технические огрехи и кой-какие недоработки, но в целом оно исправно и работает. Тестовая печать на шесть часов завершена почти успешно (внезапно выяснилось, что новые мозги умеют в адекватное возобновление печати после аварийного выключения), осталось подрегулировать механику и заказать покрытие для рабочей поверхности стола.
На фото старый и новый принтеры в сравнении и новый принтер на своём рабочем месте
я печатаю в основном полилактидом или стирол-бутадиен-стиролом, они при печати почти не пахнут (а PLA пахнет жжёным сахаром, ибо по сути полимер молочной кислоты), так что запахи не проблема, как и шум в принципе, в шкафу звуки почти не мешают, т.к. принтер стоит на мягких резиновых демпферах и гудёж не такой сильный. Ну и работа с учёбой дали полезный перк спать при любом шуме и в любом положении х)
Да я даже не про шум и запах, к такому привыкнуть можно. А вот именно к отравляющему действию того же стирола не очень. Я печатаю почти всегда АБС-ом и от него не сколько запах сколько именно отравляющий эффект, хоть принтер и на кухне за закрытой дверью печатает и его не слышно, но спится почему-то плохо. В общем не советую этой бякой дышать, неизвестно что оно может вызывать после длительного воздействия... А ещё байки про наночастицы (от любого пластика) при печати. Не знаю на сколько это правда, но мелкодисперсная пыль любого вещества в лёгких это не полезно...
И ещё этот противный приторный привкус во рту, если слишком надышаться... Что потом постоянно хочется пить, дабы "смыть" это неприятное ощущение. Blacky, к сожалению, это правда. Только приставка "нано-" притянута за уши, т.к. эти частицы крупнее 1 мкм. Во время плавления пластика (независимо от того, как называется) происходит испарение канцерогенов. А спится плохо потому что вся эта бяка попадает с кровью в головной мозг, из-за чего нарушается его нормальная работа. Во время работы 3D-принтера лучше проветривать помещение.
Сообщение было изменено пользователем RexX 22 Ноя 2020 04:17
зависит от того какой пластик плавить, и тут не надо путать жопу с пальцем, АБС при расплавлении действительно выделяет целый букет "прекрасной" химозы, как и нейлон, но бутадиенстирол и полилактид вполне безвредны (первый так вообще имеет пищевой сертификат), а второй по сути своей — полиэфир, и за счёт своей низкой токсичности, высокой механической прочности и биосовместимости неплохо используется в медицине. Чепуха про наночастицы от печати — она чепуха и есть, у нас тут всё же не фрезерование идёт, и даже не селективное спекание, пыли браться банально неоткуда, а молекулы самого пластика (даже мономеры) слишком большие и тяжёлые, чтобы испаряться.
АБС при нагревании, в силу своего состава, начинает активно гадить в воздух акрилонитрилом, который в принципе токсичный, но учитывая объём расплавляемого пластика (десятые, а то и тысячные доли грамма) те копейки которые успевают выделиться вынесет любая исправная вентиляция (даже щели в окнах) и набрать в помещении сколько-нибудь существенное количество этой дряни с помощью одного принтера банально не получится (если конечно речь не идёт о герметично закрытом бункере ;Ъ ), ну а запах, запах да, премерзкий, поэтому катушка абса у меня висит уже шестой год почти непочатая (метр филамента не считаем). Ну и механические свойства полилактида меня больше устраивают, при меньшей эластичности он обладает более высокой жёсткостью, хотя и более высокой хрупкостью. Атмосферостойкость же PLA вполне на уровне, он хоть и биоразлагаемый, но происходит это не за год и не за два )
Статистическая информация скрыта от поисковых роботов для оптимизации производительности и повышения качества индексации.
Распознана поисковая машина: claudebot
Всего обращений к сайту: 2336069