a5021 писал(а):Повышая частоты, повышаются накладные расходы на вызов прерываний. Вход в прерывание и выход из него, суммарно обходятся в ~20 (не помню до единиц точно) тактов процессора. Для 8кгц это оборачивается в 1% всего процессорного времени. Это время, в течении которого полезных действий не производится с точки зрения алгоритма. Для 32к потери составят уже 4%.
oleg110592 писал(а):чтоб не было накладных расходов на вызов прерываний, есть способ
Вот он. STM8S, в железе. И никакие расходы не повышаются. Сэмплы 64К, прерывания/обновление 8К, ШИМ 8бит, Duty Cycle 75%, в прерывании дрыг ногой для визуализации процесса.
Вам бы не в силаю таращиться, а разбираться, как вообще МК работает. Потери во времени обработки кода, а не в точности следования событий таймера. Таймер железный, ему пофиг, что там с кодом происходит.
Какие потери? Откуда? Можете объяснить? Или у вас спор ради спора? Зашли в прерывание, загрузили данные в таймер, запустили ADC, вышли. Всё! Большие расходы по времени? Неужели? И так через каждые 125мкс.
Каждое прерывание предваряется процедурой сохранения текущего состояния процессора. В данном случае это сохранение значений рабочих регистров МК в стеке. Выполнение команд сохранения занимает не менее девяти тактов процессора. Выход из прерывание откатывает эту процедуру в обратном направлении, на что уходит еще 11 тактов. Итого: 20. Все это в картинках изображено на стр. 25 документа под названием Rm0016. Двадцать тактов по времени это 20/16000000 = 1.25 микросекунды. Прерываний за секунду у вас случается 8000. Отсюда, 1.25 х 8000 = 0,01с. или ровно 1% времени каждую секунду процессор занят сохранением состояния перед прерыванием и восстановлением после. При чем тут "спор ради спора"? Меня с детства учили отвечать за свои слова.
a5021 писал(а):Вам бы не в силаю таращиться, а разбираться, как вообще МК работает.
Весьма интересное изречение . А как вы разбираетесь с работой МК и периферии? Как один ныне почивший саксаул - чистА умственными выкладками , али симулятор терзаем?
a5021 писал(а):Прерываний за секунду у вас случается 8000. Отсюда, 1.25 х 8000 = 0,01с. или ровно 1% времени каждую секунду процессор занят сохранением состояния перед прерыванием и восстановлением после.
И что? Предлагаете не пользоваться прерываниями? Предложите что-то лучше. 1-2% - не велика потеря.
При чем тут "спор ради спора"? Меня с детства учили отвечать за свои слова.
Вы сегодня, видать, с чтением мануалов переусердствовали. У вас глюки начались. Я в адрес силаи ни пол слова плохого не сказал.
Kinder_Surprise писал(а):И что? Предлагаете не пользоваться прерываниями?
Ничего я не предлагаю. Ухудшение отклика неизбежная плата за прерывания. Для слабонагруженных систем это не имеет никакого значения, но там, где производительность может оказаться исчерпанной, о накладных расходах приходится задумываться.
Тогда и ответьте, откуда здесь 8% для 64к?
Мне казалось, что для выяснения этого вопроса вам должно было хватить простейших арифметических навыков: 64/8 = 8.
a5021 писал(а):там, где производительность может оказаться исчерпанной, о накладных расходах приходится задумываться.
Без прерываний вообще не сложится, так что тут думать?
64/8 = 8.
Восемь чего? Вход в прерывание, занести данные в таймер, считать значение ADC, запустить ADC и выход - ~3мкс. Это 2,4% (3мкс/125мкс) при 64к, но никак не 8%. Это про всё, а не просто войти/выйти в прерывание. 97,6% остаётся, это не мало! А хватит на езернет или нет, это уже другая песня.
Надо же, это не вы писали? Очередные - вранье и клоунские увертки...
И каким дерьмом, вам показалось, я в этой фразе облил силаю? Не отпускают, выходит, глюки и наваждения?
Kinder_Surprise писал(а):Без прерываний вообще не сложится, так что тут думать?
Думать следует о том, как не злоупотреблять. Отказываться от прерываний никто не предлагал.
Восемь чего?
Процентов, чего же еще. Если прерывание случающееся с частотой 8000 раз в секунду отжирает 1% вычислительного ресурса, то прерывание следующее с частотой 64000 раз отожрет 8%. Это арифметика.
a5021 писал(а):Думать следует о том, как не злоупотреблять. Отказываться от прерываний никто не предлагал.
Тогда к чему вся ваша никому ненужная чушь про прерывания и такты? Одно короткое прерывание, раз в 125мкс, небольшая потеря.
Процентов, чего же еще. Если прерывание случающееся с частотой 8000 раз в секунду отжирает 1% вычислительного ресурса, то прерывание следующее с частотой 64000 раз отожрет 8%. Это арифметика.
Понятно. Вы не в теме, да ещё плохо с математикой и со зрением. А вот и момент истины. Где вы видели "прерывание следующее с частотой 64000"? Прерывания с частотой 8000, т.к. исходный материал 8000Гц, а сэмплирование - да, 64000! Так что вашим 8% просто неоткуда взяться.
Учите матчасть, читайте даташит, просвещайтесь!
a5021 писал(а):
Ну это вообще не наезд, а халтура какая-то.
Это констатация фактов.
Вы только что круто обделались, обсчитав сферического коня в вакууме. На лицо полное не понимание как и архитектуры в целом так и выхлопа звука через PWM в частности.
Хотя есть ничтожная надежда что, ваш мозг не поспевает за руками и строчите вы даже не подумав.
Но все же нет , это просто ваша природная тупость, отягощённая аурдуньей.
И далее , вы нисколько не повзрослели с предыдущей дискуссии, с участием ЛИ. Все тот же эпический гонор нуба-первооткрывателя ...
dosikus писал(а):
Вы только что круто обделались, обсчитав сферического коня в вакууме.
На лицо полное не понимание как и архитектуры в целом так и выхлопа звука через PWM в частности.
Но пальцем ткнуть, где именно, предусмотрительно не рискуете? Понимаю вас.