On-line: гостей 0. Всего: 0 [подробнее..]
Огромная просьба к участникам. Не задавайте свои вопросы в чужой теме, если они не имеют отношение к ней. Создайте свою тему.

АвторСообщение
администратор


Сообщение: 519
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 11.04.15 10:40. Заголовок: Исходник "Забава М1.1"


Исходник
Чтобы открыть исходник, необходимо установить Algorithm Builder.

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 28 , стр: 1 2 All [только новые]





Сообщение: 1
Зарегистрирован: 25.03.15
Репутация: 0
ссылка на сообщение  Отправлено: 05.05.15 16:24. Заголовок: Спасибо!!! :sm36: ..


Спасибо!!!
Осталось за малым, только программу Algorithm Builder изучить .

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 06.06.15 11:59. Заголовок: что-то сообщение про..


что-то сообщение пропало.
хотел спросить: я не дружу с алгоритмбилдером как по мне так он еще сложнее ассемблера, хотел переписать прогу под мега8
кстати, этот исходник к какой схеме относится ? а то я смотрю много тем появилось "забава", "забава М1.1" еще какие-то модификации...

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 523
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 07.06.15 09:57. Заголовок: zhelezyaka пишет: к..


zhelezyaka пишет:

 цитата:
кстати, этот исходник к какой схеме относится ? а то я смотрю много тем появилось "забава", "забава М1.1" еще какие-то модификации...


этот исходник для "забава" и "забава М1.1"

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 08.06.15 01:00. Заголовок: Стас, вы бы рассказа..


Стас, вы бы рассказали немного о себе, чем занимаетесь, интересы, хобби и вообще интересно узнать причину и историю создания металлоискателя и самого названия "забава" :) - ведь судя по отзывам получился вполне приличный прибор, а не игрушка!?

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

не понимаю, что означает например "^z_1" конструкция?


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 08.06.15 01:04. Заголовок: кстати, есть вариант..


кстати, есть вариант сделать металлодетектор из программатора AVRISP/USBASP - довольно дешевое устройство и вполне реально особенно для модификации с вынесенным генератором, но конечно придется немного программу поправить.
при этом всю периферию: наушники, генератор, катушку, питание подключается через штатный разъем программатора IDC-10
программировать МК можно как через этот же разъем, так и подключив в компу прямо через USB (для этого нужно залить bootloader)
+ еще можно организовать взаимодействие с компьютером: логирование, дополнительную обработку....

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 524
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 08.06.15 12:06. Заголовок: zhelezyaka пишет: С..


zhelezyaka пишет:

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


Живу в деревне, работы нет, возможности ездить на заработки нет, работаю в интернете на "дядю", в основном занимаюсь наполнением сайтов контентом и сео оптимизацией. Работа малооплачиваемая и требующая много времени, поэтому на хобби и творчество нет ни сил ни времени. Кроме металлоискателей интересуюсь альтернативными источниками энергии, альтернативной историей, подводной охотой и еще очень многими, многими вещами :)
Металлоискатель "Забава" это хороший прибор в своей нише, но при условии, что человек поймет как с ним правильно работать. Как ни печально, но я столкнулся с тем, что большинство моих клиентов предпочитают мучиться с металлоискателями на биениях чем научиться работать с "Забавой" или с другим более серьезным металлоискателем.
Когда появился спрос на металлолом, я начал делать и продавать металлоискатели на биениях, но так как добиться стабильной работы таких металлоискателей трудно, стал искать альтернативу и купил набор "мастер кит Traker FM". Оказалось, что он работает еще хуже, чем мет. на биениях, у обоих одна и та же проблема - уходит частота генератора. Решил написать свою программу для Traker FM, разобрался как работает микроконтроллер, изучил алгоритм билдер и написал свою программу, так и родилась "Забава". Ну а название как то само пришло, слово приятное и изделие все таки ближе к игрушке.

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 525
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 08.06.15 12:11. Заголовок: zhelezyaka пишет: п..


zhelezyaka пишет:

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

не понимаю, что означает например "^z_1" конструкция?



Отключенный код удалите, что бы не мешал. Вы правы - это одна из многих попыток сделать псевдостатику.
"^z_1" это значит очистка, обнуление переменной z_1

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 526
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 08.06.15 12:17. Заголовок: zhelezyaka пишет: к..


zhelezyaka пишет:

 цитата:
кстати, есть вариант сделать металлодетектор из программатора AVRISP/USBASP - довольно дешевое устройство и вполне реально особенно для модификации с вынесенным генератором, но конечно придется немного программу поправить.
при этом всю периферию: наушники, генератор, катушку, питание подключается через штатный разъем программатора IDC-10
программировать МК можно как через этот же разъем, так и подключив в компу прямо через USB (для этого нужно залить bootloader)
+ еще можно организовать взаимодействие с компьютером: логирование, дополнительную обработку....



Согласен на базе этого изделия можно изготавливать любые устройства.
Развивать "Забаву" дальше пока не планирую, так как появилась более перспективная идея (на мой взгляд).
Но как уже писал, заниматься этим нет времени.

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 7
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 08.06.15 14:23. Заголовок: Живу в деревне, рабо..



 цитата:
Живу в деревне, работы нет, возможности ездить на заработки нет



понятно... да я в общем то НЕ ожидал от вас услышать, что-то иное по типу: "я олигарх, бешусь с жиру, прикупил ХХга земли с историческими развалинами и от нечего делать сварганил эту игрушку, хожу и клады ищу :)"

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

насчет забавы и алгоритмбилдера - изучите Си (он совсем не сложный - а главное универсальный) и пишите на нем, т.к. алгоритмбилдер не портируемый и не масштабируемый

режим псевдостатики на мой взгляд требует не такого "лобового" алгоритма, не знаю на сколько гуляет частота и ее измерение, но здесь очевидно требуется либо усреднение из нескольких последовательных замеров + пороговая функция с гистерезисом либо увеличение интервала замера понятно что такие вещи уже несколько сложнее делать на том же алгоритмбилдере, конечно он имеет право на существование, но всякие значки и сокращения по типу "^z_1" это конечно здорово, но согласитесь эквивалент на Си "z_1=0" - куда нагляднее и понятнее даже школьнику!?

а вообще из каких соображений выбрана катушка и частота генератора? ведь очевидно чувствительность должна сильно зависеть от рабочей частоты и индуктивности катушки и соответственно

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 527
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 08.06.15 14:52. Заголовок: zhelezyaka пишет: п..


zhelezyaka пишет:

 цитата:
понятно... да я в общем то НЕ ожидал от вас услышать, что-то иное по типу: "я олигарх, бешусь с жиру, прикупил ХХга земли с историческими развалинами и от нечего делать сварганил эту игрушку, хожу и клады ищу :)"

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



Согласен, тем более, что у меня есть наглядный положительный пример использования моим другом солнечной энергии.

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 528
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 08.06.15 16:03. Заголовок: zhelezyaka пишет: н..


zhelezyaka пишет:

 цитата:
насчет забавы и алгоритмбилдера - изучите Си (он совсем не сложный - а главное универсальный) и пишите на нем, т.к. алгоритмбилдер не портируемый и не масштабируемый



Не могу согласиться. Вы же должны понимать, что прежде чем выбрать алгоритм билдер я изучал другие варианты, в том числе конечно же и си. Си это язык для "лентяев" он позволяет быстро лепить глючные, плохие программы, пожирающие ресурсы компьютера. Это благодаря ему мы вынужденны чуть ли не каждый год обновлять железо. А для микроконтроллеров он вообще не подходит благодаря своей прожорливости и непредсказуемости. В устройствах на микроконтролерах ограничены память и тактовая частота, поэтому приходится обращаться с этими ресурсами экономно и такую возможность дают только ассемблер и чистый код. Алгоритм билдер - это как раз и есть ассемблер, со всеми вытекающими возможностями, он значительно превосходит си.
При написании программы для "Забавы" мне пришлось бороться за каждый такт, на си это было бы не возможно, потому что команды ассемблера условно говоря управляют процессором напрямую. У си ваша команда будет преобразована компилятором по своему алгоритму, и в большинстве случаев этот алгоритм не будет оптимальным.
У си есть только одно преимущество - он позволяет быстро лепить программы большого объема, для микроконтроллеров это не существенно, так как объем программ сравнительно не велик.
К тому же, на самом деле алгоритм билдер очень прост для изучения, проще чем си и понятнее.

zhelezyaka пишет:

 цитата:
но всякие значки и сокращения по типу "^z_1" это конечно здорово, но согласитесь эквивалент на Си "z_1=0" - куда нагляднее и понятнее даже школьнику!?



Этим сокращением я пользуюсь, потому что так банально быстрее написать команду, и это не недостаток , а преимущество. Но ни кто не запрещает написать так: "0 → z_1" и это не менее наглядно чем "z_1=0" :)

zhelezyaka пишет:

 цитата:
режим псевдостатики на мой взгляд требует не такого "лобового" алгоритма



Да делал я этот режим, но результаты меня не устроили, программная обработка и фильтры могут правильно работать только в идеальных условиях, чуть грунт не тот или мусор - все, идет пропуск мишеней. Даже фирменные металлоискатели средней ценовой категории при применении программных фильтров на половину ценных мишеней не дают сигнал, сам проверял, а там и частоты побольше и память. Ни один металлоискатель со 100% гарантией не сможет отличить пробку от монеты в неидеальных условиях.

zhelezyaka пишет:

 цитата:
а вообще из каких соображений выбрана катушка и частота генератора? ведь очевидно чувствительность должна сильно зависеть от рабочей частоты и индуктивности катушки и соответственно



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

Все изложенное выше является моим личным мнением и не претендует на истину :)

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 8
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 08.06.15 20:01. Заголовок: си позволяет гораздо..


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

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

к сожалению доступность и распространенность компьютеров, а так же увеличение производительности/скорости/памяти привело к упрощению разработки, т.е. снижается общий уровень необходимой квалификации, при этом возрастает сложность программ и их зависимость от сторонних библиотек/ресурсов. перед разработчиками не стоит задачи (если конечно речь не об МК) впихнуть код с максимальной производительностью и минимального размера, да и это противоречит интересам производителей компьютеров. если хотите то скажем микрософт и интел так же связаны как вирусописатели с разработчиками антивирусов. если бы все остановились на windows 1.3 чем бы сейчас занимался дядя бил? и наоборот если бы не появился более мощного компьютера не было бы новой версии винды... основной недостаток это не ассемблер и/или Си это то что просто экономически не выгодно довести до ума продукт как то компьютер/машина/ПО, проще периодически что-то менять чтобы люди покупали новое порой просто "морально" устаревшее. производители зачастую даже специально создают слабые места в аппаратуре и закладывают неисправность, чтобы вещь отработала 1-2-3года а дальше - запчастей нет/не ремонтопригоден/дешевле купить новый - так этот принцип как оказалось был еще в совке на заводе ЗИЛ, который не выпускал запчасти и в случае поломки - меняли старую машину на новую. (за сто купил за то продаю :) )

вот раньше на дискету 1,44Мб "влезала" опупенная (по тем временам) игрушка с графикой и звуком и требовала памяти всего ничего, а сейчас? сплошные фрейворки - программа одна кнопка а занимать может больше чем 95ая винда и памяти жрет столько же :)
просто нужно учиться писать правильно правильные программы.
раз уж мы в инете, вы через что подключены к инету? 3G модем?
вот вы видели сайты, которые очень быстро загружаются и те которые грузятся очень долго?
последние вероятно используют кучу фрейворков, тяжелые js и css размером так под 1-2-3МБ + куча картинок (тоже не всегда в адекватном формате) и вы думаете разработчики/владельцы последнего так же долго ждут загрузки? скорее у них просто быстрее интернет... вот наглядный пример "глючного" языка, но на самом деле разработчик и/или владелец может даже не догадываться о такой проблеме, а все потому, что у всех разные скорости подключения... еще бывает утечка памяти когда какой-нибудь сайт постоянно что-то загружает и тем самым может поедать память... - не в языке проблема, язык это инструмент.

проще это когда открыл на любом компьютере в любом текстовом редакторе программу, внес изменения, и она дальше работает - это я про скриптовые языки - ruby/php/phyton/perl - кросплатформенные
сложнее, когда также на любом компьютере в любом текстовом редакторе программу, внес изменения, но нужно перекомпилировать и опять программа работает - это Си/бейсик(вижуал)/паскаль(дельфи)/.... популярный c# - кстати г0вно редкосное, как в общем-то и все от МС.
ассемблер стоит несколько в стороне но вряде случаев это так же относится к нему.
и совсем ни в какие ворота когда зависишь от хрен знает какой программы (алгоритмбилдера) кстати так же имеющей косяки и неизменявшейся аж с 2010 года - в чем еще можно открыть проект? поддерживает от другие контроллеры? например pic? или будет поддерживать новые МК от atmel? - что-то не похоже... а что делать когда вы захотите перенести свои алгоритмы посложнее чем бесконечный цикл опроса порта/подпрограммы задержки скажем на тот же пик?
вы говорили про клиентов не желающих учиться использовать забаву и предпочитающих другие МД - так вот я с вами полностью согласен,
инструмент и умение его использовать это две очень важные вещи, не бывает одного без другого, точнее бывает, но тогда инструмент ломается/пылится/не приносит желаемого результата - не обижайтесь, но это мне напоминает ваше отношение к си :)
вероятно сами со временем поймете что заблуждались

насчет "частоты меньше 10кГц", а какая частота сейчас? в воздухе/на крышке люка/монета....
странно "меньше 10кГц" - это не опечатка именно меньше? тогда это программный косяк, связанный вероятно с переполнением одного из регистров, и/или возможно слишком большая частота предделителя в таймере

чуть подробнее про селективность и частоту если планируется искать арматуру железо/сталь в бетоне какая считается оптимальная частота? чтобы была максимальная чувствительность?

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 529
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 09.06.15 10:47. Заголовок: zhelezyaka пишет: с..


zhelezyaka пишет:

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



Я то же про это, в моем случае, с моим мк нужно было управлять ресурсами в ручную. И дело не в алгоритм билдере, его бы не было - писал бы на классическом ассемблере, на си я эту программу написать не смог бы. Конечно, я не программист, и программа моя не профессиональна, я просто поставил себе задачу и выполнил ее.
На этом хочу данную тему закрыть, так как начинаем "переливать из пустого в порожнее".

zhelezyaka пишет:

 цитата:
насчет "частоты меньше 10кГц", а какая частота сейчас? в воздухе/на крышке люка/монета....
странно "меньше 10кГц" - это не опечатка именно меньше? тогда это программный косяк, связанный вероятно с переполнением одного из регистров, и/или возможно слишком большая частота предделителя в таймере

чуть подробнее про селективность и частоту если планируется искать арматуру железо/сталь в бетоне какая считается оптимальная частота? чтобы была максимальная чувствительность?



Есть условный стандарт по которому частота генераторов мет на биениях принимается равной 100 кгц, для частотомеров - 20 кгц, фирменные одночастотники - 7 кгц. В "забаве" применял частоты 20 и 70 кгц (примерно). Когда то проводил эксперименты, чем выше частота тем меньше чувствительность к черным металлам и грунту, уменьшается селективность, чувствительность к цветным металлам существенно не меняется. При понижении частоты - все наоборот. При 12 кгц значительно увеличивается селективность и чувствительность к черным металлам и грунту. В вашем случае очевидно надо использовать низкие частоты, так как в стенах грунта нет, а на бетон по моему металлоискатель не реагирует.
Если поднести монету к катушке на 15 см то частота уходит на доли герц, на осциллографе например увидеть не возможно, поэтому я и говорил что пришлось бороться за каждый такт процессорного времени, иначе такие изменения не поймать (при таком алгоритме измерения частоты).

zhelezyaka пишет:

 цитата:
тогда это программный косяк, связанный вероятно с переполнением одного из регистров, и/или возможно слишком большая частота предделителя в таймере



согласен, конечно это программный косяк, правда я делал программу под частоту 20 кгц, как на трекере фм, ведь с него все началось, и задача стояла написать программу для него. А разные эксперименты были потом.

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 9
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 09.06.15 11:56. Заголовок: понятно, надо будет ..


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

PS: тему обсуждения асм против си конечно можем закрыть, но можем и продолжить с обсуждением конкретных примеров.
критичные вещи на си можно делать в виде вставок ассемлера, в проекте можно подключать и использовать полностью ассемблерные файлы, можно делать вызовы ассембленых функций из си и наоборот, можно обращаться к переменным объявленным в ассемлере из си и наоборот...

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 10
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 09.06.15 18:31. Заголовок: вот кстати пример ра..


вот кстати пример работы "глючного" Сишного компилятора:

#define MIN_VAL 	90 
#define MAX_VAL (650-90+MIN_VAL)
#define TOP_VAL 58
#define STEP_VAL 20

/*
1-ый вариант: полный функциональный аналог алгоритма подпрограммы regyl_glybina в алгоритмбилдере,
но при этом вероятно работает быстрее и занимает меньше места чем в алгоритмбилдере.
вероятно из-за глючности Си :)
*/


unsigned char regyl_glybina(unsigned int vr_razr){//410-76 = 334байт
if(vr_razr <= 90) return 58;
if(vr_razr <= 110) return 56;
if(vr_razr <= 130) return 54;
if(vr_razr <= 150) return 52;
if(vr_razr <= 170) return 50;
if(vr_razr <= 190) return 48;
if(vr_razr <= 210) return 46;
if(vr_razr <= 230) return 44;
if(vr_razr <= 250) return 42;
if(vr_razr <= 270) return 40;
if(vr_razr <= 290) return 38;
if(vr_razr <= 310) return 36;
if(vr_razr <= 330) return 34;
if(vr_razr <= 350) return 32;
if(vr_razr <= 370) return 30;
if(vr_razr <= 390) return 28;
if(vr_razr <= 410) return 25;
if(vr_razr <= 430) return 24;
if(vr_razr <= 450) return 22;
if(vr_razr <= 470) return 20;
if(vr_razr <= 490) return 18;
if(vr_razr <= 510) return 16;
if(vr_razr <= 530) return 14;
if(vr_razr <= 550) return 12;
if(vr_razr <= 570) return 10;
if(vr_razr <= 590) return 8;
if(vr_razr <= 610) return 6;
if(vr_razr <= 630) return 4;
if(vr_razr <= 650) return 3;
return 2;
}

/*
2-ой вариант, учитывающий особенности значения входной переменной vr_razr и возвращаемого значения
занимает еще меньше места, работает в среднем еще бысрее предыдущего варианта.
результат тоже должен быть эквивалентен
*/

unsigned char glybina[] = {
58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32,
30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 3, 2};
unsigned char regyl_glybina(unsigned int vr_razr){//208 - 76 = 124байт
if(vr_razr > MIN_VAL){
vr_razr -= MIN_VAL;
}
vr_razr = vr_razr / STEP_VAL;
if(vr_razr >= sizeof(glybina)){
return glybina[sizeof(glybina) - 1];
}
return glybina[vr_razr];
}

/*
3-ий вариант по скорости так же соответствет предыдущему, но занимает еще меньше места
*/

unsigned char regyl_glybina(unsigned int vr_razr){//154-76 = 78байт
if(vr_razr > MAX_VAL){
vr_razr = MAX_VAL;
}
if(vr_razr > MIN_VAL){
vr_razr -= MIN_VAL;
}
vr_razr = vr_razr / STEP_VAL;
return (TOP_VAL - (vr_razr << 1));
}

/*
4-ый вариант: упрощаем задачу верем шаг кратный двойке вместо 20 теперь 16
заменяем тяжолую операцию деления на легкую операцию сдвига
занимает чуть ли не на порядок меньше места чем певрый вариант
работает быстрее всех :)
*/

unsigned char regyl_glybina(unsigned int vr_razr){//120-76 = 44байт
if(vr_razr > MAX_VAL){
vr_razr = MAX_VAL;
}
if(vr_razr > MIN_VAL){
vr_razr -= MIN_VAL;
}
vr_razr = vr_razr >> 4;
return (TOP_VAL - (vr_razr << 1));
}



void main(){//76байт - голый main
volatile unsigned int vr_razr = 100;

for(;;){
unsigned volatile char c;
c = regyl_glybina(vr_razr);
}
}


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 11
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 10.06.15 11:09. Заголовок: предлагаю предложен..


предлагаю предложения по улучшению металлодетектора

1) оптимизировать сороконожку (подпрограмму regyl_glybina) сейчас она занимает около 50% от всей программы алгоритмбилдер несмотря на ассемблер в данном случае сформировал оооочень не оптимальный код
2) прерывание обязано сохранять при входе все изменяемые регистры, а при выходе из него восстанавливать. у вас этого не происходит и это серьезный косяк и несмотря на, казалось бы, простую как 3 копейки программу точнее ее часть ожидание подсчета в фоне в подпрограмме izmerenie (цикл ожидания z_v=1) и здесь и в прерываниях используется один и тотже регистр R16 + неявно модифицируется SREG и с вероятностью 33% результат вычисления будет несколько иной, что может приводить к ложным результатам как к более раннему так и более позднему выходу и цикла ожидания.
3) еще можно сэкономить часть на памяти, использовав дополнительные регистры, их же 32 у вас используется только 6 например часто используемая операция LDI R16,0 (используется 54 раза), не у верен, но вполне возможно, что можно загрузить в другой регистр и всего один раз, хотя конечно в большенстве случаев это делает алгоритмбилдер в неявном виде - не знаю как это можно побороть в алгоритмбилдере. вот если бы программа была на чистом асме...
4) насчет прерываний, для их запрета достаточно глобально их запретить, вовсе не обязательно модифицировать еще и TIMSK да и вообще получается при текущей логике программы, что можно настроить TIMSK 1 раз еще до входа в основный циклы в "главной", а дальше только глобально разрешать и запрещать прерывания
5) вы все время разрешаете прерывание "1 -> I" в izmerenie, но нигде их не запрещаете ("0 -> I") опять же глобально разрешить прерывания можно один раз до главного цикла (если очень хочется всякий раз модифицировать TIMSK)

а в целом вы конечно молодец, раз смогли разобраться и изучить столько всего, сделать свой металлодетектор и даже модифицировать трекер фм!

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 530
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 10.06.15 14:35. Заголовок: zhelezyaka пишет: п..


zhelezyaka пишет:

 цитата:
предлагаю предложения по улучшению металлодетектора



Вы вольны делать с кодом и конструкцией металлоискателя все что угодно, я как автор не накладываю ни каких ограничений и ни на что не претендую. Сам я не могу в этом участвовать, так как нет времени, тем более прошло много времени, все забыл, считай с нуля придется начинать.

zhelezyaka пишет:

 цитата:
вот если бы программа была на чистом асме...



кстати насколько я помню билдер поддерживает команды и синтаксис асмы, то есть в нем можно писать как и в обычном ассемблере. Но что здорово помогло мне, так это встроенный отладчик, отладка на кристалле - невероятно удобная штука.


zhelezyaka пишет:

 цитата:
вы все время разрешаете прерывание "1 -> I" в izmerenie, но нигде их не запрещаете ("0 -> I") опять же глобально разрешить прерывания можно один раз до главного цикла (если очень хочется всякий раз модифицировать TIMSK)



Помню вроде, что это неспроста, то ли они автоматически запрещались, то ли еще что то, в общем какая то заминка с прерываниями у меня была.

zhelezyaka пишет:

 цитата:
оптимизировать сороконожку (подпрограмму regyl_glybina) сейчас она занимает около 50% от всей программы алгоритмбилдер несмотря на ассемблер в данном случае сформировал оооочень не оптимальный код



это не ассемблер виноват, а программист. Код подпрограммы дубовый, но работает, а мне от него больше ни чего и не надо было. Думаете, почему я сразу исходник не выложил? Да стыдно было, все надеялся, что оптимизирую, но так времени и не нашел. А потом и вовсе решил, что развивать принцип "частотомер" бесперспективно.



С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 12
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 10.06.15 15:53. Заголовок: да ладно, чего уж та..


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


 цитата:
The ICF1 Flag is automatically cleared when the interrupt is executed.



но в данном случае затыков быть не должно - если конечно в этом узле МК нет косяков (и такое бывает :) )

еще кстати, можно сэкономить память и увеличить быстродействие просто перенеся переменные из оперативки в регистры

жалко, что у вас нет времени, а то можно было сравнить качество работы новой прошивки в которой устранены грубые ошибки

чего я еще не понял так зачем "17 -> TCNT1" в прерывании, что она там делает?

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 531
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 10.06.15 17:08. Заголовок: zhelezyaka пишет: ч..


zhelezyaka пишет:

 цитата:
чего я еще не понял так зачем "17 -> TCNT1" в прерывании, что она там делает?


Ну так, выясняем время в тактах, за которое пройдет нужное количество импульсов с поискового генератора. Почему таймер в прерывание засунул? Да хрен его знает, не помню, наверное так удобнее было. :)

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 13
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 10.06.15 21:03. Заголовок: :sm54: ..



еще такой вопрос: переменный резистор с какой характеристикой линейной или логарифмической?
и в каком положении этого резистора, т.е. с каким уровнем чувствительности вы обычно с ним работаете?

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 532
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 11.06.15 10:15. Заголовок: zhelezyaka пишет: п..


zhelezyaka пишет:

 цитата:
переменный резистор с какой характеристикой


линейной

zhelezyaka пишет:

 цитата:
с каким уровнем чувствительности вы обычно с ним работаете?



Это зависит от качества изготовления металлоискателя, плохо сделанный металлоискатель при максимальной чувствительности будет подавать ложные сигналы даже если металлоискатель находится в покое, вдали от грунта и металлических предметов.
На легких грунтах и на песке я работаю на максимальной чувствительности, при этом ложные сигналы легко отличаются, мозг сопоставляет сигнал и движение датчика, рука дрогнула или бугорок, не знаю как объяснить. На тяжелых и мусорных грунтах чувствительность приходится уменьшать, но как правило больше чем на половину не уменьшаю, но и там можно работать на максимальном чувстве, правда очень медленно, но быстрее чем копать лопатой подряд. :)

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 14
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 23.06.15 00:48. Заголовок: Stas пишет: но быст..


Stas пишет:

 цитата:
но быстрее чем копать лопатой подряд. :)





ложные срабатывания вполне могли возникать из-за грубой ошибки - не сохранение регистров в прерывании.
попробуйте в самом начале обработчика прерывания Input_Capture_1 добавить :

 цитата:
push sreg
push r16


а в самом конце перед retI:

 цитата:
pop r16
pop sreg
retI


стабильность должна увеличиться.

появился такой вопрос: когда я увидел regyl_glybina то заметил, что в glybina заносится четное/кратное двойке значение, я подумал, что это как-то связано с работой прерывания, т.е. прерывание срабатывает по обоим фронтам и цель замерить не длительность логического уровня, а полностью длительность периода. когда же я сверился в даташитом - оказалось, что режим input capture может работать только в двух режимах по переднему фронту или по заднему, а режим аналогового компаратора в трех: по переднему фронту, по заднему и по смене. да и собственно, как выяснилось позже glybina ни коим образом не участвует в прерывании - по сути это порог разности замеров.
проанализировав само прерывание я увидел, что по сути измерение сводится к получению значения длительности периода с интервалом в imp_kol периодов.
исходя из анализа программы и технических характеристик:

итого получается обобщив все данные:
частота кварца 20МГц
частота генератора примерно 20кГц
imp_kol - результат автонастройки за 31250 тиков таймера
предделитель таймера 64 (для автонастройки) и без предделителя для работы
итого 10 измерений в секунду

т.е. получается довольно грубая дискретизация, огрубление связанное с захватом (измеряется ведь всего 1 период) и с учетом так же косяка с регистрами народ нахваливает работу металлодетектора по сравнению с другими, что же будет если убрать косяк с регистрами?!! должна получится конфетка!!!
а если еще попробовать суммировать результат замеров за все время imp_kol, а не отбрасывать их вероятно должна повыситься чувствительность


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 15
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 23.06.15 00:52. Заголовок: кстати на ебее можно..


кстати на ебее можно купить за символическую цену очень полезную штуку Saleae это простенький 8ми канальный логический анализатор
есть модели подороже даже с аналоговыми входами и генератором
наряду с осциллографом и программатором вещь из разряда "должна быть"! :)

Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 533
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 23.06.15 11:11. Заголовок: zhelezyaka пишет: л..


zhelezyaka пишет:

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



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

Что касается остального, то я не помню чего там и сколько, так в общих чертах.

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

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 16
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 24.06.15 10:58. Заголовок: что то в последнее в..


что то в последнее в время как не зайду на форум, все выводится сообщение "форум временно закрыт в связи с переносом данных" :(


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



это все понятно, но я же говорю, что у вас в программа грубейшая ошибка, обработчик прерывания ОБЯЗАН сохранять и восстанавливать все прямо или косвенно изменяемые регистры, в вашем случае SREG и R16. это как в столовой принес еду на подносе, сел за стол, поел, убрал за собой...
внести изменения, а именно добавить 4 ассембленые команды и перекомпилить минутное дело, прибор и опыт его использования у вас есть - интересно сравнить результат.
насколько я понимаю в вашем случае имеют место ложные срабатывания даже если прибор находится в воздухе и абсолютно неподвижен?

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 17
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 25.06.15 00:46. Заголовок: как вариант можно вм..


как вариант можно вместо катушки подключить стабильный генератор хотя бы самодельный с кварцем, правда еще делитель потребуется для понижения частоты до 20 кГц и если уж на нем будет ложное срабатывание, а оно просто обязано быть, то дело не в нестабильности и/или в проводах, хотя конечно они оказывают некоторое влияние...
как у вас обстоят дела со знанием ПЛИС/CPLD?


Спасибо: 0 
ПрофильЦитата Ответить
администратор


Сообщение: 534
Зарегистрирован: 24.06.10
Откуда: Волгоградская область
Репутация: 1
ссылка на сообщение  Отправлено: 25.06.15 10:53. Заголовок: Ложные срабатывания ..


Ложные срабатывания происходят из за того, что меняется частота генератора, если металлоискатель сделан нормально, то в покое ни каких сигналов нет. Я отлаживал программу в отладчике, прямо на кристалле, там видно все, в том числе и изменения в регистрах. И если я явно регистры не сохранял, значит это не нужно было.
zhelezyaka пишет:

 цитата:
внести изменения, а именно добавить 4 ассембленые команды и перекомпилить минутное дело, прибор и опыт его использования у вас есть - интересно сравнить результат.



прибора у меня нет, и комп другой, нужно выводить разъем com порта.

zhelezyaka пишет:

 цитата:
как у вас обстоят дела со знанием ПЛИС/CPLD?



никак, но если мне нужно будет, то изучу без проблем.

С уважением, Станислав. Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 18
Зарегистрирован: 20.08.13
Репутация: 0
ссылка на сообщение  Отправлено: 25.06.15 22:42. Заголовок: ок, я понял, удачи!..


ок, я понял, удачи!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 28 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 12
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет