avatar
Отписался в личку.
avatar
Хотя поправочка: сколько будет стоить UTC 4.0. Именно он!
avatar
Может кто-нибудь рассказать, как работают элементы типа Filter и DMA? И вообще очень нехватает информации об PSoC 3 и PSoC5 на русском языке.
Буду очень рад всем публикациям на эту тему!
avatar
Это либо плохой мультиметр, либо хорошие щупы… Такого сочетания нужно избегать :D
avatar
Доброго времени суток! Хотел бы спросить можно ли заказать прерыватель. И сколько это будет стоить? Сам строю Поющую Теслу и не имею возможности купить контроллер. Их просто не продают в моем городе. Желательно что-нибудь попроще. Идеально было бы вот так onetesla.com/midi-interrupter-kit.html#.
avatar
Mentor Graphics Expedition Это моя первая система для проектирования ПП. Потом еще освоил Altium Designer но все же Ментор мне нравится больше. На мой взгляд из преимуществ Ментора это жесткая связь между всеми этапами разработки ПП начиная от создания пада… схема… разводка ПП в отличии от Альтиума где связь достаточно гибкая.
avatar
Когда осколки мультиметра летят в лицо, не до новых щупов :)
avatar
Можно просто купить несколько комплектов шупов =)))
avatar
Ха :) А я мерял именно ампераж сети :) Именно поэтому, такая вот заглушка очень полезна :)
avatar
Ой блин, я на видео сказал, что мерял ампераж сети, вот йо…
Имелся в виду ток потребления аппарата с питанием от розетки.
Забавно, но у меня дядя как-то мультиметр попросил, ну я дал, перед самым уходом спросил, мол, нафиг он тебе? Оказалось, хотел померять, какой ток сможет дать проводка в его доме, и это на полном серьезе. Забрал обратно.
:D
avatar
В меня тут завал, ты ж знаешь… да и самому скучно будет, кто ж умной озвучкой будет сопровождать, так чтобы у самих представителей уши заворачивались )))
avatar
Да, машиностроение было крутое. А выставка еще три дня идти будет, можешь сходить.
avatar
Спасибо за отчет и видео. Жаль я не смог пойти тоже. Выставки это весело… особенно веселая была по машиностроению )))
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
Я, что то замешкался и мне еле купили билеты Львов-Киев-Львов. На носу праздники все туда сюда будут ездить, а я тут со своей выставкой.
Огромное спасибо, Сергей, что проинформировал про выставку!