Светодиодные фонари и световые приборы. Всё о светотехнике.
Изображения Дневники Группы Поиск
Вернуться   Форум FONAREVKA.RU Мастерские светотехников Мастерская: Tamagotchi и Rime
Расширенный поиск
Забыли пароль? Регистрация

  • О нашем проекте
  • Светотехника и световые приборы
  • Правила форума
Проект FONAREVKA.RU специализируется на предоставлении всей необходимой информации по светотехнике:

— светодиодные фонари;
— различные источники питания;
— разнообразные зарядные устройства;
— освещение помещений и наружное освещение;
— световые приборы для личного, пассажирского и грузового транспорта;
— специальные световые приборы для медицины, для растений, для аквариумов, для террариумов, а также аварийно-сигнальные световые приборы;
— альтернативные источники света;
— лазеры и лазерная техника.

Если у вас есть вопросы по выбору фонарей, аккумуляторов и зарядных устройств ознакомьтесь с FAQ от наших экспертов:

F.A.Q. по выбору фонарей различных типов;
F.A.Q. по выбору аккумуляторов;
F.A.Q. по выбору зарядных устройств.
Закрытая тема  Создать новую тему
Просмотров в теме 239995   Ответов в теме 837   Подписчиков на тему 28   Добавили в закладки 11
Опции темы Поиск в этой теме
Старый 20.02.2014, 20:29   81
DooMmen
Участник форума по OpenID
 
Аватар для DooMmen
 
Регистрация: 08.01.2014
Последняя активность: 21.02.2021 00:07
Адрес: Украина, Харьков
Сообщений: 496
Записей в дневнике: 3
Сказал(а) спасибо: 329
Поблагодарили: 151 раз(а) в 89 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

INFERION, про СДМ я в курсе (использовал для управления нагревателем в фене), но для его применения необходимо переписать всю программу (хотя есть вариант впихнуть в прерывание), а я только допилил существующую, да и инициализация ШИМа меньше места занимает, но идея интересная, особенно если учесть графики потерь.

На счет появления энергии в конденсаторе - представим что у него низкое ESR и происходит просадка при подключении светодиода.

Условие переключения режима:
Код:
	if((MCUSR & (1<<BORF)) != 0)
	{
		if((MCUSR & (1<<EXTRF)) == 0)	SetNewMode();
		MCUSR=0;
	}
С ним я ничего не делал, так как места маловато, да и работает без сбоев.

Про потери на светодиоде я как-то подзабыл, да и при таком токе ШИМом светляк сделать нереально почти будет. Вывод - лучше только импульсник.

[Исправлено: DooMmen, 20.02.2014 в 20:35] Причина: КПД
DooMmen вне форума   Вверх
Старый 21.02.2014, 06:47   82
galex
сволочь фонарёвки
 
Регистрация: 27.05.2011
Последняя активность: Сегодня 15:03
Адрес: Россия, Пермский край
Сообщений: 38356
Сказал(а) спасибо: 5939
Поблагодарили: 32753 раз(а) в 15181 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
быстрее чем заряд на RESET'е
не ресетом единым. есть еще модификация без конденсатора, на кратковременной памяти регистра, но там емкость по питанию влияет.

давайте вспомним, с чего все началось. шим-ы, сдм-ы...
надо снизить потребление в светляке лишь. в других режимах не важно, да и шим там нет. кроме младшего. сам по себе светляк устраивает как по яркости, так и по мерцанию - не видно его.
galex вне форума   Вверх
Старый 21.02.2014, 09:12   83
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Сейчас по мерцанию устраивает, а если опустить тактовую частоту до сотни килогерц - врятли устроит без кондёра на выходе. Так что решайте что лучше - пара миллиампер потребления МК, низкая эффективность СИД, или противные мерцания... Такой вот компромисс. Сейчас ни туда ни сюда - и МК жрёт, и мерцает (хоть и на довольно высокой частоте). К тому же AMC в импульсах не выходит на режим. С таким же успехом можно просто светик резистором подтянуть и заснуть. Но наверняка кто-то назовёт это золотой серединой...

Вместо мунлайтовой AMC можно влепить что-то более слаботочное. Хотя бы тот же биполярник с резистором. И модулировать его, он то во первых шустрый, во вторых меньший ток позволяет увеличить заполнение, а с ним и частоту. Эффективность СИД на токах около 50мА не сильно низкая.

[Исправлено: INFERION, 21.02.2014 в 09:16]
INFERION вне форума   Вверх
Старый 21.02.2014, 10:02   84
galex
сволочь фонарёвки
 
Регистрация: 27.05.2011
Последняя активность: Сегодня 15:03
Адрес: Россия, Пермский край
Сообщений: 38356
Сказал(а) спасибо: 5939
Поблагодарили: 32753 раз(а) в 15181 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
если опустить тактовую частоту до сотни килогерц - врятли устроит без кондёра на выходе. Так что решайте что лучше - пара миллиампер потребления МК
вот тут вроде килогерц
а потребление 0.8мА
а ну как это и есть то, что
Цитата:
Посмотреть сообщение Сообщение от INFERION :
кто-то назовёт это золотой серединой


Цитата:
Посмотреть сообщение Сообщение от INFERION :
тот же биполярник с резистором. И модулировать его
тогда и биполярник не нужен. просто резистор, там вроде до 25ма нагрузка на порт допустима? режимом 30-80лм только придется пожертвовать
вообще, идеальным было бы найти стаб в таком же корпусе ма на 150... но есть либо на 200, либо на 20-40
galex вне форума   Вверх
Старый 21.02.2014, 11:43   85
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от galex :
вот тут вроде килогерц
а потребление 0.8мА
Я говорю за тактовую. На 128кГц (тактировние от сторожевого пса) потребление что-то около 60мкА в активном режиме. Это явно не 800мкА...
Цитата:
Посмотреть сообщение Сообщение от galex :
а ну как это и есть то, что
А мне вот не нравится. Знаю что по уму можно было бы сделать в разы лучше. Но тогда от родной схемы драйвера мало что осталось бы.
Цитата:
Посмотреть сообщение Сообщение от galex :
тогда и биполярник не нужен. просто резистор, там вроде до 25ма нагрузка на порт допустима? режимом 30-80лм только придется пожертвовать
И ток будет в десятки раз разгуливать от напряжения питания, да? Транзистор его хоть как-то стабилить будет.
20...40мА стаб чем не устраивает? Удобный вариант. И проблем с режимом 30...80лм не понял. Что мешает модулировать AMC?

[Исправлено: INFERION, 21.02.2014 в 11:44]
INFERION вне форума   Вверх
Старый 21.02.2014, 12:28   86
galex
сволочь фонарёвки
 
Регистрация: 27.05.2011
Последняя активность: Сегодня 15:03
Адрес: Россия, Пермский край
Сообщений: 38356
Сказал(а) спасибо: 5939
Поблагодарили: 32753 раз(а) в 15181 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
ток будет в десятки раз разгуливать от напряжения питания, да?
откуда там десятки? в несколько раз. а яркость и того меньше.
Цитата:
Посмотреть сообщение Сообщение от INFERION :
Транзистор его хоть как-то стабилить будет.
только лишь за счет все того же резистора

Цитата:
Посмотреть сообщение Сообщение от INFERION :
20...40мА стаб чем не устраивает?
тем что не будет режима между 20-40 и 700мА.
и тем, что его взять сосбственно негде. в штучных количествах.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Что мешает модулировать AMC?
отсутствие этого самого АМС, мы ж его только что поменяли на 20-40мА
galex вне форума   Вверх
Старый 21.02.2014, 15:57   87
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от galex :
откуда там десятки? в несколько раз. а яркость и того меньше.
При падении на светике в 2,5V и напряжениях питания в 2,5...4,2V - Запросто будут десятки раз. Закон Ома.
Цитата:
Посмотреть сообщение Сообщение от galex :
только лишь за счет все того же резистора
Не правда. За счёт h23э, который относительно стабилен. На ключе падают десятки милливольт, поэтому напряжение питания может опускаться до упора, практически без изменения тока коллектора. Между базой и эмиттером падает значительно меньше чем на светодиоде (0,5...0,6V), поэтому тот же резистор даст значительно меньший разгул токов от напряжения питания. Плюс добавится положительный температурный коэффициент тока, поскольку h21э растёт с ростом температуры. Если нужна хорошая стабильность и повторяемость - вводится местная ОС (резистор в эмиттерной цепи), а между базой и массой суётся парочка 1N4148. Получается стаб тока на дискрете. Только вот фишка народного драйвера в том, что он в полуфабричном состоянии доступен и переделывать почти ничего не требуется. А если так углубляться, то уже сразу и плату новую травить...
Цитата:
Посмотреть сообщение Сообщение от galex :
тем что не будет режима между 20-40 и 700мА.
Будет, у нас ведь ещё целая батарея AMC...
Цитата:
Посмотреть сообщение Сообщение от galex :
отсутствие этого самого АМС, мы ж его только что поменяли на 20-40мА
А других что, нет? Их на плату до 8-ми штук распаивают. Неужели не найдётся одна AMC'шка на отдельной лапе МК?

[Исправлено: INFERION, 21.02.2014 в 16:01]
INFERION вне форума   Вверх
Старый 21.02.2014, 20:53   88
DooMmen
Участник форума по OpenID
 
Аватар для DooMmen
 
Регистрация: 08.01.2014
Последняя активность: 21.02.2021 00:07
Адрес: Украина, Харьков
Сообщений: 496
Записей в дневнике: 3
Сказал(а) спасибо: 329
Поблагодарили: 151 раз(а) в 89 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

От заряженной батареи светляк потребляет 2.395мА (а при просадке до 3.7В - 1.9мА, в этом случае светляк проработает где-то 40 дней (может даже больше), и это мало?
Я могу убрать по выбору один из режимов и переписать програмку, но проверять работоспособность мне не на чем (драйвер один и тот в фонаре).
DooMmen вне форума   Вверх
Старый 22.02.2014, 20:03   89
galex
сволочь фонарёвки
 
Регистрация: 27.05.2011
Последняя активность: Сегодня 15:03
Адрес: Россия, Пермский край
Сообщений: 38356
Сказал(а) спасибо: 5939
Поблагодарили: 32753 раз(а) в 15181 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
2,5...4,2V - Запросто будут десятки раз. Закон Ома.
а проверьте. не забывайте, там резистор стоит. 5 раз всего. не учитывая нелинейность ВАХ светодиода
только не будет там 2.5. исходите из минимума в 2.8В
Цитата:
Посмотреть сообщение Сообщение от INFERION :
вводится местная ОС (резистор в эмиттерной цепи)
ну вот, уже 2 резистора, т.е 3 детали вместо одной

Цитата:
Посмотреть сообщение Сообщение от INFERION :
а между базой и массой суётся парочка 1N4148.
уже 5 деталек?

Цитата:
Посмотреть сообщение Сообщение от INFERION :
так углубляться, то уже сразу и плату новую травить.
то-то и оно. чего выдумывать, проще линейник AVSel сразу сделать. суть-то утеряна - минимумом телодвижений получить приличный драйвер.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Будет, у нас ведь ещё целая батарея AMC...
и всего 3 выхода. первым мы пожертвовали ради низкого тока. что остается? отдать один под ШИМ одной 7135? пожертвовав средним режимом?

Цитата:
Посмотреть сообщение Сообщение от DooMmen :
От заряженной батареи светляк потребляет 2.395мА
сколько из них приходится на светодиод?

[Исправлено: galex, 22.02.2014 в 20:04]
galex вне форума   Вверх
Старый 22.02.2014, 20:32   90
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от galex :
отдать один под ШИМ одной 7135? пожертвовав средним режимом?
Зачем жертвовать средним? Возможность убить последствия ШИМ позволяет средний сделать на одной линии с мощным (посредством всё того же СДМ). Получается три канала, на каждом определённый диапазон токов.
INFERION вне форума   Вверх
Старый 23.02.2014, 16:38   91
DooMmen
Участник форума по OpenID
 
Аватар для DooMmen
 
Регистрация: 08.01.2014
Последняя активность: 21.02.2021 00:07
Адрес: Украина, Харьков
Сообщений: 496
Записей в дневнике: 3
Сказал(а) спасибо: 329
Поблагодарили: 151 раз(а) в 89 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от galex :
сколько из них приходится на светодиод?
Измерьте, и поделитесь с нами этой цифрой, а у меня нет желания очередной раз разбирать фонарик. Данным режимом пользуюсь крайне редко и в целях освещения, а для остального флюорисцирующей кнопки даже хватает. Если хочете что-то сделать - или делайте сами, или предлагайте варианты и участвуйте в тестировании и замерах.
DooMmen вне форума   Вверх
Старый 23.02.2014, 18:41   92
galex
сволочь фонарёвки
 
Регистрация: 27.05.2011
Последняя активность: Сегодня 15:03
Адрес: Россия, Пермский край
Сообщений: 38356
Сказал(а) спасибо: 5939
Поблагодарили: 32753 раз(а) в 15181 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от DooMmen :
Измерьте, и поделитесь с нами этой цифрой
так я уже измерял. при частоте ШИМ 9кГц и скважности 255:3 - около 0.5мА. надеялся что у вас что-то другое может быть.
Цитата:
Посмотреть сообщение Сообщение от DooMmen :
предлагайте варианты и участвуйте в тестировании и замерах.
печально слышать. как будто я в этой теме мимо проходил лишь пальцы погнуть.

[Исправлено: galex, 23.02.2014 в 18:43]
galex вне форума   Вверх
Старый 23.02.2014, 18:53   93
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

DooMmen, уже ведь всё замеряно, даже осциллограммы сняты. Потребление МК лучше смотреть по даташиту. Хотя с Си всё не так однозначно. Возможности AMC тоже известны, так же как и косяк с паразитным питанием. Уже достаточно информации, чтоб написать полноценную программу на ассемблере, который вы так любите. Если вы решили поставленную перед собою задачу и результат вас уже устраивает, тогда будем ждать пока у кого-нибудь ещё не проснётся интерес к дальнейшей модификации этого драйвера. Я вижу что у него не весь потенциал ещё раскрыт...
Да, я бы туда сразу 25-ю лепил, или 85-ю. Они внутрикристально меряют питание и температуру, что очень полезно. Однако по цене уже не то, да и корпуса у них кабанячие по меркам пика в SO-8.

[Исправлено: INFERION, 23.02.2014 в 18:56]
INFERION вне форума   Вверх
Старый 23.02.2014, 18:59   94
galex
сволочь фонарёвки
 
Регистрация: 27.05.2011
Последняя активность: Сегодня 15:03
Адрес: Россия, Пермский край
Сообщений: 38356
Сказал(а) спасибо: 5939
Поблагодарили: 32753 раз(а) в 15181 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Да, я бы туда сразу 25-ю лепил, или 85-ю.
уже
к сожалению без исходников. но нам и это за счастье.
galex вне форума   Вверх
Старый 23.02.2014, 21:03   95
DooMmen
Участник форума по OpenID
 
Аватар для DooMmen
 
Регистрация: 08.01.2014
Последняя активность: 21.02.2021 00:07
Адрес: Украина, Харьков
Сообщений: 496
Записей в дневнике: 3
Сказал(а) спасибо: 329
Поблагодарили: 151 раз(а) в 89 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

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

От вас мне надо узнать только одно - что делать, и какой режим отключить?
В данном варианте можно включить BODSE, понизить частоту еще в двое (частота шим будет 4,7кГц, хотя можно повысить до прежней, уменьшив битность до 7), переводить контроллер в Idle в режиме светляка. На неделе могу переписать, ну а тестировать - вам.
DooMmen вне форума   Вверх
Старый 23.02.2014, 21:14   96
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Если б я мог тестировать - я бы и сам программу написал. У меня нет такого драйвера, всё импульсное и на сотню ватт...
Потенциал и у этого драйвера есть. Импульсный на порядок сложнее, а этому нормальную модуляцию прикрутить да код оптимальнее написать, чтоб больше косметики влезло. Всего то 512 строк кода, больше и не влезет...

Если понизить тактовую до 1МГц, то МК сможет работать от 1,8V. С большой вероятностью он сбросится раньше, чем сглючит, но я не проверял. Вот с тактированием от сторожевого пса уже наверняка МК будет потреблять ерунду и стабильно работать пока RESET'у хватает напряжения для логической единицы (1,2...1,4v). Тут уже BOD не понадобится точно. ШИМ получится на килогерц, зато МК в активном режиме будет потреблять 60мкА. BODSE работает только в Power Down, отключить BOD можно только фьюзами. Т.е. МК остаётся без него навсегда, и должен уметь адекватно стартовать и работать в критических условиях.
Idle, кстати, как я заметил, здорово не влияет на потребление. Может быть потому, что у меня активность программы высокая. Но всё равно половину времени простаивает, а по потреблению выигрыш почти неуловим на фоне шума. А сейчас он что, не используется?

[Исправлено: INFERION, 23.02.2014 в 21:18]
INFERION вне форума   Вверх
Старый 23.02.2014, 22:15 Автор темы   97
Tamagotchi

 
Аватар для Tamagotchi
 
Регистрация: 07.09.2011
Последняя активность: 04.08.2023 18:59
Адрес: Волгоградская обл.
Сообщений: 13705
Сказал(а) спасибо: 3333
Поблагодарили: 7887 раз(а) в 3523 сообщениях

Отправить сообщение для Tamagotchi с помощью Skype™
По умолчанию Re: Народный драйвер мод v2. Часть 2.

Цитата:
Посмотреть сообщение Сообщение от INFERION :
Потребление МК лучше смотреть по даташиту. Хотя с Си всё не так однозначно.
Смешно уже. Столько трепа и в результате такие перлы.
Tamagotchi вне форума   Вверх
Старый 23.02.2014, 22:47   98
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Tamagotchi, от активности ядра, на такой частоте, потребление не так сильно зависит, как от конфигурации периферии, температуры и напряжения питания. Так что ткнутые щупы амперметра покажут только часть той информации, которую передают графики в даташите. Это не пёрлы - изучив графики можно понять что и как нужно делать, чтоб минимизировать потребление. Однако Си делает всё по-своему, и непонятно чем именно сейчас занято ядро. Сколько тактов оно спит и т.п. Это вносит дополнительную неоднозначность, но всё равно даташит представляет интерес, т.к. периферию конфигурируем всё ещё мы. Отключение BOD и ADC (не забывая и об аналоговом компараторе) отключает ИОН и экономит сходу 0,2мА. Стоит ли оно того - решать не мне, но не все об этом даже знают, т.к. даташиты курят поверхностно. Си всё за них делает. А тут ещё и выясняется что даже Idle не используется, хотя МК львиную долю времени делать тут просто нечего. Дальше может выяснится, что аппаратный ШИМ жрёт больше программного и т.д.
Ассемблер прозрачнее и даст лучший результат - это я и хотел сказать выделенными тобою словами. Я, кажется, был у тебя в игноре? Что-то изменилось? Шел бы и дальше смеялся тихонько ...

[Исправлено: INFERION, 23.02.2014 в 22:57]
INFERION вне форума   Вверх
Старый 24.02.2014, 13:15 Автор темы   99
Tamagotchi

 
Аватар для Tamagotchi
 
Регистрация: 07.09.2011
Последняя активность: 04.08.2023 18:59
Адрес: Волгоградская обл.
Сообщений: 13705
Сказал(а) спасибо: 3333
Поблагодарили: 7887 раз(а) в 3523 сообщениях

Отправить сообщение для Tamagotchi с помощью Skype™
По умолчанию Re: Народный драйвер мод v2. Часть 2.

INFERION,
потребление МК от языка програмирования не зависит. Все те же значения можно записать в порты можно как на С там и на асм.
Tamagotchi вне форума   Вверх
Старый 24.02.2014, 14:25   100
INFERION

 
Аватар для INFERION
 
Регистрация: 07.04.2013
Последняя активность: 13.06.2023 02:24
Адрес: Украина, Полтава
Сообщений: 5774
Сказал(а) спасибо: 340
Поблагодарили: 8154 раз(а) в 2385 сообщениях

По умолчанию Re: Народный драйвер мод v2. Часть 2.

Tamagotchi,
Потребление МК зависит от активности ядра. Если не использовать idle, то конечно не зависит. Но нормальные программы умеют усыплять ядро, когда оно не требуется. К примеру, при питании в 4V на частоте 8МГц 85-я тинька в idle (по даташиту) жрёт меньше миллиампера, а в активном режиме - в 4 раза больше. Это тактовый генератор+ядро. Таймеры, АЦП и т.п. жрут дополнительно. Т.е. ядро кушает 3мА при полной загрузке. Мультиметр это всё так просто не покажет, проще заглянуть в раздел Electrical Characteristics. И вот тут Си уступает ассемблеру, ибо ты не знаешь сколько тактов в прерывании ядро активно, сколько тактов оно расходует на обработку семпла АЦП и т.п. Более того - Си обожает нифиг ненужную и ресурсожрущую (память и такты) возню со стеком и ОЗУ. И ещё он обожает просто так прыгать по коду, и ненавидит прерывания - он просто не умеет с ними работать. В прерывании на несколько тактов он может израсходовать десятка 6 тактов на запихивание и вытаскивание всего и вся в стек, когда тебе можно использовать в нём незадействованные более нигде РОН и сохранить лишь регистр статуса (и-то не в стек, ибо это долго и затратно). А если тебе необходимо установить в прерывании флаг и сразу из него выйти (одна инструкция) - Си обязательно в таблицу прерываний влепит джамп куда-то туда, где и установит флаг... Вот нравится ему прыгать просто так, даже когда можно без этого обойтись. Я не обращал внимание, может он и в такой ситуации всё и вся в стек суёт, хотя при этом абсолютно не трогает РОН и регистр статуса в обработчике? То же касается и подпрограмм, которые он обожает. Операция сложения 16+16 может выглядеть как вызов функции подпрограммы сложения 16+16 (2 байта с 2 байтами), с обменом данных через стек. Вместо двух инструкций (4 байта, 2 такта) будет 16 (32 байта, 33 такта). Когда я такое вижу в листинге - мне тоже плохо становится. К счастью под кортексы и ПК компилятор куда адекватнее.

Так вот: в итоге там, где ассемблер нагружает ядро на 10% и оно почти не жрёт энергию - Си спокойно сжирает 100% и не давится, а программист считает что idle ничего не даёт, и что вообще AVR тормоз и на большее не способен (ведь ресурсов вечно не хватает, верно?). Тут не только компилятор виноват. Человек не знает как именно МК выполняет его задачи, и пишет удобные ему, но сложные для камня функции.
Многие моменты лечатся спец. ключами в командной строке компилятора, и в какой-то мере приближает содержимое листинга к нормальному виду, но так глубоко Сишники обычно не зарываются. Ведь если мониторить листинг и понимать что там творится - человеку проще будет писать на ассемблере (реально гибкий и удобный язык для мелких программ на слабых камнях).

[Исправлено: INFERION, 24.02.2014 в 14:31]
INFERION вне форума   Вверх
Закрытая тема  Создать новую тему





Copyright ©2007 - 2024, FONAREVKA.RU

Powered by vBulletin®
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot

Правила форума | Отказ от ответственности
Время генерации страницы 0.14819 секунды с 17 запросами