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

Как вы думаете, сколько контроллеров можно одновременно прошивать через ISP?


rmatveev

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

6 минут назад, mail_robot сказал:

А потом вообще все огненно быстро

Вот, вот. Заливка и заметна была =) Сейчас хочу заказать дисплей с параллельной шиной 8 бит, посмотреть, как он себя поведет

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

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

а нафига быстрее то? если чтото затирать в том же кадре, то просто пустые спрайты выводятся и все с цветом фона. А если каждый раз перерисовывать, то это надо дисплей со встроенным контроллером, иначе будет беда. ИМХО - даже 4 кадра в секунду на полной заливке это выше крыши для 99,9% задач отображения в эмбедед системах

4 кадра в секунду даже софтовый SPI потянет.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

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

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

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

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

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

Только что, mail_robot сказал:

а нафига быстрее то?

Ну не нравится мне, когда при переходе в то же меню видно обновление дисплея) Тем более что SPI что параллельный стоят примерно одинаково

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

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

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

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

16 минут назад, mail_robot сказал:

возьми NEXTION

За эти деньги я сам могу собрать умный дисплей) Да и чего париться, 103 камень очень шустро работает по параллельным шинам)

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

зато там знакогенератор уже залит + спрайтов хоть гигабайт. Ну и красивше намного чем самопал. Ну и главное что никаких ресурсов не требует. Проц считай 99% времени свободен, а это значит можно поставить бюджетный мелкий камень и типа сэкономить доллар ))

ИМХО - не те деньги, чтобы экономить

Если учесть, что не всякая сотка бюджет, а чтото типа VCT/VET уже стоит прилично, то разница вполне отбивает часть затрат, если например ставить уже не сотку, а простой 051, который и бакса не стоит а начинки так же как у 103С8Т6

мне "нолики" вообще жуть как нравятся. Такие няшечные камни. :wub:

стоят копейки, по начинке как сотки, корпусировка от SSOP20. Неудобство в них только в мелких нюансах работы DMA да чутка попроще сама структура модулей. Например в ADC нельзя установить произвольный порядок опроса регулярных каналов. Только подряд. Зато модуль RTC у них уже Gen.2. Там не надо париться с сохранением даты в зону retention. А так со всех сторон вкуснятина. Уменя их штук 40 было, осталось уже меньше половины. При такой цене можно тыкать их чуть ли не вместо триггеров на одну кнопку вкл/выкл, чем с успехом и пользуюсь )

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

В применении оси нет ничего сложного. Это пожалуй одна из самых простых вещей, которую мне приходилось осваивать. В кубике в конфигураторе включаете, библиотеки и скелет подключаются автоматом. Только там на самом деле не FreeRTOS, а CMSIS OS. Оболочка чуть более высокого уровня. Очень кстати удобная.

По самой оси и основам можно почитать тут. http://microsin.net/programming/arm/freertos-part1.html

Смысл в чем. Есть диспетчер, который работает автоматически. Есть задачи. Типа как отдельные программы по сути. Диспетчер выбирает задачу согласно приоритету, или свободную, если приоритет у всех один и выполняет ее до команды остановки, если таковая есть. Если нет, то непрерывно пока она может выполняться или пока ее не прервет задача с приоритетом выше. Задачи можно останавливать до некоторого события или сообщения или телеграммы. Механизмов тьма. Задачам можно передавать данные из прерываний или других задач через очереди. Очереди это по сути буферы FIFO. Если очередь пуста, задача которая ждет в ней данные остановлена. Как только данные появились, мы сразу просыпаемся и обрабатываем их. Задачи по сути автономны и друг на друга могут вообще никак не влиять и не видеть. Подробнее в ссылке выше. Я прочитал раза 3 и все понял. Остальное гуглится.

Короче это очень гибкий и продвинутый менеджер ресурсов процессора. Позволяет не опрашивать все подряд постоянно, а только то что нужно или то у чего есть данные для работы. При этом скорость работы камня может даже повысится, по сравнению с процедурным кодом, так как повышается уровень "свободности" ядра. Минус только один - жрет много оперативки. Так как задачи автономны на переключение контекста тратится оперативка типа как на стек. На одну задачу примерно 120 байт. На очередь тоже, так как по сути она задача, только без автономного кода. Ну и плюс ядру надо байт 600. Итого на три потока с очередью улетает примерно 2К оперативки. У меня обычно больше, так как я стараюсь дробить задачи на более мелкие. Гдето 4-5К приходится отдать. На камнях типа сотки это вообще не заметно, а вот в ноликах уже чувствуется. Хотя на 051-ых у меня прекрасно все работает с объемом оперативки 8К

Но так вообще это мегаинструментище. Прям вот как только его освоил мгновенно включается режим GodMode в кодинге.

Вкусняк еще в том, что DefaultTask, куда проц скадывается если ему делать нечего тоже задача в которой тоже можно испонять любой код который типа так себе по значимости. Например подсчитывать время простоя или еще чего нибудь низкоприоритетное, так как у этой задачи самый низкий приоритет в системе и она выполняется только тогда, когда проц никому не нужен и событий и прерываний никаких нет. А это кстати довольно большая куча времени

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

С использованием ОС структура программы меняется кардинально. Она просто дробится на задачи и все программирование сводится к мелкопроцедурному. Очень легко вносить изменения в код при этом не затрагивая основную программу. То есть добавление или удаление функционала кода превращается просто в удаление задачи как таковой или добавлении новой. Как видеокарту в компе поменять или звучку. Или добавить тюнер. То есть как бы слотовое программирование

Меняется и сам стиль кодинга в потоке. Дело в том, что при поступлении команды задержки в потоке он останавливается, но сам процессор нет. Просто диспетчер понимает, что этот поток больше не требует внимания на энное количество времени и переключается на другой. Опрос кнопок в такой ситуации становится вообще элементарным делом.

пример быдлоОСкода. Без ОС естественно такой код никогда не заработает нормально

		Mode_key.New_state = HAL_GPIO_ReadPin(BUTTON_1_GPIO_Port, BUTTON_1_Pin);
		CH_key.New_state = HAL_GPIO_ReadPin(BUTTON_2_GPIO_Port, BUTTON_2_Pin);
		
		if (Mode_key.New_state != Mode_key.Old_state)
		{
			if (Mode_key.New_state == GPIO_PIN_RESET && Keyboard.Mode.ctrl) 
			{
				Keyboard.Mode.event = 1;
			}
			osDelay(Debounce_time);
			Mode_key.Old_state = Mode_key.New_state;
		}
		if (CH_key.New_state != CH_key.Old_state && Keyboard.CH.ctrl)
		{
			if (CH_key.New_state == GPIO_PIN_RESET) 
			{
				Keyboard.CH.event = 1;			
				osSignalSet(BEEP_TaskHandle, 0x0001);
			}
			osDelay(Debounce_time);
			CH_key.Old_state = CH_key.New_state;
		}

И самое плохое, что привыкаешь к этому мгновенно

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

А вот классический пример событийно-управляемой задачи. Управление пищалкой на ноге проца. Часто нужна кстати

void StartBEEPtask(void const * argument)
{
	osEvent event;
	for(;;)
  {
		const uint8_t Beep_length = 20;
		const uint8_t Beep_pause = 60;
		event = osSignalWait(0x0001|0x0002, osWaitForever);
			if (event.value.signals == 0x0001)
			{
				BEEP_ON;
				osDelay(Beep_length);
				BEEP_OFF;
			}
			if (event.value.signals == 0x0002)
			{
				BEEP_ON;
				osDelay(Beep_length);
				BEEP_OFF;
				osDelay(Beep_pause);
				BEEP_ON;
				osDelay(Beep_length);
				BEEP_OFF;
			}
		event.value.signals = 0;
		taskYIELD();
  }
}

Все константы определены прямо в теле, так как нужны только этой задаче. Задача все время спит и ждет сообщений от ОС с кодами 0х0001 или 0х0002 - одинарный или двойной пипик. Как только задача кнопок (см выше) отправила сообщение этому процессу, ОС понимает, что в следующий момент надо вызвать бип, но задача кнопочек то еще выполняется. А тут хоп, и в ней osDelay. ОС тут же забывает про кнопки и идет в бип. Смотрит - ага, сообщение 0001 знячит бип будет одинарным и коротким. Будит задачу, включает бипер, а тут хоп - опять задержка. Нафик бипер - чо там еще у нас есть выполнить? Выполняет. Тут бипер отработал, она возвращается в строку за задержкой, гасит бипер и хоп, оказывается задача то больше не нужна потому как taskYIELD. Ну фик с ней, есть другие, а эта пусть спит до следующего сообщения.

Итог - ресурсы проца задействованы полностью, и ни единого таймера не пострадало кроме квантового SysTick. Причем одна и та же задача может быть использована для разных событий и соответственно с разными вариантами выполнения. Добавить сюда тройной или очень длинный бип труда не составит никакого. Гениальная штуковина

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Какую я, оказывается, интересную тему пропустил. Спасибо за разъяснения:drinks: Обязательно попробую на 103 камне, когда плата под него придет. Подключить тот же дисплей или еще что для вывода инфы, как я понимаю, тоже труда не составляет?

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

а какие должны быть проблемы? Все делается точно так же как и раньше, инитки, конфиги, обработчики прерываний и тд. Только вместо мэйна запускается ОС и дальше выполнение программы идет уже под управлением диспетчера задач. Это как бы программный слой высшего уровня. Все будет работать так же как и обычно, только управление вместо цикла while(1) уйдет диспетчеру ОС

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...