Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 17:35:37

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7588 ]     ... , , , 296, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 07:24:02 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ivanoff-iv писал(а):
про несколько нажатых кнопок - этот алгоритм их различит только если все они находятся в одной строке или в одном столбце, иначе запутается.
допустим, я нажал кнопку на пересечении 1-го столбца и 1-й строки и 2-го столбца 3-й строки.
на строках я получу 1100, на столбцах 1010 - и эта комбинация никакими другими комбинациями кнопок не повторится. так что 2 одновременно нажатые кнопки ВСЕГДА будут определены корректно. на счет 3-х уже не уверен, но могу вечером поэкспериментировать в протеусе :)

что-то мне подсказывает, что все будет нормально вплоть до 4 одновременных кнопок, а вот больше - уже не будет.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 07:27:19 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
что интересно... "сканкод" при сканировании клавиатуры 4х4 набирается на 2 байта, а при координатном умещается в 1байт.
_____
1;1 и 2;3 != 1;3 и 2;1. а сканкод будет одинаков == 1100;1010 :)

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Последний раз редактировалось Ivanoff-iv Чт фев 21, 2019 07:35:25, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 07:35:08 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ivanoff-iv писал(а):
1;1 и 2;3 == 1;3 и 2;1. сканкод будет 1100;1010
да... вы правы. :oops: погорячился я.
но все равно неплохой алгоритм. и разных комбинаций поддерживает достаточно для практического применения.
во всяком случае, свою нишу в применении вполне может иметь :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 07:37:24 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
согласен - алгоритм изумительный :beer: (и для матричных клавиатур, в которых нет диодов подходит даже лучше), потому и считаю, что у него должно быть название :write:
пс: я написание примера поправил, а то не очень понятно выглядело...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 07:45:54 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ivanoff-iv писал(а):
у него должно быть название
ну... в принципе, не стоит... я скромный... но спасибо. алгоритм имени ARV - звучит :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 08:07:58 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 6
такой алгоритм уж давно известен - AVR243
Цитата:
Клавиатурные матрицы могут сканироваться несколькими способами. Если может быть нажата только одна кнопка, то выбирается быстрый способ сканирования, при котором одновременно выбираются (устанавливается низкое значение) все строки, и считывается состояние столбцов. После этого выбираются все столбцы, и считывается состояния строк. Возвращенные значения столбца и строки объединяются в код, идентифицирующий нажатую кнопку. Этот метод и используется в данном примере применения...

http://www.gaw.ru/html.cgi/adv/app/micr ... AVR243.htm
первоисточник и исходник скачать:
http://www.gaw.ru/html.cgi/adv/app/micros/avr/index.htm
для STM32 тоже работает
Код:
const uint8_t key_code[] = { 1,   4,   7,  'M',
                             2,   5,   8,   10,
                             3,   6,   9,  '#',
                             'A', 'X', 'B', 'R'
                           };
...
#define ROW1_INPUT GPIOA->MODER &= ~GPIO_MODER_MODER6_0
#define ROW1_OUTPUT GPIOA->MODER |= GPIO_MODER_MODER6_0
#define ROW1 GPIOA->IDR & GPIO_IDR_6 
...
            COL1_INPUT;
            COL2_INPUT;
            COL3_INPUT;
            COL4_INPUT;
            ROW1_OUTPUT;
            ROW2_OUTPUT;
            ROW3_OUTPUT;
            ROW4_OUTPUT;
            if((COL1) == 0) col = 0;
            if((COL2) == 0) col = 4;
            if((COL3) == 0) col = 8;
            if((COL4) == 0) col = 12;
            ROW1_INPUT;
            ROW2_INPUT;
            ROW3_INPUT;
            ROW4_INPUT;
            COL1_OUTPUT;
            COL2_OUTPUT;
            COL3_OUTPUT;
            COL4_OUTPUT;
            if((ROW1) == 0) row = 0;
            if((ROW2) == 0) row = 1;
            if((ROW3) == 0) row = 2;
            if((ROW4) == 0) row = 3;

         key = key_code[col + row];


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 08:11:11 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
oleg110592 писал(а):
такой алгоритм уж давно известен
опередили, суки... :o
Цитата:
Слушайте, что я накропал вчера ночью при колеблющемся свете электрической лампы: «Я помню чудное мгновенье, передо мной явилась ты, как мимолетное виденье, как гений чистой красоты». Правда, хорошо? Талантливо? И только на рассвете, когда дописаны были последние строки, я вспомнил, что этот стих уже написал А. Пушкин. Такой удар со стороны классика! А?
©

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 21, 2019 09:22:02 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 966
Рейтинг сообщения: 0
Это что. Когда то пишу какую-то программулину и чувствую что-то знакомое... Заподозрил. И действительно, оказалось что я это уже писал когда то... Ну, а Пушкин - это само-собой.)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн мар 04, 2019 21:03:05 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Доброго времени суток. Разбираюсь с указателями на void.
Для обучения создал следующий код:
Код:
   void *ptr = "Hello, world";
   printf("%s", (char*)ptr);

Компиляция проходит гладко, вижу свою заветную строку.
Решаю провести эксперимент - удаляю приведение указателя к char: printf("%s", ptr)
Компилирую, ожидаю увидеть ошибку, но нет, все проходит успешно, опять вижу заветную строку. Это норма ? Дело в том, что я вывожу через спецификатор %s, и оно все равно приводится к char ?


Последний раз редактировалось Пока_без_кота Пн мар 04, 2019 21:10:40, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн мар 04, 2019 21:10:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
это норма, потому что void* совместим с любым типом указателя

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн мар 04, 2019 21:11:52 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Но так делать "аяяай, низзя" ? Или просто некрасиво ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн мар 04, 2019 21:17:02 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Компилирую, ожидаю увидеть ошибку, но нет, все проходит успешно, опять вижу заветную строку. Это норма ?

Да. Спецификатор %s указывет функции printf на то, что ей параметром передается указатель на строку. Так она его и интерпретирует. Хоть в указатель на int его преобразуйте - от этого его содержимое не изменится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн мар 04, 2019 22:27:05 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Благодарю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн мар 04, 2019 23:00:12 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Тут надо понимать одно - любой указатель, неважно на что указывающий, имеет одну ширину памяти. А void* - универсальный указатель, для каких-либо промежуточных результатов. Либо для неизвестного типа.
И, что самое интересное. В функциях void означает "пустоту". Ничто. ... А вот указатель на void допустим. Когнитивный диссонанс какой-то получается. Особенно у новичков :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт мар 05, 2019 06:28:40 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Но так делать "аяяай, низзя" ? Или просто некрасиво ?

некрасиво делать void* str = "fgfgf";
и вообще, обилие явных приведений типов в программе настораживает...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср мар 06, 2019 12:29:09 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
в чем смысл использования отдельного стека данных? многие компиляторы отводят под это дело кусочек ОЗУ... а почему не использовать общий стек? вопрос в контексте микроконтроллеров, у которых нет "разных" ОЗУ и нет защиты блоков ОЗУ от доступа "чужих" процессов.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср мар 06, 2019 12:53:12 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вы бы привели конкретный пример. Потому что почти все компиляторы выделяют весь стек в отдельный сегмент, для возможности управления им редактором связей (linker). А вот чтобы какой-то компилятор выделал отдельные сегменты для стека вызовов и стека данных я даже припомнить не могу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср мар 06, 2019 13:13:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Изображение
что вот это за DATA STACK?
Изображение

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср мар 06, 2019 13:23:45 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
что вот это за DATA STACK?
Да там один стек. В чём можно убедиться посмотрев типовой IAR AVR .map для таких настроек
Изображение

Спойлер
Код:
SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
INTVEC               CODE          00000000 - 00000083          84   com    1
?FILL1               CODE          00000084 - 0000008B           8   rel    0
DIFUNCT              CODE          0000008C - 0000008D           2   rel    0
CODE                 CODE          0000008E - 00001285        11F8   rel    1
INITTAB              CODE          00001286 - 00001293           E   rel    0
NEAR_ID              CODE          00001294 - 000012A5          12   rel    0
REGVAR_AN            DATA          0000000E - 0000000F           2   rel    0
ABSOLUTE             DATA               0000001C                     rel    0
                     DATA               0000001D                   
                     DATA               0000001E                   
                     DATA               0000001F                   
                     DATA          00000022 - 00000028           7
                     DATA          0000002D - 0000002D           1
                     DATA          0000002F - 0000002F           1
                     DATA          00000031 - 0000003B           B
                     DATA          00000044 - 00000045           2
                     DATA          00000048 - 0000004B           4
                     DATA          0000004E - 0000004F           2
                     DATA          00000054 - 00000054           1
                     DATA          00000056 - 00000057           2
                     DATA          00000061 - 00000062           2
                     DATA          00000098 - 0000009D           6
CSTACK               DATA          00000100 - 0000017F          80   dse    0
RSTACK               DATA          00000180 - 000001BF          40   dse    0
NEAR_I               DATA          000001C0 - 000001D1          12   rel    0
NEAR_Z               DATA          000001D2 - 0000021D          4C   rel    0
EEPROM_I             XDATA              00000000                     dse    0
EEPROM_N             XDATA         00000000 - 0000000C           D   rel    0

Вложение:
AVR_STACK.png [15.76 KiB]
Скачиваний: 335


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср мар 06, 2019 13:27:58 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
что значит один, если четным по серому написано DATA STACK и RETURN ADRESS STACK?
к тому же я вопрос задал после того, как столкнуля именно с ДВУМЯ стеками на практике: параметры функций загоняются в стек данных через указатель, а call-ы и ret-ы, естественно, адресуются через SP, как обычно.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7588 ]     ... , , , 296, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y