Jump to content

tar

Members
  • Content Count

    247
  • Joined

  • Last visited

Community Reputation

39 Обычный

About tar

  • Rank
    Постоялец

Информация

  • Пол
    Мужчина
  • Город
    Воткинск

Электроника

  • Стаж в электронике
    3-5 лет

Recent Profile Visitors

975 profile views
  1. А от HAL до CMSIS сколько шагов? Приехали. HAL такой же абстрашн лейр что и SPL. Причем SPL как и HAL построены по одной идеологической архитектуре. Те же структуры, те же функции. Иногда при беглом взгляде даже не сразу заметишь что это SPL а не HAL. Или что по вашему HAL оперирует не регистрами а магическими шарами?
  2. Главный вопрос - зачем нужен SPL когда есть HAL? Человек же написал что на HAL все работает, но он хочет получить результат на цимисе.
  3. Я бы взял без проблем STM32 + REF196 + делитель + повторитель Много вариантов и комбинаций есть. У автора непонятки только какие то.
  4. Ну тогда тут можно брать RTR ОУ типа MCP6022 Получается ИОН на 2 вольта + переменник + ОУ + делитель на 10 + ОУ ХЗ как на самом деле MCP6022 ведет себя при напряжении близком к 0, но поите RTR должен работать адекватно в этой ситуации Я так то в принципе понимаю что можно обойтись одним ОУ и переменником, но мне не нравится такое решение, как по мне напряжение которое приходит на делитель должно быть охвачено ООС да бы гарантировать напряжение на делителе. А управлять напряжением на делителе именно с опорника. Но подобную схему естественно можно упростить.
  5. Поэтому я и предложил сразу же сделать выходной буфер ОУ. По сути выходной ОУ можно усилить парой транзисторов со стабилизацией тока Какой должна быть схема тут, как по мне - Источник напряжения 0-15V (можно взять LM723 или ОУ + ИОН) -> делитель на 100 -> повторитель на ОУ при желании можно умощнить транзисторами Вот пример выходного каскада
  6. Решал я уже похожую проблему https://www.radiokot.ru/forum/viewtopic.php?p=2830240 Тут можно почитать как сделать нормальный делитель, и про точность там тоже немного есть.
  7. Тут главные вопрос - насколько долго нужно держать заданное напряжение? Если подключить и настроить то можно просто использовать переменик с делителем. Но я бы сделал по другому - верный делитель на 100, просто подавал на него напряжение с какого нибудт блока питания. Еще конечно же вопрос выходного сопротивления, в принципе можно сделать повторитель на OP07
  8. Может вы поясните, ну так, насколько рационально использовать в подобных конструкциях такие кольца? Пробежался по небольшой кучке фоток концертников и домашних усилителей и не нашел, что бы кто то их использовал. Собственно даже не удивлен, фильтровать высокочастотный сигнал или синфазку после низкочастотного трансформатора - таким даже профессиональный источники питания не страдают. Но я понял уже, что у вас в аудио это очень "важно". Не дай бог конечно не поставить - не православно. Особенно в усилитель та на lm3886. Ну я думаю вам есть смысл на него равняется. Встанете в один ряд с такими вот ребятами Не холивара раде. Но надо все же понимать границы адекватности.
  9. А там что, написано что: Я же выше привел пример что если я это делаю на x86 у меня никаких проблем нету. И в принципе что то подобное и ожидал.
  10. В чем конкретно проблема? Я не понимаю. Я присваиваю адрес ссылке на структуру, предпологая что дальше в памяти расположатся данные моей структуры
  11. Отчасти вопрос по поводу структур решился, может кому то поможет https://habr.com/ru/post/142662/
  12. Кстати обратил внимания что на четных все так же после 2 байт идет 2 чистых байта ни к чему не привязаны, откуда они там берутся?
  13. Не стал создавать новую тему, может все же я чего то не догоняю Собственно столкнулся недавно вот с какой ситуацией: Расписал я память, начал ее мапить ссылками на структуры, и внезапно часть структур мапится и работает корректно а часть при маппиге и использовании сваливает проц в HardFault_Handler IDE Keil если что Начал разбираться, и откровенно говоря вообще ничего не понял. Возьмем кусок памяти: uint16_t modbus_data[32]; Есть у нас структура такого типа: typedef struct vb_counter_unit { uint8_t init; uint8_t reserve; uint32_t counter; double counter_real; float counter_offset; float pulse_weight; } vb_counter_unit; Структура как структура, создадим ссылку: vb_counter_unit *cu_counters; По сути я привожу пример с чистого проекта под STM32F072C8T6 + CubeMX Далее в main у нас начинается мап+фид: cu_counters = (vb_counter_unit*) &modbus_data[1]; cu_counters->init = 1; cu_counters->reserve = 2; cu_counters->counter = 3; cu_counters->counter_real = 4.4; cu_counters->counter_offset = 5.5; cu_counters->pulse_weight = 6.6; Во время выполнения он заполняет только первые два поля, после чего дропается в HardFault_Handler Начал смотреть память а там ваще котовасия какая та Запускаем и смотрим Видим что у нас заполнился только первые 2 байта, после чего проц ушел в HardFault_Handler Хорошо, в ручную меняем значение поля cu_counters->counter = 0x21; И получаем очень странную картину: Видно что между counter и reserve есть целых 2 байта, откуда они там взялись??? Провожу еще один эксперемент, и начинаю мапить данные не с 1 а с 0 адреса cu_counters = (vb_counter_unit*) &modbus_data[0]; До этого я указывал modbus_data[1]; И о чудо: Все работает правильно. После чего я провел некоторые тесты и выяснилось что если мап я назначаю с четного индекса массива то все работает, если же назначаю с нечетного то он крашится в HardFault_Handler Может кто то ответить что я упустил в этой всей истории? Я взял тут же накидал такой же пример на Xcode что по сути является GCC Вот код: #include <stdio.h> uint16_t modbus_data[32]; typedef struct vb_counter_unit { uint8_t init; uint8_t reserve; uint32_t counter; double counter_real; float counter_offset; float pulse_weight; } vb_counter_unit; vb_counter_unit *cu_counters; int main(int argc, const char * argv[]) { cu_counters = (vb_counter_unit*) &modbus_data[19]; cu_counters->init = 1; cu_counters->reserve = 2; cu_counters->counter = 3; cu_counters->counter_real = 4.4; cu_counters->counter_offset = 5.5; cu_counters->pulse_weight = 6.6; while (1){ } return 0; } И он полноценно смапил все как надо и заполнил Может кто скажет что я упустил?
  14. На самом деле довольно странно что при нынешних ценах на те же MK типа STM32F030F4P6 которые на Алике стоят копейки наблюдать схемы с кучей делителей и многооборотных резисторов. На МК по сути это все решается гораздо удобнее. Настроить АЦП, вычисление конечного вольтажа и можно спокойно переключать с любой логикой хоть 10 реле. При желании можно еще накинуть каких нибудь защит или еще чего типа сбора данных с блока по току и напряжению.
×
×
  • Create New...