Перейти к содержанию
    

Быстрое деление в AVR - Как?

9 минут назад, MPetrovich сказал:

Я повторюсь: точность индикации мне столь важна.

Т.е. -  даёте вы кому-то ТЗ: "Измерить частоту, лежащую в диапазоне 100...200Гц". И говорите "а точность мне не важна".

Ок. Вам приносят разработанный девайс, который и при входящей частоте 100Гц и при 200Гц, всегда выдаёт одно и то же значение = 150Гц. Разработчик прав? Конечно. Ведь требуемая точность в ТЗ не указана, а значит может быть выбрана разработчиком на его усмотрение - как ему удобнее. Вот он и выбрал точность +-50Гц.  И был прав. А вы должны оплатить его работу.  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, jcxz said:

Т.е. -  даёте вы кому-то ТЗ: "Измерить частоту, лежащую в диапазоне 100...200Гц". И говорите "а точность мне не важна".

Нет, я ранее написал: меня устраивает точность плюс/минус 0,5 об/сек.

А пример Ваш прикольный, конечно)))

1 hour ago, MPetrovich said:

В целом, точность до 1об/сек, т.е. плюс/минус пол оборота

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 минуту назад, MPetrovich сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, MPetrovich сказал:

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

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

Для управления (сравнения с уставкой) - использовать период; для индикации - rpm (так человеку удобнее). Одно не противоречит другому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно использовать то, что число x меняется не слишком быстро и находить обратное q=1/x каким-нибудь итерационным численным методом (метод Ньютона?) взяв за начальное приближение предыдущее значение q. Если значение x поменяется быстро, то находить начальное приближение подсчётом ведущих нулей, или искусственно ограничить его быстрое изменение.

Изменено пользователем amaora

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/23/2024 at 5:19 PM, MPetrovich said:

... ну и динамическая индикация и вывод кое-чего через UART в терминал...

 

Зачем динамической индикацией грузить МК, для меня это из прошлого века.

Давно уже есть микросхемы типа MAX7219 и другие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, AI7 сказал:

Зачем динамической индикацией грузить МК, для меня это из прошлого века.

Давно уже есть микросхемы типа MAX7219 и другие.

Тратить  примерно  дополнительно доллар на внешнюю микросхему только лишь потому что не умеешь делать это средствами МК - то еще решение никак не относящееся к веку. Это скорее относится к лени. За тот-же доллар можно поставить вдвое более производительный МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/19/2024 at 3:24 PM, artemkad said:

Тратить  примерно  дополнительно доллар на внешнюю микросхему только лишь потому что не умеешь делать это средствами МК - то еще решение никак не относящееся к веку. Это скорее относится к лени. За тот-же доллар можно поставить вдвое более производительный МК.

Применение микросхемы для индикации имеет много преимуществ, в частности, упрощение и ускорение разработки. А затрата в 1 доллар в подавляющем числе случаев никакого значения не имеет.

Профессиональный разработчик ценит своё время и не экономит 1 доллар.

В прошлом веке не было таких микросхем, приходилось делать динамическую индикацию «вручную» на МК. А сейчас зачем?

 

MPetrovich, у вас используется вывод через UART.

Для надёжной работы UART необходимо точное соблюдение частоты. С этой целью обычно применяют соответствующие кварцы, например, 7,3728 МГц, который даёт нулевое отклонение от требуемой частоты. А у вас кварц 8 МГц, неясно, почему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 минуты назад, AI7 сказал:

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

Бред. Утверждать так, не зная что именно индицируется и как. И ещё и советовать какую-то микросхему наугад.

И с чего вы взяли, что с вашей микросхемой проще, а не сложнее наоборот?

Тратить какой-то последовательный интерфейс на неё. Или тем более - лепить SPI ногодрыгом (мешая realtime процессам программы) - это признак профессионализма разработчика???  :wacko2:

Сделать динамическую индикацию в программе, по ресурсам обычно дешевле, чем лепить ногодрыжный SPI.

34 минуты назад, AI7 сказал:

Профессиональный разработчик ценит своё время и не экономит 1 доллар.

Если на каждую мелочь (типа динамической индикации) будете лепить в схему доп.чип, то никогда им не станете.  :unknw:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, AI7 сказал:

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

Да, имеет, но ни в коем случае не названные.

Естественно, никакого упрощения разработки не будет - особой разницы между общением с микросхемой и прямым периодическим выводом на LED-экран нет.

4 часа назад, AI7 сказал:

Профессиональный разработчик ценит своё время и не экономит 1 доллар.

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

Дополнительная  микросхема это дополнительная цена, дополнительное место(возможно сложность и цена монтажа), дополнительная разводка(время, возможно сложность платы), дополнительное потребление(возможно сложность с питанием потому как MAX7219 ниже 4В не гарантирует работу), дополнительный дефицит. Это все минусы которые профессионал ОБЯЗАН учесть.

4 часа назад, AI7 сказал:

В прошлом веке не было таких микросхем,

А вот не факт, что не было.

4 часа назад, AI7 сказал:

Для надёжной работы UART необходимо точное соблюдение частоты. С этой целью обычно применяют соответствующие кварцы, например, 7,3728 МГц, который даёт нулевое отклонение от требуемой частоты. А у вас кварц 8 МГц, неясно, почему.

Не пишите чушь! Для надежной работы UART необходимо гарантировать взаимную  точность между приемником и передатчиком не хуже половины бита в посылке из, примерно, 10 бит (старт+стоп+8 бит данных, или из 11 если есть паритет или 2 стопа) или иначе говоря 1/20 от посылки или иначе говоря - достаточно 5% точности генератора если второй генератор точный. Иначе говоря для надежной работы UART более чем достаточно современного калиброванного RC-генератора или любого кварца с делителем попадающим в 5% интервал ошибки. Наличие ошибки тактирования указанной в даташите это всего лишь ошибка тактирования, а не ошибка передачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/20/2024 at 9:52 PM, jcxz said:

Тратить какой-то последовательный интерфейс на неё. Или тем более - лепить SPI ногодрыгом (мешая realtime процессам программы) - это признак профессионализма разработчика???  :wacko2:

Сделать динамическую индикацию в программе, по ресурсам обычно дешевле, чем лепить ногодрыжный SPI.

Если на каждую мелочь (типа динамической индикации) будете лепить в схему доп.чип, то никогда им не станете.  :unknw:

Насчёт интерфейса SPI – несерьёзно. SPI как раз предназначен для работы с такими микросхемами.

В серьёзных проектах на один SPI вешают много устройств. И делается это банально и дёшево. Если для разработчика это проблема – надо повышать квалификацию.

On 8/21/2024 at 12:52 AM, artemkad said:

Да, имеет, но ни в коем случае не названные.

Естественно, никакого упрощения разработки не будет - особой разницы между общением с микросхемой и прямым периодическим выводом на LED-экран нет.

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

Дополнительная  микросхема это дополнительная цена, дополнительное место(возможно сложность и цена монтажа), дополнительная разводка(время, возможно сложность платы), дополнительное потребление(возможно сложность с питанием потому как MAX7219 ниже 4В не гарантирует работу), дополнительный дефицит. Это все минусы которые профессионал ОБЯЗАН учесть.

Вы привели очень малосущественные минусы и скрыли значительные плюсы.

Насчёт цены. При единичной разработке такая цена – ничто.

Поскольку индикация на MAX7219 очень удобна, китайцы выпускают готовый модуль с этой микросхемой и индикаторами на 8 разрядов, посмотрел, на Алиэкспрессе стоит 75 рублей.

Ещё вопрос, какой вариант получится дешевле.

Не вижу особой разницы в разводке, динамическую индикацию тоже надо разводить.

Цепи некритичные, можно запустить автотрассировщик.

Дополнительное потребление – тоже ни о чём. Сравните, сколько потребляют светодиодные индикаторы, сколько микросхема.

Если нужно небольшое потребление, ставят совсем другие индикаторы.

 При динамической индикации МК не может надолго отвлечься от индикации, это существенный минус.

А при MAX7219 МК выкинул несколько байт – и свободен. Выброс байтов – тоже очень быстро. Это большой плюс. Правда, может потребоваться возобновление информации на индикаторе, скажем, через 1 секунду, но 1 секунда – это очень много для МК.

MAX7219 использует мало выводов МК. В сложных проектах вообще может потребоваться только один дополнительный вывод. Это тоже существенный плюс.

On 8/21/2024 at 12:52 AM, artemkad said:

Не пишите чушь! Для надежной работы UART необходимо гарантировать взаимную  точность между приемником и передатчиком не хуже половины бита в посылке из, примерно, 10 бит (старт+стоп+8 бит данных, или из 11 если есть паритет или 2 стопа) или иначе говоря 1/20 от посылки или иначе говоря - достаточно 5% точности генератора если второй генератор точный. Иначе говоря для надежной работы UART более чем достаточно современного калиброванного RC-генератора или любого кварца с делителем попадающим в 5% интервал ошибки. Наличие ошибки тактирования указанной в даташите это всего лишь ошибка тактирования, а не ошибка передачи.

У вас неполный расчёт. USART обычно работает на кабель, который вносит искажения: завалы фронтов, звон. Это надо учитывать, а вы этого не сделали.

Насколько представляю, для работы основной схемы у ТС неважно, какой кварц ставить, 8 или 7,37 Мгц. А для USART предпочтительнее последний. По габаритам и цене кварцы схожи. В такой ситуации я бы поставил кварц на 7,37 Мгц. В чём тут чушь?

Кстати, по-вашему, для чего производители выпускают специальные кварцы для USART (причём, не только 7,37 МГц). Наверно, они не читали ваш пост, что это чушь.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, AI7 сказал:

SPI как раз предназначен для работы с такими микросхемами.

Не, SPI это интерфейс из 70-х годов прошлого века когда последовательные данные передавались парой сдвиговых регистров с защелкой. То что эта микросхема его использует - так видать было проще ее разработчикам или исторически сложилось т.к. стартовый заказчик вел разработку с тех годов и ему понадобилось нечто похожее. Во многом интерфейс неудобный т.к. сжирает много ног - i2c для подобной задачи предпочтительней.

1 час назад, AI7 сказал:

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

Не делается это дешево. Это делается или дорого или сложно. Дорого это когда на каждое устройство приходится заводить CS, сложно это когда приходится передавать сквозь общее кольцо.

1 час назад, AI7 сказал:

Насчёт цены. При единичной разработке такая цена – ничто.

Единичная разработка это больше похоже на чистое радиогубительство. Есть исключения, но они скорее подтверждают правило. При этих исключениях стараются использовать исключительно имеющиеся наработки и библиотеки. И если до того никогда не использовал MAX7219, то осваивать ее ради одной разработки и ждать пока модуль придет из Китая тем более глупо - это тупая ничем не окупаемая потеря времени.  А вот для радиогубителей конечно проще взять готовый arduinoвский модуль с готовой под duinu библиотекой.

1 час назад, AI7 сказал:

Не вижу особой разницы в разводке, динамическую индикацию тоже надо разводить.

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

1 час назад, AI7 сказал:

При динамической индикации МК не может надолго отвлечься от индикации, это существенный минус.

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

1 час назад, AI7 сказал:

А при MAX7219 МК выкинул несколько байт – и свободен.

Ну а при динамической индикации - записал в экранный буфер и свободен. То что задача крутится в тени - как-то особо не напрягает.

1 час назад, AI7 сказал:

У вас неполный расчёт. USART обычно работает на кабель, который вносит искажения: завалы фронтов, звон. Это надо учитывать, а вы этого не сделали.

Если заваливает фронты, то одинаково заваливает в том числе стартовый фронт от которого ведется отсчет, а отсюда абсолютно ничего не  меняется. А если появляется звон, то возникающие ошибки никак не зависят от точности взаимных скоростей, а потому расчет от них не зависит.

1 час назад, AI7 сказал:

Насколько представляю, для работы основной схемы у ТС неважно, какой кварц ставить, 8 или 7,37 Мгц. А для USART предпочтительнее последний.

Ему вообще кварц не нужен - достаточно встроенного калибруемого RC-генератора.

1 час назад, AI7 сказал:

Кстати, по-вашему, для чего производители выпускают специальные кварцы для USART (причём, не только 7,37 МГц). Наверно, они не читали ваш пост, что это чушь.

Выпускают те, на которые есть спрос и, к примеру, в ПК из-за неизвестного множества подключаемых к нему устройств, предпочтение стоит отдать как можно более точной скорости. Ну и есть множество юзеров среди разработчиков с вашим заблуждением которые не понимают как работает UART и о каких ошибка в документации речь.

1 час назад, AI7 сказал:

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

Да вроде в доке на любой МК это есть - и предельные значения и типовые как меняется в диапазоне температур.

Более того, никто мешает делать автокалибровку. Это может быть или калибровка по принимаемой посылке (символы AT в протоколе обмена изначально для этого предназначались) так и по любому внешнему стабильному сигналу. Более того, в современных МК аппаратная автокалиброка RC-генератора по часовому кварцу уже перестала быть экзотикой. Посмотрите USB-UART мосты - там давно никаких кварцев нет, что не мешает им стабильно работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, AI7 сказал:

Насчёт интерфейса SPI – несерьёзно. SPI как раз предназначен для работы с такими микросхемами.

А также он предназначен для работы с различными АЦП, ЦАП, FLASH, FRAM, SD-картами, разного рода датчиками и пр.

2 часа назад, AI7 сказал:

В серьёзных проектах на один SPI вешают много устройств. И делается это банально и дёшево. Если для разработчика это проблема – надо повышать квалификацию.

Например: идёт вывод непрерывного потока сэмплов в SPI-ЦАП, или чтение такого же потока из SPI-АЦП. Расскажите нам - как "повесить много устройств на этот SPI" при учёте того, что сэмплы идут с приличной частотой и нельзя нарушать их временную диаграмму.

Эта вам домашнее задание - для повышения квалификации.  :biggrin:

А ещё бывает, что SPI-ведомый может не иметь CS. Или SPI в МК работает в режиме "ведомый".

Как прикажете "вешать много устройств" в этих случаях? Расскажете нам после повышения квалификации.  :biggrin:

2 часа назад, AI7 сказал:

Поскольку индикация на MAX7219 очень удобна, китайцы выпускают готовый модуль с этой микросхемой и индикаторами на 8 разрядов, посмотрел, на Алиэкспрессе стоит 75 рублей.

Ещё вопрос, какой вариант получится дешевле.

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

2 часа назад, AI7 сказал:

Дополнительное потребление – тоже ни о чём. Сравните, сколько потребляют светодиодные индикаторы, сколько микросхема.

Сравнил: Есть у меня девайс со светодиодными индикаторами. Которые включаются только когда нужно - на короткое время. Весь девайс сделан на одном МК, питается от двух пальчиковых батареек и работает уже несколько лет от них. Так как бОльшую часть времени - спит, изредка только включая индикатор. И работает так долго на одних батарейках, потому как во сне потребляет 1...2 мкА. А ваша микросхема даже в shutdown - жрёт как не в себя:

Shutdown Supply Current = 150мкА

150 мкА одна только она! :shok:  (исходя из данных даташита) Да она за неск. месяцев простого лежания на столе батарейки бы высадила!

Это уж не говоря о том, что ещё и питание требует аж 4V! В то время как мой девайс работает и при 2V с батареек.

2 часа назад, AI7 сказал:

Если нужно небольшое потребление, ставят совсем другие индикаторы.

Да ладно! А ничего, что я поставил в свой девайс именно светодиодные и он работает несколько лет уже? Думаете - следовало впендюрить ваш MAX7219, который бы уже давно высадил мне не один комплект батареек???

2 часа назад, AI7 сказал:

 При динамической индикации МК не может надолго отвлечься от индикации, это существенный минус.

Что значит не может "отвлечься надолго"? Записать одно или два слова в 1-2 порта GPIO - это что большая проблема?

2 часа назад, AI7 сказал:

Насколько представляю, для работы основной схемы у ТС неважно, какой кварц ставить, 8 или 7,37 Мгц. А для USART предпочтительнее последний. По габаритам и цене кварцы схожи. В такой ситуации я бы поставил кварц на 7,37 Мгц. В чём тут чушь?

Чушь в том, что вы совершенно не разбираетесь в современных микроконтроллерах. Потому и порете такую чушь. Уже лет как ~20 современные МК не требуют кварцев на "7,37 МГц". Так как почти все приличные МК умеют работать с дробными делителями для UART. Это во-первых, во-вторых - с какого перепугу вы опять решили, что у человека (которому вы что-то советуете про UART) UART работает на скорости кратной 7,37 МГц? А может у него UART работает например на 100000 кбод? не думали?

Опять советуете наугад. И опять - пальцем в небо.

2 часа назад, AI7 сказал:

Кстати, по-вашему, для чего производители выпускают специальные кварцы для USART (причём, не только 7,37 МГц).

Наверное для таких, как вы. Которые не умеют готовить современные МК.  :sarcastic:

2 часа назад, AI7 сказал:

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

Вы бы сами хоть какие-то даташиты на современные МК почитали. А потом посмотрели бы на современные платы на этих МК - какие там стоят кварцы и на сколько. И почесали бы репу на тему: "Каким это образом на них UART-ы то работают, при том, что там стоят кварцы то на 8 МГц, то на 12 МГц, то на 16 МГц???" :umnik2:  И почему-то вот не припомню ни одной платы с кварцем 7,37 МГц. 

 

PS: Складывается ощущение, что человек прочитал лет 30 назад какую-то книжку про микроконтроллеры того времени и..... так и застрял в том времени.  :sarcastic:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...