Jump to content

ruhi

Members
  • Posts

    566
  • Joined

  • Last visited

Reputation

59 Обычный

Информация

  • Пол
    Мужчина
  • Город
    Дзержинск

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    радиотехника, программирование
  • Оборудование
    радиотехника, цифровая обработка сигналов, управление, любые процессоры и их обвязка

Recent Profile Visitors

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