avatar
Спасибо, очень конструктивно! :)
avatar
китайские приспособы в кирове были, и пожосче чем на картинке. Но все равно туфта мне показалась. Лучше станочек. Еще была мысль попробовать фрезер, но не срослось что то…
avatar
Оставлю пару полезных, на мой взгляд, мыслей и рекомендаций.

1. Как уже сказали, лучше в структуре объявить лишь указатель на массив. А уж предоставить собственно массив для буфера — пусть будет задача пользователя.
2. Как обезопасить работу с указателями? Возьмите себе за привычку всегда проверять в начале функций все указатели на NULL, и сразу выдавать ошибку если был передан неинициализированный указатель.
3. Ваша функция выдаст ошибку, если данные не помещаются в буфер целиком. Может оно и верно. А возможно будет удобнее, если функция будет класть в очередь что может, и возвращать количество реально записанных байт. Тут стоит подумать. Вообще подход возвращать что-то более полезное чем 0 и -1 приветствуется.
4. Если функция не изменяет никаких данных в массиве, переданном ей в качестве аргумента, то указатель на этот массив стоит объявлять как const void *. Например, если у меня есть строка «Hello, world!» (как раз тип const), и я хочу запихать ее в буфер.
5. Может стоит добавить функции для записи/чтения одного единственного байта, а не массива. Иногда бывает полезно при использовании в алгоритмах.
6. Кто-то предгалал не использовать переменную count, которая хранит размер данных в очереди. Но тут есть одна проблема — когда буфер заполнится полностью, не получится ли так, что head станет равно tail?
Что я хочу сказать: изначально у нас head = 0, tail = 0. Допустим, мы пишем в очередь FIFO_LENGTH байт данных. Тогда и head станет под конец равным FIFO_LENGTH, и выполнится условие if (fifo->tail == FIFO_LENGTH), что сбросит его опять в 0. Тем самым «очистив буфер». Решений тут два:
1) Хранить не tail и head, а tail и length. А head вычислять.
2) Оставлять в буфере всегда 1 байт.

7. Старайтесь не писать в алгоритмах «жесткие» сравнения: по типу if (fifo->head == FIFO_LENGTH).
Особенно это касается сравнений чисел с плавающей запятой. Ваш алгоритм может быть более стойким к изменениям, если написать if (fifo->head >= FIFO_LENGTH). Или, если совсем заморочиться, та же операция в более общем виде:
while(fifo->head >= FIFO_LENGTH){ fifo->head -= FIFO_LENGTH; } // по сути то же, что и fifo->head %= FIFO_LENGTH

8. Если пишете код «для всех» (библиотеку), то старайтесь делать так, чтобы он заработал сразу у всех.
Например, объявления переменных в середине функции и особенно в for(int i = 0; ...) могут вылезти ошибками при компиляции gcc с флагами -pedantic и -ansi. Еще можно порадовать любителей C++, если вставить в нужные места
Спойлер
#ifdef __cplusplus
extern «C» {
#endif

#ifdef __cplusplus
} // extern «C»
#endif


Еще можно отказаться от «нестандартных» названий типов, и выкинуть из кода #include <stm32f10x.h>. Тогда код можно будет использовать, например, для написания программы для AVR.
avatar
Бида :(
avatar
не иду(
avatar
Завтра мне наконец то вышлют мои платки и мой первый трафарет для пасты!!! Все будет на руках только на среду, что то в отделе отгрузки протупили — я везде заполнил и написал, что надобно высылать во Львов (самовывоза не будет!). В какой раз я вспоминаю слова своего Отца: «Славян не можно попускать, они привыкли, что бы их „пинали“...», просто я сам другого мнения: «Не мешай работать и результат будет еще лучше». Ну это лирика.
Только что приехал из «Епицентра», накупил всякого барахла и расходников по работе, а так же прикупил шпателей пластиковых и резиновых разной плотности (наборы такие с разной шириной). Просто трафарет тоже будет из бронзы, толщину попросил 0,15, так вот подумал, пластик будет более щадительным к столь тонкой бронзе.
avatar
Я, что то замешкался и мне еле купили билеты Львов-Киев-Львов. На носу праздники все туда сюда будут ездить, а я тут со своей выставкой.
Огромное спасибо, Сергей, что проинформировал про выставку!
avatar
Про расщет можно почитаь в даташите, а также можно на оф. сайте поискать калькулятор для микросхем, видел в некоторых производителей, выбираеться микросхема, входное и выходное напряжение, ток и уровень пульсаций и кажеться частота работы, и все номиналы автоматом расщитываються
avatar
Да фиг там, просто отмазались, причем совсем не красиво, но не говорить же, что мол «ребят, маркировка каждого резистора составляет 30% его стоимости, прикиньте, сколько лишних миллионов мы будем зарабатывать в месяц, если от нее откажемся! Так то, надеемся на ваше понимание, народ! Просто смиритесь, за этим будущее!»…
Насчет падения цены не уверен, ведь позиционируются данные резисторы, как эко-продукт, так что черт их знает.
В данном случае я согласен с Andrew, если коммерческая техника хоть немного ремонтопригодна, то после того, как все капы, чипы, резисторы, и индуктивности будут представлять собой черные коробочки, ее можно будет смело выбрасывать при самых банальных поломках, и выгодно это только производителю и никому другому.
P.S.
Не были бы уродами, стали бы маркировать резисторы лазером, как это делается с современными микрухами. Мне лазерная маркировка не нравится, не видно ни хрена, но при желании 555 от Tiny13 отличить можно, это лучше, чем пустые корпуса.
avatar
место есть, но номиналы к сожалению не знаю. я просто брал мультиметр и накручивал нужное напряжение подстроечным резистором.
avatar
Наверно лёгкая и позволяет зажимать любые дрели в этом и заключается её эффективность.
avatar
Подскажите Step-Down на LM2596 вроде, там места под конденсаторы вроде есть, интересует выбор их номиналов?
avatar
Иду.
;)
avatar
С патроном повезло, стандартные от 1.5 мм обычно.
Китайский люфтит сильно, но это не влияет на сверление по предварительно накерненным точкам, ну конечно если речь не идет о сверлах 0,5 мм ))) У нас приспособа стоит около 20 баксов.
Но лучше взять пусть и дешевый но полноценный станок, типа как по ссылке (только проверить люфт). Всяко намного удобнее будет с ним работать и для несложных работ подойдет. Если речь конкретно о сверлении плат, то есть специальные маленькие станочки, бывают тоже китайские занедорого. Ну или самому собрать, но именно маленький станочек с маленьким моторчиком и цанговыми патронами для 0,3-1,5мм сверел.
Ну а так ниче приспособа, выглядит зачетно )))
avatar
Конечно скрутит. Большим диаметром я не собираюсь сверлить. Не знаю, мне так повезло или все китайские дрели могут зажимать в патрон маленькие сверла, но конкретно эта электродрель зажимает даже 0,5мм в патроне без всяких ухищрений.

А по себестоимости, так палка трубы квадратной алюминиевой 2 метра стоит 167 руб., 4 направляющих мебельных = 198 руб, плюс всякие болты да хомуты еще рублей 50-100, в итоге 400-500 руб. Самая дешевая китайская приспособа стоит ~900 руб. и у нее такие люфты что ппц. Я же ходил по магазинам, хотел купить китайскую приспособу, но у нас один шлак продают. Можно было вообще взять сверлильный станок типа этого так он же здоровый по габаритам и за такие деньги качественным быть не может.
avatar
Стекло не приделано, просто оно служит ровной поверхность(деревянный стол от жизни тяжелой прогнулся). Маленькие сверла до стекла не дотянутся.
avatar
2.5 км по прямой? нуну
модули как у меня работают только 300м, мы тестировали (для коммерческого проекта) Но есть модули с разъемом для внешней антенны, дальность должна быть больше.
avatar
конструкция хоть нифига не еффективная, зато еффектно выглядит ;)
avatar
2.5 км по прямой? нуну
avatar
еще круче будет реакция когда на коптеры переключишся, меня за косарь на комплектующие вообще чуть с дома не выгнала =)