Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 27.03.2019, 10:59  
Y.Logvin
Частый гость
 
Регистрация: 04.11.2009
Сообщений: 26
Сказал спасибо: 3
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
Y.Logvin на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от olegprom19 Посмотреть сообщение
можно использовать while
или использовать "статусы" программы
т.е. по мере изменения статусов программа будет заходить и выполнять нужные блоки и "идти дальше"
Единого подхода существовать не может.

Наиболее часто, лично я, использую метод "конечных автоматов".
Програмно это выглядит как switch (‹текущее состояние›) и по case можем перейти на другое состояние, либо выполнять какие то действия, пока не понадобится перейти в другое состояние.
Понятно что этот switch находится внутри while либо внутри потока, например, FreeRtos.
Реклама:
Y.Logvin вне форума  
Непрочитано 27.03.2019, 12:17  
Yuri222
Почётный гражданин KAZUS.RU
 
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,011
Сказал спасибо: 2,770
Сказали Спасибо 2,715 раз(а) в 2,007 сообщении(ях)
Yuri222 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от olegprom19 Посмотреть сообщение
можно использовать while
или использовать "статусы" программы
Как мне кажется - это совершенно разные механизмы.
while - тупо ждать (выполнять что-то) до достижения какой-то величины определенного значения
"статусы" - если я правильно понимаю контекст, это аналог конечного автомата в логике, когда происходят переходы между заранее определенными (выделенными, обозначенными) состояниями объекта.
Yuri222 вне форума  
Непрочитано 27.03.2019, 22:35  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

А еще есть прерывания ведь... Причем, полезная работа может выполняться как непосредственно как в прерывании, так и отложенно, по программному флагу, выставленному в прерывании.
Периодические действия могут выполняться по флагам программных таймеров. Например, опрос клавиатуры, работа динамической индикации, отсчет секунд. Вот как это может выглядеть на примере:
Код:
int main(void)
{
    HardwareInit();
    SysTick_Config(SystemCoreClock/1000)); // аппаратный таймер на 1 мс
    SOFTTIMER_START(KBD, CIRCLE, 40);      // программный таймер клав-ры, 40 мс
    SOFTTIMER_START(INDIC, CIRCLE, 2);     // программный таймер дин.индик, 2 мс
    SOFTTIMER_START(SEC, CIRCLE, 1000);   // программный таймер секунд, 1000 мс
 
    while(1)
    {
        /* сканирование клавиатуры */
        if(SOFTTIMER_FLAG(KBD))
        {
            SOTFTIMER_CLEARFLAG(KBD);
            KeyScanning();
         }

        /* переключение разряда дин.индикации */
        if(SOFTTIMER_FLAG(INDIC))
        {
            SOTFTIMER_CLEARFLAG(INDIC);
            DynInication();
         }

        /* инкремент секунд */
        if(SOFTTIMER_FLAG(SEC))
        {
            SOTFTIMER_CLEARFLAG(SEC);
            SecondIncrement();
         }
    } 
}
В приведенном примере программные таймеры работают на прерывании аппаратного таймера, там они отсчитывают интервал времени, и по истечении интервала выставляют собственный флаг. Эти флаги и проверяются в цикле while(1) поочередно. Если флаг выставлен, то выполняется действие.
Недостаток этого метода в том, что если какое-то действие по флагу выполняется продолжительное время, то все остальные процессы будут ждать. В некоторой мере проблему можно решить вынесением критически важных по времени реакции процессов непосредственно в отдельные прерывания.

Наиболее компромиссно проблема решается в вытесняющей RTOS с детерминированным (заданным) временем отклика. Работа RTOS основана на системном (принудительном) переключении между задачами через равные кванты (интервалы) времени. Все задачи в RTOS представляют собой бесконечные циклы без выхода из них. А переключение между задачами берет на себя ядро RTOS по сигналам системного таймера. Текущее состояние задачи на момент переключения сохраняется, а следующая задача выполняется ровно с того шага, на котором в предыдущий раз остановилась.
RTOS предоставляет для программиста простой способ организации программы, но взамен нагружает МК накладными расходами на обеспечение работы RTOS, отбирая часть вычислительных ресурсов и память МК. RTOS далеко не всегда нужна, и многие-многие задачи могут быть решены без неё.
NewWriter вне форума  
Непрочитано 28.03.2019, 12:48  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ртось куда попало только абдуринщики пихают!
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 28.03.2019, 14:57  
Serg3301
Вид на жительство
 
Регистрация: 03.10.2011
Сообщений: 485
Сказал спасибо: 35
Сказали Спасибо 234 раз(а) в 138 сообщении(ях)
Serg3301 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Мужики, я особо за новинками STM32 не слежу, но вот интересно: не появились ли в 8-10-ногих корпусах STM'ки на cortex-M0 центов по 10-20 за штучку?
Скоро появятся - stm32g0. https://www.st.com/en/microcontrolle...stm32g0x1.html
Про цену не интересовался.
Serg3301 вне форума  
Непрочитано 30.04.2019, 09:38  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Пишу USB HID (клавиатура + мышь). Возникла проблема с отправкой HID-дескриптора длиной больше 64 байт. Может у кого-нибудь есть такое составное устройство ("заводское"), хотелось бы увидеть логи после "GET DESCRIPTOR Request HID Report" — как оно отдается.
Ну и еще одна проблема возникла: если я пишу короткий репорт (только мышь), а потом пытаюсь хосту передать данные, своего пакета я не вижу (как и вообще общения с EP1), но вижу уйму CLEAR FEATURE на EP0, которые начинают по десятку в секунду валиться! Где я мог накосячить?

UPD, все заработало, но вот CLEAR FEATURE на EP0 так и прет параллельно с запросами прерываний.
UDP1: здесь прочитал, что CLEAR_FEATURE с wValue == ENDPOINT_HALT (0) посылается в том случае, если EP послала STALL. А в прерывании EP1 после успешной передачи я делал SET_STALL_TX зачем-то. Поменял на SET_VALID_TX - заработало.
__________________
Союз Советских Социалистических Округов Северной Америки

Последний раз редактировалось eddy; 30.04.2019 в 14:55.
eddy вне форума  
Непрочитано 15.05.2019, 12:52  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Мужики, кто-нибудь делал длинные (сантиметра 2-3) линии от чипа до кварца?
Разрабатываю "девборду", чтобы без пайки STM32F0x2 и STM32F103 можно было проверять на работоспособность и прошивать (благо, у них ноги pin2pin).
Купил на али за 11 баксов переходник-"кроватку" с LQFP48 на DIP, но вот появился вопрос: заведется ли STM32F103 от кварца на таком большом расстоянии от чипа, да еще и через все эти контакты?
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 15.05.2019, 13:09  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от eddy Посмотреть сообщение
Мужики, кто-нибудь делал длинные (сантиметра 2-3) линии от чипа до кварца?
Разрабатываю "девборду", чтобы без пайки STM32F0x2 и STM32F103 можно было проверять на работоспособность и прошивать (благо, у них ноги pin2pin).
Cделал что-то типа программатора-тестера - ZIF Socket LQFP64 и два кварца, переключаемых перемычками, на 8 и 12 МГц (по 2 перемычки на кварц), плюс минимальная обвязка.
От сокета до перемычек к кварцам дорожки 25 мм 33 мм, и от перемычек до кварца еще по чуть чуть.
Все работает беспроблемно.
pambaru вне форума  
Непрочитано 15.05.2019, 15:46  
Yuri222
Почётный гражданин KAZUS.RU
 
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,011
Сказал спасибо: 2,770
Сказали Спасибо 2,715 раз(а) в 2,007 сообщении(ях)
Yuri222 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

eddy, я, правда, такие длинные дороги на платах не делал, но землю к конденсаторам кварцевым аккуратно всегда развожу. Чтоб по той земле посторонних токов не гуляло.
Будете делать под свою "кроватку" разводку - обратите внимание на этот момент.
Yuri222 вне форума  
Непрочитано 16.05.2019, 09:27  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от pambaru Посмотреть сообщение
От сокета до перемычек к кварцам дорожки 25 мм 33 мм, и от перемычек до кварца еще по чуть чуть.
Все работает беспроблемно.
Тогда хорошо. Ничего, на следующей неделе и до F103, надеюсь, руки дойдут - проверю. Здесь, как оказалось, не все так хорошо: дороги до разъема от МК длиной сантиметров до 5-6!!! Сама "кроватка" неплохие такие загогулины имеет, потом разводка по верхней плате, затем перемычка на нижнюю с ногами, а там уже сокет в моей...
Сообщение от Yuri222 Посмотреть сообщение
Будете делать под свою "кроватку" разводку - обратите внимание на этот момент.
Я их обычно прямо на земляной полигон сажаю. Сейчас, правда, этот полигон с основным полигоном будет перемычкой соединяться — не получилось на одной стороне развести, чтобы нормальный полигон был, а две стороны ради полутора десятка деталек делать — как-то слишком муторно...
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 03:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot