conan
Участник-
Постов
56 -
Зарегистрирован
-
Посещение
-
а не изобретаю ли я tcp ?
conan ответил VCucumber тема в В помощь начинающему
Много лет назад реализовал протокол двусторонней пакетной передачи (по uart) сообщений с гарантированием на основе контрольных сумм, таймаутов и повторных передач. Без адресации -- только два узла. Была самодельная многопоточность. Сперва реализовал на C под DOS на PC, потом просто строчка за строчкой перенес на avr asm -
а не изобретаю ли я tcp ?
conan ответил VCucumber тема в В помощь начинающему
А многопоточность доступна? -
Full Bridge для мотров
conan ответил jenya7 тема в Схемотехника
Если пренебречь потерями на заряд-разряд завтора, то общие потери на ключе складываются из статических и динамических потерь. Чтобы для меандра на низковольтном мосфете с сопротивлением открытого канала 5mOhm получить 5W статич. потерь нужен ток стока sqrt(2*5/0.005) = 45A. Если взять время переключения в 100nS и макс. мощность при переключении как 45A*30V=1350W, то при частоте 10kHz динамические потери будут 2*1e-7*10000*1350=2.7W. Итого 5+2.7=7.7W -
Full Bridge для мотров
conan ответил jenya7 тема в Схемотехника
Если мотор низковольтный, то проблемы нагрева ключей нет -
Full Bridge для мотров
conan ответил jenya7 тема в Схемотехника
Когда-то реализовывал ШИМ-управление коллекторным электромотором постоянного тока (30V, 500W). Там нужно было выдерживать положение и (соответственно) скорость во времени по опред. закону. Реализовал так, что при логич. 0 открываются Q1 и Q4, а при логич. 1 открываются Q2 и Q3. Т. е. когда 0 -- полный вперед, когда 1 -- полный назад. Когда меандр -- мотор стоит на месте (потребление минимальное засчет индуктивности обмоток мотора). По крайней мере до 50 кГц без каких-либо радиаторов различимого на ощупь нагрева на MOSFET-ах не было -- при любых режимах -
Определить сигнал DC или AC.
conan ответил jenya7 тема в Программирование
Подобрать апроксимирующую синусоиду и исходя из ее периода и амплитуды принимать решение -
Интерфейс для энкодера.
conan ответил jenya7 тема в Схемотехника
Будучи не в теме вопрос из праздного любопытства: что такое 5V-24V? ЭДС, логический уровень, еще что-то? -
работа транзистора с ОЭ
conan ответил Метценгерштейн тема в Схемотехника
Какой прок от этого знания? Почему недостаточно рассматривать транзистор как черный ящик со спецификацией, где приведены параметры и кривые -
Аргумент в функции - was set but never used
conan ответил jenya7 тема в Программирование
Ну так ведь в одном случае вы записываете в саму переменную-аргумент (block_start_addr =), а в другом в переменную, на которую ссылается указатель (*text_type =) -
Можно сделать шаблон для общего случая, и к нему специализации: template<int USARTx_BASE, int FIFO_SIZE> class Uart {}; template<int FIFO_SIZE> class Uart<UART0, FIFO_SIZE> {}; template<int FIFO_SIZE> class Uart<UART1, FIFO_SIZE> {}; ... template<int FIFO_SIZE> class Uart<UART16, FIFO_SIZE> {}; Если для какого-то USARTx_BASE нет специализации, то будет использоваться общий вариант. Можно сделать специализации не только по одному аргументу, но и по нескольким: template<> class Uart<UART1, 32> {}; Но типы полученные от одного шаблона с разными значениями шаблонных аргументов -- разные типы. Нельзя объект от Uart<UART0, 16> передать в функцию, которая ждет Uart<UART1, 16>& или Uart<UART, 32>& (но можно сделать функцию тоже шаблонной). Еще есть подход Type erasure
-
2. Нестатический метод класса можно вызывать только для обьекта. UartBase::ISR (или ISRBase?) у вас метод нестатический и его можно вызывать только для существующего обьекта класса UartBase или обьекта производного класса. О чем компилятор самым явным образом вам сообщает. 1. Не понятно в чем вопрос. Значения для шаблонных аргументов становятся частью спецификации типа. Классы порожденные от одного и того же шаблона с разными значениями аргументов есть разные типы. Не понятно зачем нужна эта помойка
-
возврат указателя на массив из ф-ии
conan ответил Метценгерштейн тема в Программирование
Почему странный? Стандартный способ. Два основных подхода: 1. Вызывающая сторона выделяет память и передает адрес буфера в функцию в качестве аргумента. Функция заполняет буфер результатом работы. За освобождение памяти отвечает вызывающая сторона. Иногда, когда заранее неизвестно сколько надо будет памяти, чтобы поместился результат, функция вызывается два раза. Первый раз -- с 0 в качестве указателя на буфер и тогда, функция не генерирует результат, а только вычисляет и возвращает размер необходимого буфера. Потом вызывающая сторона готовит буфер нужного размера и вызывает функцию повторно, но уже с указателем на буфер. Такой под-подход встречается, например, в WinAPI. 2. Память выделяет сама функция и возвращает указатель на этот блок, заполненный результатом работы. Не кошерно, если потом память освобождается прямым вызовом free. По-хорошему должна быть отдельная функция которая просто освобождает память: Data *doSomething(); void free(Data *); Именно так устроено большинство C-библиотек. Есть набор функций, которые выделяют память и возвращают указатель и есть отдельная функция, которая по этим указателям память освобождает. Такой подход, например, позволяет подключать библиотеки, которые собраны другим компилятором (или тем же, но с другими настройками, которые влияют на распределитель памяти) -
возврат указателя на массив из ф-ии
conan ответил Метценгерштейн тема в Программирование
С точки зрения спецификации языка C доступ к локальным переменным функции после её завершения влечет неопределенное поведение. Если копнуть глубже, то поведение зависит от устройства конкретного компилятора и конкретной платформы. На микроконтроллерах и ОС типа DOS данные в локальном массиве после завершения функции могут быть перезаписаны обработчиками аппаратных прерываний. В ОС использующих механизм страничной адресации памяти диапазон массива теоретически вообще может оказаться unmap-ленными и тогда даже попытка чтения приведет к segmenation fault и немедленному завершению программы -
Умножитель сигналов
conan ответил conan тема в Схемотехника
В рамках самообразования рисую pfc из библиотечных элементов LTspice (без расчетов, путем проб и ошибок): Захотелось реализовать регулирование выходного напряжения -- перемножением сигнала входного напряжения (R8,R9) и ошибки выходного напряжения. Поэтому обратил внимание на умножитель сигналов -
Умножитель сигналов
conan ответил conan тема в Схемотехника
Так и есть. Эксперименты в LTspice Это же jfet, а в умножителе mosfet