-
- Тут про деление пишут. ДЕЛЕНИЕ НЕ НУЖНО. Деление заменяется: A/B = A*C/(2^N). Последнее легко пишется на ассемблере. А вообще если автор не может на ассемблере написать умножение/деление без его аппаратного -- отобрать ассемблер и не давать больше. - fk0(20.12.2010 11:26)
- А ткни-ка пальцем, кто тут про деление хоть слово написал? - MBedder(20.12.2010 12:24)
- "Делитель сделай из двух резисторов" :)) - Quasy(20.12.2010 12:30)
- А ткни-ка пальцем, кто тут про деление хоть слово написал? - MBedder(20.12.2010 12:24)
- 1. Поставьте постоянные резисторы, а подстраивайте только процентов 5-10. 2. У вас ничего не написано про реф, он-то не уходит? 3. Пишите на С и забудете про настройку. - Kit(17.12.2010 03:21)
- 1.Ok 2. Ref internal, дрейф не проверял 3. Давно собираюсь перейти на С, но пока не знаю с чего начать - где взять доступный компилятор и какой лучше? И так чтобы к нему была дока на русском. - tvi(17.12.2010 13:21)
- Для AVR есть весьма достойный бесплатный компилятор WinAVR. Но раз ты упомянул доку на русском - лучше сразу меняй профессию - MBedder(17.12.2010 14:42)
- А как насчет cvavr - у меня есть 2 версии. Дока меня интересует не чисто по компилятору, а по реализованном на нем языке программирования Си. Это не профессия у меня, а хобби. - tvi(17.12.2010 20:07)
- Тем не менее, даже тем, кто занимается хобби, лучше пораньше узнать, что язык С - один, и это ANSI C99. Все иное - фтопку. А док на ANSI C99 на русском - полно. Дока на собственно сам компилятор вырождается в знание, как его запустить. - Vladimir Ljaschko(19.12.2010 05:43, ссылка)
- Согласен. Разве что робко замечу, может лучше начать с чтения Кернигана и Ричи. Человек только к Си подбирается, а мы ему сразу разницу в компиляторах подсовываем... :) - ut1wpr(22.12.2010 21:53)
- Спасибо, Владимир, за ценную информацию. И тогда уж вдогонку по теме - WinAVR и CVAvr как близки или далеки к ANSI C99? - tvi(19.12.2010 21:13)MBedder
- WinAVR - это честный GCC компилятор, со всеми своими фишками. Вот здесь есть сравнение компиляторов. - Vladimir Ljaschko(19.12.2010 22:36, ссылка)
- Тем не менее, даже тем, кто занимается хобби, лучше пораньше узнать, что язык С - один, и это ANSI C99. Все иное - фтопку. А док на ANSI C99 на русском - полно. Дока на собственно сам компилятор вырождается в знание, как его запустить. - Vladimir Ljaschko(19.12.2010 05:43, ссылка)
- А как насчет cvavr - у меня есть 2 версии. Дока меня интересует не чисто по компилятору, а по реализованном на нем языке программирования Си. Это не профессия у меня, а хобби. - tvi(17.12.2010 20:07)
- Внутренние рефы контроллеров часто бывают не ах, проверьте. Компилятор зависит от того, какой у вас контроллер, скорее всего подойдет IAR. К компилятору есть примеры, доки понадобиться не должны, пока не полезете в дебри. - Kit(17.12.2010 14:03)
- Внутренние рефы в AVR имеют низкую начальную точность, но вполне приличные дрейфы/стабильности - MBedder(17.12.2010 14:43)
- Я не зметил, где написано, что у него AVR? А, кстати, на атмеги я чего-то вообще не вижу температурной характеристики рефа, только начальная точность. Где-то в аппнотах? - Kit(17.12.2010 16:29)
- Кстати устройство изначально сделано на ПИКах, и конкретный узел, который я взялся модернизировать был собран на PIC12F675, но поскольку нет листинга программы вшитой в него, и я вообще в ПИКАх не разбираюсь, то я сделал этот узел на авр, добавив tvi(433 знак., 17.12.2010 20:24)
- AVR у него в заголовке конфы, а в одном из постов он даже соблаговолил уточнить, что это Tiny15. Температурные характеристики рефа вскользь пробегали где-то в аппнотах - я просто сужу по своим измерениям - MBedder(17.12.2010 16:55)
- вот - koyodza(17.12.2010 16:54, ссылка)
- Я не зметил, где написано, что у него AVR? А, кстати, на атмеги я чего-то вообще не вижу температурной характеристики рефа, только начальная точность. Где-то в аппнотах? - Kit(17.12.2010 16:29)
- Внутренние рефы в AVR имеют низкую начальную точность, но вполне приличные дрейфы/стабильности - MBedder(17.12.2010 14:43)
- Для AVR есть весьма достойный бесплатный компилятор WinAVR. Но раз ты упомянул доку на русском - лучше сразу меняй профессию - MBedder(17.12.2010 14:42)
- 1.Ok 2. Ref internal, дрейф не проверял 3. Давно собираюсь перейти на С, но пока не знаю с чего начать - где взять доступный компилятор и какой лучше? И так чтобы к нему была дока на русском. - tvi(17.12.2010 13:21)
- Делитель сделай из двух резисторов (желательно точных, если это серия и нужна повторяемость), расчитав его так, чтобы при Umax на входе на АЦП подавалось U, близкое к Uref. Про подстроечники забудь раз и навсегда - MBedder(16.12.2010 00:36)
- Как я уже говорил, такое решение уперлось в проблему арифметических расчетов - для обеспечения точности приходится оперировать с многобайтовыми числами, а у меня недостаточно знаний в этой области. Для расчетов я использую код из AVR200, а для tvi(332 знак., 16.12.2010 16:00)
- Не нужны тебе никакие многобайтные - 16 бит за глаза. Разумеется, все "вычисления" делать надо в двоичном виде, а потом преобразовывать в ASCII для LCD. Умножение сделай подпрограмкой и вызывай его точно так же, как аппаратное. Мы с mse тебе уже MBedder(14 знак., 16.12.2010 22:28)
- Посмотри сам внимательно пример расчета mse - на выходе имеем число 299706, которое превышает 2 байта, а подпрограмма (из AVR204), преобразующая двоичное число в двоично-десятичный формат может работать с числами не превышающими 16 бит, о чем я tvi(15 знак., 16.12.2010 22:59)
- Кто-то из нас чего то недопонимает, наверное я, извини. mse все правильно объяснил, только неудачные коэффициенты подобрал. Я нашел решение своего вопроса tvi(75 знак., 16.12.2010 23:15, ссылка)
- Я тебе все это сразу и показал, но ты даже почитать не удосужился, видимо --> - MBedder(17.12.2010 00:12, ссылка)
- Мне толковать не надо, я сам тебе что хошь растолкую. Никто тебя не заставляет делать 32-битные операции над отсчетами сраного АВРского АЦП с 10%-ми угольными резисторами в цепи. Читай по моим ссылкам - там все разжевано, а урок от mse используй MBedder(13 знак., 16.12.2010 23:04)
- Кто-то из нас чего то недопонимает, наверное я, извини. mse все правильно объяснил, только неудачные коэффициенты подобрал. Я нашел решение своего вопроса tvi(75 знак., 16.12.2010 23:15, ссылка)
- Посмотри сам внимательно пример расчета mse - на выходе имеем число 299706, которое превышает 2 байта, а подпрограмма (из AVR204), преобразующая двоичное число в двоично-десятичный формат может работать с числами не превышающими 16 бит, о чем я tvi(15 знак., 16.12.2010 22:59)
- Не нужны тебе никакие многобайтные - 16 бит за глаза. Разумеется, все "вычисления" делать надо в двоичном виде, а потом преобразовывать в ASCII для LCD. Умножение сделай подпрограмкой и вызывай его точно так же, как аппаратное. Мы с mse тебе уже MBedder(14 знак., 16.12.2010 22:28)
- Как я уже говорил, такое решение уперлось в проблему арифметических расчетов - для обеспечения точности приходится оперировать с многобайтовыми числами, а у меня недостаточно знаний в этой области. Для расчетов я использую код из AVR200, а для tvi(332 знак., 16.12.2010 16:00)
- Выставляешь чем нить максимальное значение - 30В.вычитываешь АЦПом. Получаешь, например, $02cd. Это 717. теперь делаем орифметичесгую операццыю - 3000*100/717=418. это число ложим в ЕЕРОМ и ждём измерения. ;О) получив измерение, например, $02cd, mse(447 знак., 16.12.2010 00:07)
- Спасибо - принцип я понял. Только вот у меня нет подпрограммы преобразования трехбайтных чисел ($492ba из вашего примера) в 2-10 вид. Использую из avr204 преобразование 16 --> 2-10. Буду признателен, если дадите нужный код. tvi(60 знак., 16.12.2010 09:02)
- только вначале нужно умножение многобайтовых чисел освоить. Это же 8-битник, а пишется на асме - koyodza(16.12.2010 00:10)
- Ну, на AVRASM 16*16=32 - это аж целая дюжина строчек. По ссылкам - вся тема с примерами и прибаутками --> - MBedder(16.12.2010 00:30, ссылка, ссылка)
- Вот что у меня получилось. Подобрал постоянные резисторы входного делителя таким образом чтобы при 30в на вход АЦП подавалось напряжение чуть меньше Vref. Подаю напряжение (у меня был под рукой источник 29.2в) и запускаю АЦП, в итоге tvi(1746 знак., 22.12.2010 21:34 - 23.12.2010 01:05)
- Не стал разбираться, как вы округляете. Надо так: к результату умножения на коэффициент, нужно прибавить mse(84 знак., 22.12.2010 23:46)
- Вот что у меня получилось. Подобрал постоянные резисторы входного делителя таким образом чтобы при 30в на вход АЦП подавалось напряжение чуть меньше Vref. Подаю напряжение (у меня был под рукой источник 29.2в) и запускаю АЦП, в итоге tvi(1746 знак., 22.12.2010 21:34 - 23.12.2010 01:05)
- Ну, на AVRASM 16*16=32 - это аж целая дюжина строчек. По ссылкам - вся тема с примерами и прибаутками --> - MBedder(16.12.2010 00:30, ссылка, ссылка)
- Тут про деление пишут. ДЕЛЕНИЕ НЕ НУЖНО. Деление заменяется: A/B = A*C/(2^N). Последнее легко пишется на ассемблере. А вообще если автор не может на ассемблере написать умножение/деление без его аппаратного -- отобрать ассемблер и не давать больше. - fk0(20.12.2010 11:26)