Например TDA7294

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





Текущее время: Пт июл 18, 2025 15:43:18

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7669 ]     ... , , , 273, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 11:02:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Siarzhuk писал(а):
Интересно, кому-нибудь ещё, кроме меня, не хватает штатной "конструкции" (АКА исключения для бедных)
вы про эквивалент try-finally? можно макросами, кстати...

но вообще мне не хватает break из вложенных циклов... как бы можно было это реализовать - не знаю, но не помешало бы точно :)

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 11:16:37 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
Siarzhuk писал(а):
делать это быстрее всего уже привычно выглядящими для коллег блоками.
понятно, просто простыня длинная...вот и свернул... (действительно, надо было самую исходную портянку выкладывать)
так я и пытаюсь сделать код более привычным, понятным и универсальным.
Siarzhuk писал(а):
О каком программисте речь?
Конечно задокументирую, когда конечный результат получу и проведу испытания
Siarzhuk писал(а):
скрытый переход внутри макроса - это волчий билет для автора
а я вам и не предлагаю с ГОТОй - если внутрь цикла (или ветвления) его не вставлять - всё ОК, а если вставить - оператор брейк путается и кидается не на того... (завершает цикл вместо кейса).
но боюсь, что чтобы обойти такой прикол -всётаки ГОТО будет :( другого варианта пока не вижу
так то брейк - тотже гото, только более автоматизированый (сам себе цель выбирает)

Добавлено after 2 minutes 36 seconds:
над Вашим, Siarzhuk, вариантом кода подумаю.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 11:30:13 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4565
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
среда - кодевижен,
камни - конкретно этот код идёт под тини2313, но и в меге 8 работает.

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

Добавлено after 2 minutes 46 seconds:
ПыСы: Советую Вам поюзать OSA, тогда поймёте принцип распараллеливания задач и входа/выхода из них.

Добавлено after 6 minutes 18 seconds:
ПыСы2: И ещё. Ооооочень настоятельно рекомендую Вам пересмотреть реализацию своего кода и перенести бОльшую часть в основной цикл. Не нужно его экономить, наживая себе гемор...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 11:33:05 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
OSA - изучаю, принцип распараллеливания понятен.
про стек - понимаю, потому и делаю всё локально внутри функции как добыть точку возврата? по номеру метки или абсолютный адрес сохранять? а если кто его испортит (хотя посторонних там быть не должно :) )
тот диспетчер, который я приводил - он тоже под тиню делался.
думаю что постепенно уйду в OSA - алгоритм многопоточности мне близок, я итак делаю чтото подобное, но с профи мне не тягаться

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


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 11:39:14 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4565
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ivanoff-iv писал(а):
как добыть точку возврата?
Это нужно хорошо знать ассемблер и инструкции Ваших камней.
Я, увы, в этом нихт ферштейн...

Вот, для PIC'ов делал - viewtopic.php?p=3333672#p3333672 Но Вы, если их не знаете, вряд ли там чего поймёте...


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

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
на сколько я знаю у АВР этот регистр (PC- программ каунтер) недоступен напрямую, да и в его лезть, это почти как под поездом стрелки переводить...

Добавлено after 1 hour 18 minutes 19 seconds:
ещё можно всю обработку сделать в майне - крутись она там, а в прерывании оставить лишь таймеры - в этом случае скорость выполнения кода вырастет, но предсказуемость по времени выполнения команд снизится...

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


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 13:51:29 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Ivanoff-iv писал(а):
ещё можно всю обработку сделать в майне - крутись она там, а в прерывании оставить лишь таймеры
по-моему, это самые лучшие намерения, которые я от вас услышал :)
Ivanoff-iv писал(а):
но предсказуемость по времени выполнения команд снизится
я, наверное, что-то пропустил... но о чем это вы говорите? о какой-такой предсказуемости? зачем она вам?

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 13:54:22 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4565
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Что то Ivanoff-iv мудрит. Сам запутался и нас путает :)

Цитата:
ещё можно всю обработку сделать в майне - крутись она там, а в прерывании оставить лишь таймеры
Фух... Наконец то... :hunger:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 14:12:49 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
а спать - если все счётчики!=0 опять же их проверять, хотя.. когда по всем счетчикам пробежимся, проверяя на равенство - ответ сам и получится, складно..., ладно, завтра подумаю... сегодня рабдень кончился

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 14:13:05 
Грызет канифоль

Карма: 13
Рейтинг сообщений: 86
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 278
Рейтинг сообщения: 0
на сколько я знаю у АВР этот регистр (PC- программ каунтер) недоступен напрямую

Это почему же? Это как раз без проблем (команды переходов, вызовов, возвратов никто не отменял), например запись в PC:
Код:
#define avr_write_pc(new_pc) do { \
        asm volatile (            \
        "ijmp"  "\n\t"            \
        : : "z" (new_pc));        \
} while (0)


да и в его лезть, это почти как под поездом стрелки переводить...

Вот это точно. Компилятор сгенерировал код, а Вы хотите "прыгать" в этом коде, как Вам хочется? Ничего хорошего из этого не выйдет.

как добыть точку возврата?

Она (точка возрата) лежит под стеком.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 14:36:56 
Друг Кота
Аватар пользователя

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

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


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

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

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 15:05:12 
Грызет канифоль

Карма: 13
Рейтинг сообщений: 86
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 278
Рейтинг сообщения: 0
про стек знаю - там продолжение вопроса было.

Да, не внимательно читаю. Но и называть это "точкой возрата" странно - скорее, это точка входа, если я правильно понял то, что вам надо:

Код:
static unsigned char xx_var;
void xx (void)
{
        xx_var += 1;

        asm volatile ("xx_wo_inc: .globl xx_wo_inc\n");

        if (xx_var) {
                xx_var = 0;
        }
}


Далее можно объявить: extern void xx_wo_inc (void); и вызывать эту функцию, т.е. на самом деле "прыгать" в середину другой функции. Вот во что это скомпилировалось:
Код:
xx:
        lds r24,xx_var
        subi r24,lo8(-(1))
        sts xx_var,r24

xx_wo_inc: .globl xx_wo_inc

        lds r24,xx_var
        tst r24
        breq .L3
        sts xx_var,__zero_reg__
.L3:
        ret


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


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

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
viiv писал(а):
Вот во что это скомпилировалось:
судя по всему вы предложили очередной вариант setjmp.h, о котором уже было сказано... даже не понимаю, зачем об этом говорить вообще...

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 15:45:47 
Грызет канифоль

Карма: 13
Рейтинг сообщений: 86
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 278
Рейтинг сообщения: 0
судя по всему вы предложили очередной вариант setjmp.h, о котором уже было сказано... даже не понимаю, зачем об этом говорить вообще...

Ничего общего с setjmp()/longjmp(). Вообще не понимаю, почему у Вас возникла такая ассоциация


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 15:59:10 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Добрый день, есть enum который будет использоваться в в нескольких файлах подскажите пожалуйста как его объявить?
Так как дублирование typedef запрещено, пока нашел вариант и создать хедер и объявить в ним пользовательский тип. Подключать там где надо.
есть ли еще варианты?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 16:06:39 
Грызет канифоль

Карма: 13
Рейтинг сообщений: 86
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 278
Рейтинг сообщения: 1
пока нашел вариант и создать хедер и объявить в ним пользовательский тип. Подключать там где надо.
есть ли еще варианты?

Так и надо делать. А зачем другие варианты?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср апр 04, 2018 16:13:10 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Просто так еще не делал)))Спасибо!


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

Карма: 51
Рейтинг сообщений: 2108
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6998
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
viiv писал(а):
скорее, это точка входа, если я правильно понял то, что вам надо:
умение объяснять (особо письменно) хоть и развивается, но пока не сильная моя сторона :) мне не надо бэкдор в функцию, хотя... теоретически этот вариант впринципе тоже возможен если флеш придётся жестко экономить... а как тут происходит работа со стеком и видимостью переменных?
я предпочитаю прыгать безопасно - только внутри подпрограммы "горизонтально", чтобы очередность стека не нарушить (входить как природой средой программирования задумано а уже потом шалить :))) ).
———————————————
ARV, сейчас практических задач не стоит - собранный таким алгоритмом прибор исправно трудится в холодильнике: в тиню2313 запихнул дин.индикацию, работу с кнопками (антидребезг и комбинации) опрос термодатчика (его опрос и выкладывал в примере), таймеры (чтобы компрессор не мог включаться слишком часто, плавная регулировка яркости по конечнику двери (или датчику освещенности), меню для настройки рабочих температур, хотел добавить таймер, чтобы уменьшить потребление дорогого дневного электричества (но счетчик там оказался однотарифный). есть и другие поделки сделанные так и не только на тинях.
просто (пока есть свободное время) решил осмотреться и поприбраться...

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


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

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
viiv писал(а):
Ничего общего с setjmp()/longjmp(). Вообще не понимаю, почему у Вас возникла такая ассоциация
ну вот почему:
viiv писал(а):
т.е. на самом деле "прыгать" в середину другой функции
вы предложили способ без применения setjmp.h сделать то же самое: из середины одной функции прыгнуть в середину другой. по-моему, общее с setjmp есть
Ivanoff-iv писал(а):
решил осмотреться и поприбраться...
вот я и не понимаю, почему вместо причесывания кода в приличной манере вы пытаетесь освоить какие-то грязные хаки... имхо, лучше структурного программирования для Си не придумать. конечный автомат хорош, когда количество состояний небольшое. поэтому вместо наворачивания всего в один конечный автомат правильнее разбивать алгоритм на несколько маленьких. и, разумеется, распределять задачи между главным циклом и прерываниями - может, тогда и потребности в бесконечных автоматах не возникнет

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

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


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

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


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

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


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

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


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