Например TDA7294

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





Текущее время: Пт июл 04, 2025 19:58:20

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


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



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

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

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


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

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
но вообще мне не хватает break из вложенных циклов... как бы можно было это реализовать - не знаю, но не помешало бы точно :)
тут как раз goto вполне в тему :dont_know:


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

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

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


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

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1588
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Всю тему я, правда, не читал. Но, как я понял, вы с помощью goto делаете переход между состояниями автомата?

Цитата:
сложность конечных автоматов не столько в количестве состояний, сколько в количестве и разнообразии преходов.


А вы все состояния сведите в один большой enum, а сам автомат сделайте просто вызовом функций обработки состояния по значению этого самого enum. Тогда goto вам не нужны будут.
Типа
enum STATE
{
STATE_BEGIN,//начальное состояние автомата
STATE_ONE,//первое состояние
STATE_TWO//второе состояние
};
...
STATE state;
...
if (state==STATE_BEGIN) ExecuteStateBegin();
if (state==STATE_ONE) ExecuteStateOne();
if (state==STATE_TWO) ExecuteStateTwo();

А в этих функциях меняйте state от ситуации и на следующей итерации автомат выполнит уже другую функцию.

Цитата:
я тоже считаю что в goto нет ничего страшного


Такие ситуации достаточно редкие. Я могу вспомнить разве что выход из вложенных циклов наружу и только. :dont_know: В целом, я за 18 лет игр с Си++ goto не применял ни разу. Только в бейсике. :)
Вот, посмотрите, например. Ни одного goto:
https://github.com/da-nie/3DEngine-Universal
https://github.com/da-nie/teamcontrolclient

Goto не нужен в 99.9999999% случаев. :)

_________________
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos


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

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

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

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

Добавлено after 53 seconds:
до этого случая тоже гото ни разу не пригождалось.

Добавлено after 2 minutes 34 seconds:
подскажите лучше это:
Ivanoff-iv писал(а):
осталось найти как силами среды (чтоб в код попал только результат его работы) сделать счётчик для автоматического нумерования меток
а про ужасы и геенну огненную, что меня ожидает за применение гото, я осведомлен :))

Добавлено after 1 hour 4 minutes 23 seconds:
сейчас код выглядит так (пример использования):
Код:
#define DelayCoeff 4.096   //количество вызовов за миллисекунду
#define StartDelay(x,t)  if (t) {(t)--;} else {switch (x){case 0: (t)=-1;
#define Delay(num,te,x,t)  (x)=(num); (t)=(te)*DelayCoeff; goto Label##x; case(num): (t)=-1;
#define EndDelay(te,x,t) (t)=(te)*DelayCoeff; default: (x)=0;}; Label##x:};
//_____
void NashaFunctia (void)
{
static unsigned char delayx; //счет точек
static unsigned int  delayt;  //счет времени
StartDelay(delayx,delayt) //размещается вначале функции
<код а>
Delay(1,100,delayx,delayt); //размещается в произвольных местах в функции всесто delay_ms();
<код б>
Delay(2,500,delayx,delayt);
<код в>
EndDelay(1000,delayx,delayt); //размещается в конце функции
}

interrupt [TIM2_OVF] void timer2_ovf_isr(void) // interrupt-прерывание
{
<критичный код>
#asm("sei")
NashaFunctia();
}
......................
здесь:
x (static unsigned char) - хранит номер текущей точки останова (нужно вписать название переменной)
t (static unsigned int) - хранит задержку (нужно вписать название переменной)
te (переменная, но лучше константа (число)) - задержка перед продолжением (мс) (по идее здесь надо вычесть 1, т.к. выход из подпрограммы - уже задержка на цикл)
num (число) - неповторяющийся номер точки останова
в отдельную функцию код выделять не обязательно - написал так для наглядности, если в пределах функции есть несколько независимых подзадач - для их счетчиков надо выделить независимые переменные.

эта конструкция заменяет записанный в майне код:
Код:
while (1)
{
<код а>
delay_ms(100);
<код б>
delay_ms(500);
<код в>
delay_ms(1000);
}


причем, даже если вписываю в код подпрограммы delay_ms(100); - срыва стека не происходит, просто подпрограмму накрывает следующим прерыванием (в нём выполнение этой задачи блокировано), а когда прерывание завершается - подпрограмма продолжается: на скриншоте осциллограф показывает работу АЛУ (высокий уровень) и режим сна (низкий уровень), просто низкого уровня нет (там импульсы менее 5% заполнения) т.к. АЛУ просыпается, чтобы переключить разряд индикатора. ПС:длительность в 2 раза превышает расчетную потому что поставлена неправильная тактовая (4 вместо 8 МГц)


Вложения:
загрузка АЛУ.png [132.45 KiB]
Скачиваний: 340

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


Последний раз редактировалось Ivanoff-iv Чт апр 05, 2018 08:33:25, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт апр 05, 2018 08:29:56 
Говорящий с текстолитом
Аватар пользователя

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1588
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Цитата:
подскажите лучше это:


Это лучше сжечь. :) Правда! 8)
Чтобы подсказать, как нужно сделать правильно, нужно точно знать, что вы решаете со всеми нюансами. И вникнуть. Но вряд ли кто этим займётся, кроме вас. :)
А зачем вы делаете sei в обработчике таймера? Вы любите балансировать на грани работоспособности программы? :) Вы бы лучше задержки делали с помощью счётчика и таймера, уменьшающего этот счётчик, если он больше нуля. А в основном цикле в delay просто ждали бы, когда счётчик не равен нулю. В вашей функции NashaFunctia проще сделать return в случае необходимости преждевременного выхода и всё.

Цитата:
а когда прерывание завершается - подпрограмма продолжается:


Даже такая стабильная ОС, как QNX, способна упасть, если не будет успевать обрабатывать события внутри системного такта. ;)

_________________
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos


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

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт апр 05, 2018 08:37:27 
Друг Кота
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт апр 05, 2018 08:39:01 
Говорящий с текстолитом
Аватар пользователя

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1588
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Всему своё время. :)

_________________
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos


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

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

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


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

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3377
Рейтинг сообщения: 0
Берите нормальною ОС, типа FreeRTOS. Возможностей гораздо больше.


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

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

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


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

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

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

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


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

Карма: 13
Рейтинг сообщений: 86
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 278
Рейтинг сообщения: 0
нет, только выход наружу (вместо брейк) и только в пределах функции


Если все тек, как Вы описываете ниже используйте return вместо goto. И никаких меток :-)


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

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

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


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

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1588
Откуда: Лен.Обл.
Рейтинг сообщения: 0
А вы его выделите. ;)

_________________
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos


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

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

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


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

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


Компилятор все заоптимизирует. Не будет никаких вызовов.


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

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

ковыряться в ваших макросах уже никто не хочет, да и ответов на ваши вопросы, по-моему, уже три страницы нет. прогноз каков? останетесь вы со своими проблемами в гордом одиночестве, да и все. мир не перевернется, никто не пострадает, никто и не заметит. всем, и вам тоже, будет наплевать на всё.

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

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


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

Карма: 13
Рейтинг сообщений: 86
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 278
Рейтинг сообщения: 0
а если этот код не будет выделен в функцию?


Опять же недопонимание. Как я понял, Вы хотите написать функцию, которая будет выполняться последовательно частями. Это все надо для того, чтобы где-то ее (эту функцию) вызвать, не заботясь какая часть будет выполняться. Это так? Тогда как может быть, что "этот код не будет выделен в функцию"?


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

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


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

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


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

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


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

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


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