Прямой эфир

+1
Еще бы он не забывал, что не у всех руки такие прямые

Так для этого я стараюсь выдать материал с подробным описанием (насколько это у меня получается). Но часто к сожалению срабатывает эффект Кисы Воробьянинова и некоторые детали я просто опускаю считая их очевидными.
Не надо стеснятся задавать вопросы, чем смогу помогу.
0
Было бы странно ожидать от Technicum505SU что-то иное) Еще бы он не забывал, что не у всех руки такие прямые :D
  • avatar
  • Vga
  • 04 июня 2018, 18:17
0
P.S. Иногда встречал в чужом коде и такое :)
#include «file.c»
Ну, это двоякий момент. Бывает, когда человек это делает намеренно и с полным пониманием того, что он делает. Пример — Оберхеймеровские сырки, скажем LZO или UCL.
Бывает, конечно, и даже чаще, что это просто чайник…
  • avatar
  • Vga
  • 04 июня 2018, 18:10
0
1 — Защита от перекомпилирования, на тот случай, если хедер где-то еще добавлен.
Ты невнимательно читаешь. Впрочем, это уже разжевали комментом выше.
2 — Да, дефайн написан для облегчения написания.
Ты невнимательно читаешь. Вопрос был «чем тебе не угодил типизированный указатель».
Но я вижу, что это ты уже пофиксил. Но пофиксил неправильно. Во-первых, не soft_timer *ptr_timer, а struct soft_timer *ptr_timer. Во-вторых, «soft_timer *ptr = ptr_timer;» из всех функций нужно выкинуть, а все ptr в коде функций заменить на ptr_timer. И напоследок — скормить компилятору и убедиться, что у него нет претензий — которые обычно намекают, что ты что-то забыл или сделал не так.
3 — Нет смысла выполнять какие-либо арифметические действия над счетчиком тиков.
Напротив, есть. Можно вычесть из текущего предыдущий и узнать, что с момента прошлого вызова функции прошло 10 тиков. После чего вычесть из cnt 10 тиков (здесь надо учитывать тот случай, когда в cnt менее 10 тиков и даже случай, когда период менее 10 тиков и надо щелкнуть таймер несколько раз).
  • avatar
  • Vga
  • 04 июня 2018, 18:08
0
Защита от двойного включения заголовка это

#ifndef SOFT_TIMERS_H
#define SOFT_TIMERS_H

А вот писать
#include "soft_timers.h"

в самом файле soft_timers.h бессмысленно.
P.S. Иногда встречал в чужом коде и такое :)
#include "file.c"
+1
Как заводское, красота!
0
1 — Защита от перекомпилирования, на тот случай, если хедер где-то еще добавлен.
2 — Да, дефайн написан для облегчения написания.
3 — Нет смысла выполнять какие-либо арифметические действия над счетчиком тиков. Именно поэтому он u08. Выполняется только сравнение предыдущего и текущего состояния. Если изменилось, значит тик произошел, декремент заданного значения времени.

Я не программист, электронщик. В программирование пришел от железа. Первые годы писал проекты только на асме. Несколько лет назад начал изучать си. Поэтому в проектах остались атавизмы с того времени, когда начинал изучение си.
+1
Но вероятно в будущем, кому — то это может пригодится

В будущем? Или может быть, в прошлом?
0
Я как бы уже не один раз в своих публикациях описывал такой прием разметки.
Возможно и упоминал, не помню, но врядли объяснял, зачем именно нужно мазать купоросом.
Тем более осаждение меди на железе знает каждый школьник, вернее должен знать.
Школьник много что должен знать. Теоретически. А практически — только то, что нужно на практике.
Здесь найдешь таблицу сохрани ее себе где нибудь, на будущее.
Знаю я эту таблицу. А вот найти размер зерна в ГОИ — задачка посложнее. Но, полагаю, №1 врядли имеет зерно крупнее 1-2 микрон. Энивей, переходить на ГОИ №4 обычно рекомендуют как раз после 2-2.5 килогрит.
  • avatar
  • Vga
  • 03 июня 2018, 18:48
+1
А, вон почему трубка медной выглядит. Ты слишком много деталей опускаешь, забывая что аудитория запросто может быть не в курсе таких трюков. Здесь, все-таки, электронщики в основном.
Я как бы уже не один раз в своих публикациях описывал такой прием разметки. Просто ты уже забыл или пропустил мимо. Тем более осаждение меди на железе знает каждый школьник, вернее должен знать.
Я прикидывал, что паста ГОИ ближе к 10000 (правда, вероятно, для самой тонкой).
Вероятно так оно и есть. Тут дело в стандартах и классификации абразивов в различных странах.
Маркировка по ГОСТ и маркировка по ISO иногда могут ввести в заблуждение любого покупателя. Здесь найдешь таблицу сохрани ее себе где нибудь, на будущее.
0
Я периодически извлекаю их из бывших в употреблении шарикоподшипников.
Некислого размера подшипничек был…
Для этого в разметке по стали и применяют медный купорос. Снимается лишь слой осажденной меди и обнажается железо.
А, вон почему трубка медной выглядит. Ты слишком много деталей опускаешь, забывая что аудитория запросто может быть не в курсе таких трюков. Здесь, все-таки, электронщики в основном.
Обработка абразивом зернистостью Р1000 это примерный эквивалент по зерну пасты ГОИ.
Разве? ЕМНИП я прикидывал, что паста ГОИ ближе к 10000 (правда, вероятно, для самой тонкой). Но да, 1000 уже дает довольно-таки блестящую поверхность. Про обработку шкуркой 2500 я действительно проморгал.
У нас в городе хрен где найдешь внятный ассортимент абразивов, в основном не больше 320 можно найти…
  • avatar
  • Vga
  • 03 июня 2018, 17:35
+1
А где ты раздобыл двухсантиметровый стальной шарик?
Я периодически извлекаю их из бывших в употреблении шарикоподшипников. В авто — мастерской они как правило всегда бывают.
Изделие слишком красивое для трубки, которую шкурили и размечали. Полировал?
Касаемо разметки то на снимках отчетливо видно что разметочные линии тонкие и не глубокие. Если бы размечал по чистому металлу то пришлось бы оставить глубокие царапины. Для этого в разметке по стали и применяют медный купорос. Снимается лишь слой осажденной меди и обнажается железо. Быстро, удобно и глаза не напрягаются.
Касаемо ошкуривания, то ты наверное прочел несколько невнимательно, либо я не пояснил в более понятной форме. Для выведения скажем так, крупных царапин или изъянов, всегда желательно начинать с шкурки с крупной зернистостью, переходя последовательно на более мелкую.
И тут много зависит от изъянов обрабатываемой поверхности и приобретенного опыта работы. Если начать с слишком грубого абразива есть шанс удалить слишком много материала с поверхности. Если же наоборот, то тогда уйдет в отход много шкурки и процесс шлифовки затянется.
Теперь касаемо полировки, тут могу сказать следующее. Обработка абразивом зернистостью Р1000 это примерный эквивалент по зерну пасты ГОИ. Так что Р1500 еще более мелкая, а Р2000 и Р2500 дают в принципе зеркальную поверхность.
0
В принципе большой сложности в этом нет, если в наличии есть необходимые материалы, инструмент, оснастка и умелые руки.
На редкость универсальное заявление :D К сожалению, затык начинается обычно на первом же пункте…
А где ты раздобыл двухсантиметровый стальной шарик?
В итоге на выходе получаем вот такое изделие.
Изделие слишком красивое для трубки, которую шкурили и размечали. Полировал?
  • avatar
  • Vga
  • 03 июня 2018, 15:26
0
Странноват код местами.
#ifndef SOFT_TIMERS_H
#define SOFT_TIMERS_H
#include "soft_timers.h"

Зачем из хедера включать самого себя? Это бессмысленно.
#define handle_soft_timer(a) _handle_soft_timer (&a)
bool _handle_soft_timer (void *ptr_timer);

Дефайн, по-видимому, обусловлен нежеланием писать каждый раз &. Ну, ОК. Но чем не угодили типизированные указатели? И некоторая защита от передачи левого значения, и не требуются struct soft_timer *ptr = ptr_timer в каждой функции.

Имея в структуре prev_sys_tick — можно этим воспользоваться для определения, сколько тиков прошло между вызовами handle. Вместо этого оно используется только для проверки, не вызвали ли handle несколько раз за тик.

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

Ну и немного странно, что в bool пишется то true, то 0. Из разряда «вы или крестик снимите, или трусы наденьте».

По функциональности сказать нечего. Она вполне типична. Хотя я бы, вероятно, постарался собрать таймеры в единую структуру и обрабатывать скопом.
  • avatar
  • Vga
  • 03 июня 2018, 15:16
+1
Кому нужны эти костыли, есть же промышленный стандарт для этого,
Keil MDK-ARM, STM32CubeMX, STM32F4 HAL and LL drivers!
И главное фсё бисплатно, для «знающих людей»!
  • avatar
  • birdie
  • 02 июня 2018, 20:58
0
Вот я и не помню, как эскейпить в винде…
  • avatar
  • Vga
  • 31 мая 2018, 18:10
0
Тогда просто заискейпить все, кроме букв и цифр.
  • avatar
  • evsi
  • 31 мая 2018, 15:06
0
Коллеги, а в самом деле — что с уроками? Тема умерла? Мне досталась по случаю эта плата, а с этими контроллерами я пока не знаком. Хотелось бы с чего нибудь начать
  • avatar
  • ctbr83
  • 31 мая 2018, 05:54
0
Все так. Проблема в том, что echo выводит строку так, как получил. Вместе с кавычками. И tcc удивляется, получив на вход строковый литерал и ничего более:
stdin:1: error: declaration expected
  • avatar
  • Vga
  • 31 мая 2018, 02:10
0
Я не пользовался tcc, так что конкретно за него не скажу. А так просто минус без имени параметра обычно трактуется как «брать данные из входного потока». Только надо следить, что бы все пробелы были на месте, в частности минус обязательно отбивается пробелами с обеих сторон.
  • avatar
  • evsi
  • 30 мая 2018, 23:57