Jump to content

ruhi

Members
  • Content Count

    564
  • Joined

  • Last visited

Everything posted by ruhi

  1. Так сделайте два буфера, если проблема в этом. Что вам мешает?
  2. Ну можно только порадоваться за вас. Раз все сделано, то делать больше ничего не надо, на этом и покончим.
  3. как же вы его освоили если вопросы формулируете в совершенном противоречии с принципами работы ДМА. Если есть желание разбираться: контроллер ДМА это отдельное устройство! Он копирует данные взятые по одному адресу памяти(источник) в другой адрес-назначения (бывает что другого типа памяти - надо понимать что бывают разные типы памяти и не всегда можно создать канал из одной памяти в другую, канал это абстракция это совокупность всех настроек ДМА для того что бы происходило банальное копирование) соответственно вы должны задать контроллеру ДМА адрес памяти источника, адрес памяти назначения, один из битов (обычно это флаги прерываний) по которому запускается копирование очередной порции Детали в каждом процессоре свои и я их особо и не помню, это что то про: как задать тип памяти, кол-во байт для копирования, тип инкремента источника и дестинейшена, какие то "барсты" - вроде как групировки, ... Там море нюансов и не всегда понятно: надо на них обращать внимание или нет - очень сложно понять как выяснить на практике.
  4. Ну теперь, глядя в код, хотя бы можно догадаться чего вы хотите. Я так понимаю хочется заменить чтение значений АЦП + установка порта в зависимости от этого значения в коде на использование модуля ДМА чтобы это делалось аппаратными средствами этого модуля ДМА (передача значений АЦП в порт). Вам надо не флаги в прерывании, а надо разбираться с РЕГИСТРАМИ для управления переферийным модулем ДМА + там есть специальные РЕГИСТРЫ и в модуле АЦП! которые тоже надо правильно сконфигурировать для того чтобы перенаправить считанные значения АЦП через модуль ДМА, вообще говоря и порт тоже надо соответствующим образом настраивать, а про прерывания от ДМА я даже не буду пытаться здесь описать что там надо. И это наверно самое короткое, простое и поверхностное описание того что надо там понимать и делать! Как видите это очень нудная, кропотливая и сложная тема и работа. Мне требовались недели чтобы по англоязычной документации написать тестовую программу и додебажить ее до рабочего состояния и убедиться что я все правильно понял и все правильно делаю. Это было уже несколько лет назад и теперь мне снова нужно было бы пару недель что бы вернуться в эту тему! И у меня были ДМА на других процессорах. Я, извините, не верю что при вашем уровне знаний по теме, вы сможете в этом направлении достичь каких то результатов и не думаю что вам можно помочь по этой теме-задаче.
  5. Вы не правильно понимаете задачу, начинать надо со схемотехники, а не с кода! Код нужен, сначала, чтобы проверить схематехнику-схематику (соответствие разводки принципиальной схеме грубо говоря), проверке работоспособности аппаратных функций по отдельности, а потом в комплексе ... Я не только сталкивался, но и решал успешно и самостоятельно такие задачи. Я очень сомневаюсь (не верю) что код который я разработал тогда для своих индикаторов под свою специфику функциональности можно, даже сегодня, найти где то в интернете! Это всегда спецефичный код под конкретную задачу! Поэтому ваш вопрос выглядит просто неадекватным с технической точки зрения, у вас же не пройден этот этап проверки схемотехники? И какой смысл рассуждать с вами о том какие бывают программы?
  6. мне, кстати, этот же мульт на ум приходил! Нет лучшей аналогии!
  7. То есть вам совершенно не понятно что это совершенно не адекватный вопрос с технической точки зрения, и это совершенно не адекватное название темы??? Чтобы устанавливать какие либо флаги у вас должна быть цель, но вы эту цель никак не заявили в ваших высказываниях, что заставляет всех думать что цели у вас просто нет! А пока у вас нет цели вы можете сколько угодно устанавливать все флаги скопом хоть в два ряда!
  8. Интересно кстати, можно оценить вероятность существования такой программы, Ваш индикатор это одно из десятков тысяч устройств (N устройств) Тини процессор это одно из, скажем, тысяч платформ (M платформ) ну и то что вы хотите увидеть это набор функциональности пусть один из тоже десятков тысяч наборов функциональностей (К наборов) Итого: N*M*K можно оценить как СТО МИЛИАРДОВ ВАРИАНТОВ, один из которых вы хотите получить (даже если я ошибся в СТО раз это милиард)! Как вы думаете сколько должен получать администаратор-создатель базы исходников со всеми этими решениями?
  9. тут один очень известный руководитель недавно жаловался: "некоторые думают что электричество получается просто из розетки", и что то там и про булочки которые растут на деревьях, В данном случае видимо вы исходите из того что код появляется в интернете тоже сам собой, просто вредные и жадные Айтишники-программисты его копируют себе и удаляют в общем доступе, что бы никому не достался, или что бы барыжить в свою пользу. Насколько я знаю это ошибочный взгляд на действительность, мягко говоря!
  10. Так вы хотите частоту выходного меандра сделать в 4 раза выше чем у входного? А как у вас обрабатывается ситуация когда следующий период короче предыдущего? Вы же поделить можете только на основании значения длительности полученной из предыдущего периода, и если следующий меньше вы вылетаете за его пределы, и как вы эту ситуацию обрабатываете? в чем идея? Она вообще есть эта идея? Что толку в коде если у автора нет понимания того какой метод обработки событий и параметров он хочет реализовать? Если у автора нет идеи которую он хочет реализовать! и тут тоже прикольно. Да уж какие нафик идеи, очем это я...
  11. то что вы придумали не соответствует действительности, ну и получается что вы ищете то чего нет с очевидным результатом. Забудьте свою стройную красивую теорию и начинайте изучать то что имеет отношение к практике: стек для переменных, регистры, волотильные переменные, векторы/таблица/приоритеты прерываний, флаги разрешения прерываний, флаги запроса прерываний, ... вообще с ассемблером не мешает познакомится если вы действительно хотите что то понимать про прерывания. Кстати, я не думаю что в вашем контексте надо различать внешние прерывания от внутренних прерываний, насколько я вижу из ваших обрывочных пояснений для вашей программы нет разницы пришло прерывание от внутреннего таймера или с внешней линии- с ноги контроллера. Попытайтесь хоть что то понять не с позиции того как это ПО ВАШЕМУ должно работать, а с позиции того как вам это излагают-обосновывают.
  12. А кто вам сказал что это как обычно? Где вы видели что кто то так делал без операционной системы и успешно? А вообще для компилятора прерывание это просто функция (ну может с парой спец атрибутов), а о том чтобы ее вызов не портил переменные фоновой программы или переменные другой функции-прерывания это исключительно ваша проблема, в стандарте С/С++ нет такого понятия "прерывания" поэтому для компилятора это просто функция с некоторыми дополнительными спец атрибутами по генерации пролога и эпилогов.
  13. Найди вот такую таблицу в описании к микросхеме своего контроллера: Очень не просто разобраться с непривычки, хотя формула примитивная (5-8класс), но раз ты в это влез - деваться некуда, никто за тебя не соберет все значения и не посчитает! А я обычно осцилографом проверяю результаты расчетов, потому что очень легко упустить какой нибудь множитель из настроек, например!
  14. Что значит "передать данные через терминал"? Можно передать данные через UART -НА- терминал, например! Тогда надо следить за соответствием настроек этого последовательного порта: COM-порта в компе (+ настройки терминала, возможно) и УАРТА в микросхеме. Вы проверяли, соответствуют? И предыдущий пост примерно про это. Полторы ТЫСЯЧИ строчек кода не очень разумно выкладывать, без хоть какого то простейшего указания где их читать.
  15. ага, вижу! промахнулся с автором (надо же как подставили : ), это было к: Это конечно поразительно, как можно просерфить весь интернет и не найти элементарного знания про то как числа сохраняются в переменных ...
  16. откуда вы пришли к выводу ? У вас там написано, что используется расширение GCC. Расширение GCC это не С и не С++, это какая то самодеятельность GCC, которая не будет обрабатываться в любом другом компиляторе. Поэтому решением является НЕ использовать не стандартные расширения компиляторов, если вы хотите чтобы код компилировался в разных компиляторах, это не имеет отношения к С/С++, это особенность конкретного компилятора (несовместимость по допустимым конструкциям кода), точнее использование этой особенности в коде.
  17. вот эту функцию надо вызывать в прерывании
  18. Это конечно поразительно, как можно просерфить весь интернет и не найти элементарного знания про то как числа сохраняются в переменных (в ячейках памяти ограниченной байтовой длинны), в вашем конкретном случае число со знаком сохраняется в двух байтах, просто ответьте на вопрос какое максимальное число можно уместить в двух байтах! и что будет если пытаться сохранить в двух байтах большее число. Это к вопросу о наличии базовых знаний для программирования, это арифметика с ограниченной разрядностью и отображение натуральных чисел в числа с ограниченной разрядностью, изучайте! Вы и найти это не можете потому что это очевидные вещи, для тех кто вырос в этом мире, а вы из другого мира получается (и это не хорошо и не плохо, может вы в чем то другом лучше ориентируетесь, просто это такая данность).
  19. Вы конечно интересно выражаетесь, но называется это программированием микроконтроллеров (Пиков в вашем случае), Вот что бы вы посоветовали человеку который хочет придумать вот это вашу схему, но не различает что такое постоянное напряжение/ток от переменного, и вообще не очень понимает какое отношение имеют понятия напряжение/ток к схемам подобным той которую вы нарисовали. Вот так и вам надо начинать изучение програмирования (в общем смысле этого термина) с основ, с шестнадцатиричной арифметики, булевой логики, битов, байтов, функций, ... Делать это лучше на большом компьютере по моему глубокому убеждению, заодно проверите есть ли у вас предрасположенность или интерес к освоению этого направления.
  20. Можно, кстати, и схему нарисовать на логических элементах, чтобы рисунки были привязаны к понятным входам-выходам, а то опять получится как всегда : ) .
  21. Вот прям ужасно интересно как же вы зациклили до бесконечности???!!! У вас же счетчик до бесконечности должен считать! Как вы сделали такой счетчик на логике, поделитесь секретом?
  22. так проблема с программой на ПК получается??? Зачем тогда код из микроконтроллера приводить? Все ты в кучу свалил, поэтому и разобраться не можешь, и никто тебе не сможет помочь по такому сумбурному изложению! Можно только посоветовать начать раскладывать все по полочкам. Посмотри осцилогафом после чего происходит прекращение передачи, там должна быть какая то особенность в сигналах, в формах, таймингах, относительных таймингах, ...
  23. ruhi

    STM32l0 SPI SX1276

    дак разберитесь что у вас за беда с малиновым сигналом, почему он наводки ловит с остальных линий? Беда какая то с подключением! Схему подключения проверяйте на железе! Может режим ноги не выставлен правильно в контроллере, картинка соответствует ноге настроенной на высоко-импедансное состояние=обрыв, а она должнабыть выходом или входом? Если выходом то тут и есть ошибка.
  24. файлы которые начинаются Makefile не надо наверно трогать, зачем вы их открываете? Они вроде как автоматически генерятся! Вот они у вас и перегенирировались, стерлись ваши изменения в них и все стало хорошо (наверно).
  25. это наверно где то в настройках проекта у вас процессор не тот выбран, для которого этот регистр не существует, ищите тип процессора в настройках проэкта (среды разработки)
×
×
  • Create New...