LiVit
-
Постов
170 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные LiVit
-
-
Всё смешалось - люди, кони... При чем здесь куб и кейл? На кайле пишут не только для ST-мок. И ужас-ужас, для каких нибудь китайских армов нет куба. И ведь пишут без проблем.
Ребятки, уровень вхождения в программирование армов очень высокий. Это не ранние пики и аврки. Там пару строчек из мануала прочёл и программу-моргалку написал и запустил на раз-два.
Если вам для какой-нибудь ерунды - юзайте ардуину.
Если собрались профессионально работать - осваивайте профессиональные инструменты. Кайло запустить не сложно, было бы желание.
1 -
6 часов назад, Dr. West сказал:
Цанговые панели вообще не подойдут.
Наоборот - только на цанговые и надежда. Обломать весь пластик и впаять только пины.
Если постараться - будет красиво0 -
22 часа назад, MechanicV сказал:
думаю наколдовать вроде как универсальной функции для обработки структур
Правильно. Так и надо делать.
Потом эту штуку из проекта в проект таскать и все. Просто по месту допиливаяЗа основу можно те структуры взять, что я привел.
Написать универсальную процедуру обработки и передавать ей указатель на "экземпляр" структуры20 часов назад, ChePay сказал:Ведь и экраны могут быть разными. И клавиатура может быть по разному реализована.
Ну и что? Основная обработка должна быть одинаковой.
А драйвер для клавиатуры можно допилить для конкретного устройства, как и драйвер дисплея.
У меня примерно одинаковая логика обработки как для графического монохромного дисплея, так и для символьных дисплеев.
Конечно, есть отличия. На символьном дисплее с графикой очень туго))). Инверсию не сделаешь и ограничен набор символов.0 -
@Ион Добрев Нет, уважаемый, за вас я не буду программу писать.
Процедуру обработки клавиш и процедуру вывода на дисплей сами пишите.
0 -
11 часов назад, Ион Добрев сказал:
Я на верном пути.
Есть русская пословица - терпение и труд всё перетрут. Будете стараться - всё получится.
[MNU_VAR_8].MaxVal = 500,
Означает, что полю MaxVal структуры номер MNU_VAR_8 данного массива присваиваем значение 500.
Вы уже знаете что такое энумератор enum?
Каждая запись превращается компилятором в число.
Начинается всё с нуля. Таким образом MNU_VAR_1 компилятором превращается в 0, MNU_VAR_2 в 1 и так далее.
enum используется только для удобства человека. Рекомендуется присваивать какие-то осмысленные имена.typedef enum{
Это объявление типа данных enum. Можно без typedef. Но мне так привычнее - это чисто мои заморочки.
Ион, вам надо хорошенько изучить книгу «Язык программирования Си» — Брайана Кернигана и Денниса Ритчи. Там всё разжёвано.
0 -
13 часов назад, Катеринка сказал:
С установкой диода я не прогадала.
Наоборот.
Без него была бы настоящая пушка!
Бахнуло бы от души.Но тут осторожность нужна.
Отстреливающийся корпус конденсатора может причинить серьезный ущерб.А почему вы без лампочки решили включить? Не нашли?
Вместо нее можно использовать утюг, плойку наконец.0 -
Если у @Ион Добрев есть программистское мышление, желание и деньги, я могу помочь с пониманием и структур и указателей. Но это - в раздел "работа".
А разным умникам - помогите ему бесплатно, если хотите.
Почему-то никто из вас не привел свой код для меню.
Почему, интересно?Решил потратить своё время и привести пример организации структуры меню в моих проектах, может кому пригодится:
СпойлерВот пример описания переменной:
typedef struct{ uint8_t* Hdr; //header text uint8_t* Clue; //the clue for the user (leading text) uint8_t* Trail; //trailing text uint32_t MaxVal; //max value of the variable uint32_t MinVal; //min value of the variable uint32_t DefVal; //default value uint32_t Stp; //step of the inc/dec uint32_t* VarPtr; //pointer to the variable }HmiVarDesc;
Пусть у нас 8 переменных (масштабируемо. хоть миллион, лишь бы FLASH памяти хватило)
Объявим энумератор с перечислением переменных
//sequence of menu items: typedef enum{ MNU_VAR_1, //variable 1 MNU_VAR_2, //variable 2 MNU_VAR_3, //variable 3 MNU_VAR_4, //variable 4 MNU_VAR_5, //variable 5 MNU_VAR_6, //variable 6 MNU_VAR_7, //variable 7 MNU_VAR_8, //variable 8 //// MNU_VAR__NUM //number of the variables }VarList_t; //
Теперь нам нужна область RAM, где мы будем хранить наши переменные
uint32_t var_array[MNU_VAR__NUM] = {0};
А теперь таблица с описанием каждой переменной
const HmiVarDesc[MNU_VAR__NUM] = { [MNU_VAR_1].Hdr = "Variable #1", [MNU_VAR_1].Clue = "Frequency: ", [MNU_VAR_1].Trail = "MHz", [MNU_VAR_1].MaxVal = 500, [MNU_VAR_1].MinVal = 400, [MNU_VAR_1].DefVal = 450, [MNU_VAR_1].Stp = 2, [MNU_VAR_1].VarPtr = &var_array[MNU_VAR_1], [MNU_VAR_2].Hdr = "Variable #2", [MNU_VAR_2].Trail = "MHz", [MNU_VAR_2].MaxVal = 500, [MNU_VAR_2].MinVal = 400, [MNU_VAR_2].DefVal = 450, [MNU_VAR_2].Stp = 2, [MNU_VAR_2].VarPtr = &var_array[MNU_VAR_2], [MNU_VAR_3].Hdr = "Variable #3", [MNU_VAR_3].Trail = "MHz", [MNU_VAR_3].MaxVal = 500, [MNU_VAR_3].MinVal = 400, [MNU_VAR_3].DefVal = 450, [MNU_VAR_3].Stp = 2, [MNU_VAR_3].VarPtr = &var_array[MNU_VAR_3], [MNU_VAR_4].Hdr = "Variable #4", [MNU_VAR_4].Trail = "MHz", [MNU_VAR_4].MaxVal = 500, [MNU_VAR_4].MinVal = 400, [MNU_VAR_4].DefVal = 450, [MNU_VAR_4].Stp = 2, [MNU_VAR_4].VarPtr = &var_array[MNU_VAR_4], [MNU_VAR_5].Hdr = "Variable #5", [MNU_VAR_5].Trail = "MHz", [MNU_VAR_5].MaxVal = 500, [MNU_VAR_5].MinVal = 400, [MNU_VAR_5].DefVal = 450, [MNU_VAR_5].Stp = 2, [MNU_VAR_5].VarPtr = &var_array[MNU_VAR_5], [MNU_VAR_6].Hdr = "Variable #6", [MNU_VAR_6].Trail = "MHz", [MNU_VAR_6].MaxVal = 500, [MNU_VAR_6].MinVal = 400, [MNU_VAR_6].DefVal = 450, [MNU_VAR_6].Stp = 2, [MNU_VAR_6].VarPtr = &var_array[MNU_VAR_6], [MNU_VAR_7].Hdr = "Variable #7", [MNU_VAR_7].Trail = "MHz", [MNU_VAR_7].MaxVal = 500, [MNU_VAR_7].MinVal = 400, [MNU_VAR_7].DefVal = 450, [MNU_VAR_7].Stp = 2, [MNU_VAR_7].VarPtr = &var_array[MNU_VAR_7], [MNU_VAR_8].Hdr = "Variable #8", [MNU_VAR_8].Clue = "Weight: ", [MNU_VAR_8].Trail = "kg", [MNU_VAR_8].MaxVal = 500, [MNU_VAR_8].MinVal = 400, [MNU_VAR_8].DefVal = 450, [MNU_VAR_8].Stp = 2, [MNU_VAR_8].VarPtr = &var_array[MNU_VAR_8], };
Всё. Переменные описаны. Теперь пишем процедуру, которая будет обрабатывать нажатие клавиш и соответствующе увеличивать/уменьшать значение переменной, отображать на экране, сохранять результат и переходить к следующей переменной.
Это самый эффективный способ. И самое главное - легко масштабируемый. Сегодня тебе нужно 8 переменных, а завтра заказчику понадобилось 128. Просто редактируем энумератор и таблицу описания переменных, а основная программа не меняется.
Если есть способ более эффективный - с удовольствием об этом почитаю.
12 часов назад, MechanicV сказал:да нет у этого долбача не какого проекта, так попку мучает.
Это вы про кого? И что дает вам уверенность это утверждать?
0 -
Причём здесь пафос?
У меня проект как раз со структурами и указателями, которые ему недоступны.
Мне что, вместо него программу писать?
ТС видимо начинающий. Ему в соответствующий раздел нужно.
Либо в раздел "работа".
0 -
Мне не жалко, но вы всё равно не поймёте. Раз у вас возникают такие вопросы, вашей квалификации будет явно недостаточно.
0 -
Преимущество по сравнению с чем?
Вообще, разговор беспредметный. Аморфный.Какая структура меню? Сколько настроек?
У меня например, 20 настроек.
Для каждой уставки есть минимальное значение, максимальное, шаг приращения, дефолтное значение, адрес в памяти куда надо сохранять.
Есть имя настройки (текстовая подсказка, чего именно настраиваем), префикс и суффикс (кг, МГц, сек...). Причем на нескольких языках.
Вы без структур и указателей как себе такое меню представляете? Switch-case? Это трэш, угар и содомия.0 -
Почитал ваше сообщение.
Всё как-то аморфно.
В чем проблема-то?
Не умеете работать с указателями, со структурами, или с указателями на структуры?
Сколько пунктов меню, какой дисплей?
Как тут говорят - "экстрасенсы в отпуске", что у вас в голове - никто не знает.0 -
В 04.08.2022 в 15:35, blackflash2007 сказал:
Согласен дали админ права а вот антифлуд не дали . Как в анекдоте
"- Вы стоите на самой низшей ступени развития, — перекричал Филипп Филиппович, — вы еще только формирующееся, слабое в умственном отношении существо, все ваши поступки чисто звериные, и вы в присутствии двух людей с университетским образованием позволяете себе с развязностью совершенно невыносимой подавать какие-то советы космического масштаба и космической же глупости..." (c) М.Булгаков, "Собачье сердце"
Извините, вырвалось....
1 -
1 час назад, DedLogoped сказал:
Стоп-стоп-стоп, уважаемый!
Вы путаете мягкое с тёплым.
Полоска на торце указывает минус.
А у вас на фотке полоска снизу. Если видим "Т" снизу, то надо смотреть даташит, но скорее всего "пипка" показывает на минус.
На фотке ТС-а вы не можете видеть низ, только торец.
Да и странно это - ориентироваться по знакам снизу светодиода, которые после монтажа просто так не увидишь.На моей фотке - два одинаковых светодиода, катод у обоих слева.
Был у нас случай, монтажник напаял светодиодов, ориентируясь по знакам снизу... Перепаивал.
0 -
2 часа назад, DedLogoped сказал:
У SMD светодиодов обычно зелёный торец - анод.
Первый раз про такое слышу.
Обычно - как раз катод (-).0 -
48 минут назад, SuperЛёха сказал:
Странно, что этот мусор находится в RAM после передёргивания питания, ведь по сути после подачи питания происходит тот же самый аппаратный сброс.
Как-раз ничего странного.
Возьмите за правило объявлять буфер как-то так: uint16_t buf[100] = {0}; и он автоматом заполнится нулями.0 -
21 час назад, oleg Hellert сказал:
Я вижу вас задело ,хотя на "наиглупейший"вопрос "какова сила тока в резетке " возможен простой и по-моему не глупый ответ.Сила тока в бытовой розетка ограничена предохранителем ....
В розетке тока нет. Там напряжение.
Ток в нагрузке.
Не надо быть семи пядей во лбу, чтобы это знать.
Школьный курс. I=U/R
Нет R - нет I21 час назад, BARS_ сказал:А измерить сможете?
Да чо там мерить-то? Выставляем на мультиметре измерение тока (переменного конечно, мы ведь не дураки какие-нибудь!) и суём в розетку.
1 -
18 минут назад, Огонёк сказал:
Для каких практических задач может понадобиться отодвинуть стек ближе к началу адресного пространства?
Если некоторые процедуры и функции (в том числе обработчики прерывания) используют стек.
Например, у вас адское количество локальных переменных в теле функции. Или буфер локальный. Если стек маленький, то места не хватит
0 -
16 минут назад, oleg Hellert сказал:
Нет глупых вопросов,есть только глупые ответы.
Пфффф.
Вот глупый вопрос: "сколько тока в электрической розетке? "
Давайте я вам переведу дискуссию на более бытовой язык:
Вы: "Мне надо две детальки разъединить, чем мне их раскрутить? "
У вас спрашивают:
"А головка у винта какая? Под прямой шлиц, под крест, под шестигранник, торкс, звездочку, или что-то другое? А резьба у вас левая или правая? "
А вы : "да я не разбираюсь! Что вы за люди такие, на простой вопрос ответить не можете! "
А потом выяснится, что детальки склеенные или на заклепке....
0 -
15 минут назад, rebuk сказал:
Бывает и так, что за день по 2 и 3 раза переделываю в творческом угаре.
Это говорит о непродуманности схемы и непрофессиональном подходе.
А для отладки можно применять какую-нибудь универсальную отладочную плату. Продумать её, заказать со сборкой в Китае и забыть как страшный сон хлорное железо, ванночки, ЛУТ...
0 -
В 2006 году делал двустороннюю плату размером чуть меньше А4. Это было обусловлено тем, что она была нужна одна и стоимость изготовления в Резоните была слишком высокой.
Сейчас 2022. Заказать в Китае и со сборкой (!) стоит копейки. Какой смысл в этих нечеловеческих мучениях? Да ещё и плата выглядит уродливо - без маски и шелкографии.
0 -
9 часов назад, korsaj сказал:
А что вы гадаете на кофейной гуще, у вас есть исходник в нем и смотрите
Судя по тому, что камрады тут выкладывают, там такой лютый говнокод, что мне жалко глаза - вытекут.
2 -
100 110 100 110 0 01100111 - красный
100 110 100 110 0 10011001 - зеленый
Обратите внимание на тройки чисел. То что выделено жирным - выглядит логично. Последовательность 100 кодирует логический 0, а последовательность 110 - логическую единицу
Потом последовательность разваливается (я ориентировался на ваши нули и единицы, не анализировал осциллограмму)
Посмотрите, может быть ваша запись неверна. Потому что первые четыре бита однозначно расшифровываются как 0101 (или 1010 если в инверсии)И посмотрите уже, как подобное реализовано в пультах управления - там явно что-то похожее
UPD.
Не, всё-равно какая-то фигня получается....
Единственное, что логично в ваших осциллограммах, так это то, что обе посылки примерно одинаковые по длительностиСлушайте, а какую последовательность машинка назад передает, чтобы в нее не врезались?
UPD. 2
То что выделено жирным - это стартовая последовательность.
Подчеркнутый нолик - разделитель
Дальше идут 8 бит. Красный - 67h зеленый - 99h
Только если так рассудить.
0 -
-
43 минуты назад, Андрей Гараж сказал:
Не пойму. Со светофора приходит 6 бит, а по коду считываться должно 8. Осциллограмму снимал и с ИК-передатчика светофора.
А с чего вы решили, что это 6 бит? Это вообще не очевидно, как по мне. Я вижу 6 импульсов разной ширины.
Вполне возможно, что некоторые импульсы содержат две единицы, а равно как и промежутки между импульсами могут содержать два нуля.Поставьте другую развертку на осциллографе, чтобы было пошире. А лучше - возьмите анализатор сигналов.
0
Битовое поле, Union и проблема... 10 бит
в STM32
Опубликовано
т.е., вы не знаете, зачем применяется static?
Зачем вы его вообще используете, если не знаете смысла? Тупо копипастите?
Рекомендую определять новый тип:
Тогда в программе можете объявить любое количество переменных типа MyDataType и обращаться к этим переменным как к union. Более того, вы сможете присваивать их значения друг другу: