Страница 48 из 110

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 12:26:47
Мастер Ломастер
BerZerK-ku писал(а)::dont_know: Вы уже выложили этот код, на деле оказавшийся не тем что надо, а теперь хвастаетесь результатами чего-то.
вы уже который раз вместо ответа на вопрос "что не так" задаете свой вопрос "а разве все так?" :))) ваша позиция весьма конструктивна. что значит "код на деле оказался не тем, что надо"? чем оказался этот код? вирусом? ;)

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 12:35:56
BerZerK-ku
Мне кажется или я уже писал, что задержки не соответствуют тем, что требовались от ф-ии?

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 13:53:52
BCluster
Мастер Ломастер, приведите уже корректировку это кода наверное ) А то получается то, что получается :)

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 14:32:10
Мастер Ломастер
BerZerK-ku писал(а):Мне кажется или я уже писал, что задержки не соответствуют тем, что требовались от ф-ии?
вам кажется :))) я не видел ваших сообщений в нормальном, конструктивном ключе, дескать "задержка в 100 мкс на самом деле получается 555 мкс" или в этом духе. обязательно с указанием условий, при которых происходило подобное безобразие - версия компилятора, тип МК и т.п. :)))
откуда мне знать, что вы вообще умеете что-либо правильно делать?

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 14:34:27
BerZerK-ku
:dont_know: не вижу и обратных подтверждений того , что код рабочий. Кроме голословных утверждений, причем о какой-то модифицированной версии.
Может приведете свои цифры для этого кода? Тип мк - любой из серии ATmega, тип компилятора - пусть ваш любимый winavr. Еще какие-то данные требуются? Или может озвучите ваши настройки при которых удалось достичь желаемого?

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 14:45:12
Мастер Ломастер
я уже приводил. atmega88, тактовая частота от 10 и более Мгц, в коде надо подправить одно число :) погрешности я указывал ранее - если хотите, поищите и ознакомьтесь. протестировано по счетчику отладчика AVR Studio. вы меня утомляете: если у кого-то есть претензии к кому-то, то любые обвинения надо доказать - так по-моему? или вы и этих правил не знаете (дуэльного кодекса не знаете, правил приличия не знаете, правил оформления кода не знаете)? а вы вынуждаете почему-то меня оправдываться, даже не доказав, что вы имеете на то основания!

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 14:54:26
BerZerK-ku
:))) какие-то очередные правила возникли, откуда вы их берете?
Слова "подправьте циферку и все заработает" вообще вызывают умиление, че бы тогда не "напишите свою задержку и проверяйте на ней".
Какие доказательства нужны? Числа? Ну например могу привести такие цифры: 130+ мкс вместо ожидаемых 100мкс. Скрины? ну на них те же цифры, не вижу смысла врать.

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 14:59:28
Мастер Ломастер
знаете такое правило "ослиный мостик"? ну, только осел не перейдет... обычно задачи типа мостика задают на собеседованиях, чтобы сразу оценить степень подготовки кандидата... для вас таким мостиком стал мой принцип не давать на 100% готового кода - найти и подправить значение ЕДИНСТВЕННОЙ цифры в коде вы не сумели... не перешли мостик :))) жаль. ладно, чтобы не мучить ваш интеллект, скажу: надо вместо 1 поставить 0.8 в качесвте параметра _delay_us :) это же очевидно любому профессионалу: требуется коррекция вложенной задержки для компенсации времени работы "внешнего" цикла :)))

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 15:17:58
BerZerK-ku
Исходя из ваших слов функция должна выглядеть так ?

Код: Выделить всё

void mega_delay(uint16_t delay_in_microseconds)
{
   for(; delay_in_microseconds; delay_in_microseconds--)
      _delay_us(0.8F);
}
Mega88, частота 10Мгц. Вместо 100мкс дает 150 мкс. Оптимизация по скорости максимальная. Вы ничего не перепутали?
И почему именно 0.8? Мне интересны математические выкладки, как эти 0.8 дадут одинаковую компенсацию на разных частотах (вы заявили о 10Мгц и выше). Прошу снизойти до меня и не проигнорировать эти банальные для профессионала моменты.

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 15:28:28
Мастер Ломастер
видимо, вы превзошли мои худшие предположения о ваших навыках и умениях :( мне снять видео, как я все делаю, чтобы вы поверили?

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 15:31:25
BerZerK-ku
Зачем? Достаточно проекта :dont_know: и я сам пощупаю.

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 15:38:59
Мастер Ломастер
BerZerK-ku писал(а):Зачем? Достаточно проекта :dont_know: и я сам пощупаю.
ваша беспомощность просто поразительна... и вы еще на мою компетенцию бочку катили... вот вам супермега проект, проверяйте :)

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 16:19:06
BerZerK-ku
А вот так уже почему-то не работает? Поясните что я не так делаю? Что я сломал?
Чтобы не быть голословным, при i = 100 между сбросом и установкой бита в порту проходит 113 мкс, вместо 100. Дальше ситуация не лучше.

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 19:50:35
urry
Ребята, я уже за.пываюсь вас читать - как и большинство присутствующих, я уверен.
Итак, в чем вопрос -использование указателей на структуру - уменьшает или увеличивает размер кода ?
В разных вариантах оптимизации - типа..
Вы там не о.уели ???
Где проблема ?

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 20:43:37
Avarges
urry, их уже не остановить. Новогоднее настроение люди нам создают и пускай :) На радиокоте так можно, я и сам проверял ;-)

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 21:54:35
Мастер Ломастер
BerZerK-ku писал(а):А вот так уже почему-то не работает? Поясните что я не так делаю? Что я сломал?
Чтобы не быть голословным, при i = 100 между сбросом и установкой бита в порту проходит 113 мкс, вместо 100. Дальше ситуация не лучше.
гм... вы же круче меня в Си рубите - откуда такие вопросы-то? я поковырялся, причину странностей обнаружил. во всяком случае для такого кода я все понял:

Код: Выделить всё

		for(uint16_t i=100; i<200; i++){
			PORTB = 11;
			mega_delay(i);
			PORTB = 0;
			mega_delay(i);
			PORTB = 1;
		}
но даже и не знаю, рассказывать столь большому знатоку Си очевидные вещи или нет...
может, вы поделитесь сокровенным знанием по этому вопросу? я ведь по-вашему мнению слишком слабо в Си разбираюсь. чтобы сказать что-то умное...

скажу лишь следующее: в данном случае погрешность задержек чуть больше, чем для идеального случая - добавляются накладные расходы по пересылке переменных, передаваемых в качестве параметра функции... что ж, выход один - снова подкорректировать константу, которая соответствует "чистой" задержке в1 микросекунду, т.е. взять не 0.8, а меньше. т.е. в моих опытах вместо 100-101-102 и т.п. задержек получалось примерно (десятые доли откидываю) 112-113-114 и т.д.

принцип, заложенный в мою функцию, работает - кто б сомневался? :) но погрешность приходится компенсировать, и чем ниже тактовая, тем сложнее это делать, вплоть до невозможности, но ведь при низкой тактовой 1 микросекунду так же нереально получить даже при помощи NOP-а :)))

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 21:57:02
Мастер Ломастер
Avarges, urry, тут мы письками меряемся :) ну весело же! :) не хотите принять участие, вдруг у вас больше? ;)

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 22:24:25
urry
не уверен насчет письки Брезенхема, но алгоритм Брезенхема - посчитать точно время - сюда уверенно напрашивается и странно, что никто из вас это не сказал.

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 22:26:07
Мастер Ломастер
я человек темный :) алгоритмов таких не знаю :) поделитесь знаниями - буду и я умнее :)

Re: WinAvr в вопросах и ответах

Добавлено: Пт дек 30, 2011 22:41:49
urry
(наливаю себе из графина)
имхо, в микроконтроллерах Брезенхем имеет 3 применения
1 - рисование на экране окружностей (дуг) без вычисления синусов-косинусов
2 - равномерное распределение мощности сигнала на участке
3 - таймеры с 0 погрешностью (то, что доктор прописал для данного случая).
Если кто-то знает 4 применение, пусть дополнит.
ну а гугль знает усе.