Перейти к содержанию

Помогите написать программу


Евгений61

Рекомендуемые сообщения

Здравствуйте. Хочу попросить помощи у имевших дело с STM. В общем вопрос такой. Как можно реализовать прием информации (скажем одного байта) по длительности импульса. Т.Е. если на вход ножки поступает байт (какая то определенная команда) то нужно зажечь светодиод.

Нужен сам принцип реализации

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

48 минут назад, Евгений61 сказал:

Нужен сам принцип реализации

Принцип такой :

Подаём питание , программа начинает старт с функции main() , сразу идет инициализация периферии , в том числе и юарт. После инициализации попадает программа в бесконечный цикл. 

В прерывании юарт помещаем полученные байты в массив , а в бесконечном цикле ищем в массиве строковые совпадения с искомым , и если находим совпадение - включаем светодиод. Это принцип АТ команд . Это вкратце описан принцип работы .

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я знаю что рано, программирование программирование пока осваиваю. Почему на стм невозможно?

3 минуты назад, artos5 сказал:

 

В прерывании помещаем полученные байты в массив , а в бесконечном цикле ищем в массиве строковые совпадения с искомым , и если находим совпадение - включаем светодиод. Это принцип АТ команд . Это вкратце описан принцип работы .

Это получается что сначала нужно записать код поторый получен скажем с ножки МК в память, потом уже искать нужное нам значение?

Ссылка на комментарий
Поделиться на другие сайты

Сначала в прерывании юарт загружаются приходящие на RX символы в массив скажем размером в 128 байт , потом в основном цикле ищем в этом массиве строки через case switch или if else нужные нам строки , и если нашли - выполняем действия и очищаем массив .

Но вам лучше начать с помигать светодиодом , а потом уже более сложное начинать .

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

STM - не лучший выбор для начинающего. В нём очень много функций периферии реализовано "железно". Это разгружает ядро, но требует специфического подхода к программированию.Например, тот же UART работает независимо, складывая данные в память через DMA. Основная программа периодически просматривает этот буфер в памяти. Это и описал @artos5 . Большая часть программы - это настройка периферии, выделение памяти под буфер, то есть не относящаяся непосредственно к логике (получил нужный байт = зажёг светодиод). Как раз тут и засада для начинающих: нужно разобраться с тактированием разных частей периферии и ядра, работой DMA, UART. А внятной документации на русском языке нет. Придётся читать даташит и аппноуты на английском.
В AVR проще: USART после приёма одного байта вызывает прерывание, в нём и сравниваем принятый байт с нужным. Код получается короче  и понятнее для начинающего. Русской документации с примерами полно.

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, Евгений61 сказал:

Я знаю что рано, программирование программирование пока осваиваю. Почему на стм невозможно?

Это получается что сначала нужно записать код поторый получен скажем с ножки МК в память, потом уже искать нужное нам значение?

С какой, нафик :),  ножки, какой, нафиг, код!!! 

если у вас принимается какое-то значение, то это скорее всего байт. Принимается он конечно с ножки, но в процессоре вы сможете получить это значение(байт) только из соответствующего ПЕРИФЕРИЙНОГО МОДУЛЯ процессора, это скорее всего UART(USART) - Вы хоть знаете что это такое?. Чтобы этот модуль работал (просто включился) его надо инициализировать, и еще, наверно, определить прерывание, А это знаете что такое? - это НЕ язык-С - там нет прерываний и регистров нет, которые определяют состояние ПЕРИФЕРИЙНых МОДУЛей !

Так что вам сначала надо зажечь светодиод по факту приема этого кода. Найдите регистр и флаг который сообщает о приеме нового значения в UART(USART)  - это уже сверхзадача для вас, я думаю!

Когда найдете, можно будет обсуждать бесконечные циклы :)!

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, Евгений61 сказал:

токо Си начал изучать

Учиться Си лучше начинать с ПК, а не МК

9 часов назад, oldmao сказал:

В AVR проще: USART после приёма одного байта вызывает прерывание, в нём и сравниваем принятый байт с нужным. Код получается короче  и понятнее для начинающего.

А в STM не так? Ровно точно так же и кода примерно столько же получается...

Ссылка на комментарий
Поделиться на другие сайты

28 минут назад, BARS_ сказал:

USART

Мне нужно без подтверждения. т.е. микроконтроллер прянял код, обработал его и выполнил определенную команду. А с USART помоему нужно еще отправить типа МК принял команду. Поправьте если не так.

31 минуту назад, BARS_ сказал:

В AVR проще: USART после приёма одного байта вызывает прерывание, в нём и сравниваем принятый байт с нужным. Код получается короче  и понятнее для начинающего.

ТАк он сначала должен же записать его в память а потом достать и обработать?

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, Евгений61 сказал:

А с USART помоему нужно еще отправить типа МК принял команду.

Может тогда стоит почитать описание интерфейса?

 

5 минут назад, Евгений61 сказал:

должен же записать его в память а потом достать и обработать?

Он записывает значение в РЕГИСТР, а что с ним будет дальше - забота программиста. И все таки надо начать с теории и 8-битных МК, тех же AVR. И обязательно на ассемблере.

Изменено пользователем BARS_
Ссылка на комментарий
Поделиться на другие сайты

Только что, Евгений61 сказал:

Поправьте если не так.

Конечно не так. С usart можно как угодно.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Всем спасибо. Еще вопрос. Допустим если реализовать не через UART а на прерываниях, тогда как записать пренимаемый байт. нужно сначала записать биты в регистр, а потом значение регистра приравнять переменной?

Если возможно то как выглядит хотя бы примерный простейший код на си

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, Евгений61 сказал:

Всем спасибо. Еще вопрос. Допустим если реализовать не через UART а на прерываниях, тогда как записать пренимаемый байт. нужно сначала записать биты в регистр, а потом значение регистра приравнять переменной?

Если возможно то как выглядит хотя бы примерный простейший код на си

К такому коду не применимо определение "простейший"!

Вам лучше думать, что это не возможно (на данном этапе вашей подготовки, по крайней мере :).

Разбирайтесь с UART-ом. Вот вам хорошую ссылку  elki предложил, там не так уж много читать.

Надо все таки что то для начала почитать, а еще лучше пощупать, что бы вопросы, хоть, выглядели адекватными выбранному направлению работы-обучения.

Изменено пользователем ruhi

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

BARS_, неправильная рекомендация ... Зачем ему лезть в ассемблер да еще под АВР ??? Ассемблер сильно привязан к архитектуре  и производителю МК. Это будет пустая трата времени. Я начинал из Си и ни минуты не жалею об Этом.

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

28 минут назад, artos5 сказал:

Ассемблер сильно привязан к архитектуре

Абсолютно нет. Команды там стандартные. А начинать с асма, чтобы появилось понимание, как и что хранится в МК.

 

29 минут назад, artos5 сказал:

Я начинал из Си

Я, можно сказать, тоже. Но у меня при этом не возникало вопросов про то, как и что хранится...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...