Перевод float в string

Обсуждаем контроллеры компании Atmel.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

Доброе время. Делаю вольт-омметр на attiny861a . Настроил ацп на внешнее напряжение 2.5в . Т.к. в 861 нет usart , решил выводить результаты на lcd дисплей.

Всё настроел , начинаю проверку и начал выводится бред.

При отсутствии напряжения 0 , при подаче -10240 .

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

Проект прилагаю.
Вложения
Project_1.rar
(50.62 КБ) 250 скачиваний
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Если Вам лень выложить код сюда , конечно правильно оформив, в нужные тэги, не весь, а только проблемное и под спойлер с пояснениями, то почему будет не лень другим читать Ваш проект? Я так думаю, что очень большая часть формчан не будет его смотреть. Это дело Ваше конечно, так, совет.

Вопрос. В каком диапазоне ожидаемый результат ? То есть, зачем Вам float? Код Ваш не смотрел.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

лучше использовать целые числа, а запятую держать "в уме" (и рисовать на дисплее принудительно) т.е. 162 это 1.62в например,
причём желательно (особенно если результат пойдёт на табло) чтобы такая кратность получалась уже при выходе с АЦП (резистивными делителями на входе) тогда не будет эффекта что счётчик проскакивает показания (например 1.62в затем 1.64в, а 1.63 не покажет ни при каких входных напряжениях)

Добавлено after 41 minute 5 seconds:
даже лучше начать с диапазона (сначала очертить границы, чтобы расстояние между ними было кратно 1000-1023 ("хвосты" можно не отображать), и вот на эту кратность и домножать результаты измерения.
ПС. код пока не смотрел :) (посмотрю в течение часа).

Добавлено after 43 minutes 38 seconds:
посмотрел. А что, резисторы у Вас "на горячую" меняются? - почему под них переменные выделены? не проще их задефайнить?

Добавлено after 1 minute 1 second:
ничего, такого, что бы могло потребовать плавающей точки не вижу...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3352781#p3352781"]
Спойлерлучше использовать целые числа, а запятую держать "в уме" (и рисовать на дисплее принудительно) т.е. 162 это 1.62в например,
причём желательно (особенно если результат пойдёт на табло) чтобы такая кратность получалась уже при выходе с АЦП (резистивными делителями на входе) тогда не будет эффекта что счётчик проскакивает показания (например 1.62в затем 1.64в, а 1.63 не покажет ни при каких входных напряжениях)

Добавлено after 41 minute 5 seconds:
даже лучше начать с диапазона (сначала очертить границы, чтобы расстояние между ними было кратно 1000-1023 ("хвосты" можно не отображать), и вот на эту кратность и домножать результаты измерения.
ПС. код пока не смотрел :) (посмотрю в течение часа).

Добавлено after 43 minutes 38 seconds:
посмотрел. А что, резисторы у Вас "на горячую" меняются? - почему под них переменные выделены? не проще их задефайнить?

Добавлено after 1 minute 1 second:
ничего, такого, что бы могло потребовать плавающей точки не вижу...[/uquote]
Не стоит перед сном , вспоминал схему подключения и не туда напряжение подавал. Сейчас работает
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

я не говорю, что работать не будет, я говорю, что флоат там - лишнее: и места больше занимает и обсчитывать тяжелее
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3352806#p3352806"]я не говорю, что работать не будет, я говорю, что флоат там - лишнее: и места больше занимает и обсчитывать тяжелее[/uquote]

Тогда такой вопрос , как с опорным напряжением 2.5в получить входное напряжение не используя тип float ? Все примеры что видел использовали его.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

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

Допустим Вам нужен результат от 0 до 500 с двумя знаками после запятой. Тогда вам хватит двухбайтного беззнакового целочисленного формата.
Например число 499,99 отлично будет лежать в памяти как 49999. При выводе на экран не забыть воткнуть в нужное место запятую
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Сообщение ozonn »

[uquote="Ravor",url="/forum/viewtopic.php?p=3352827#p3352827"]Тогда такой вопрос , как с опорным напряжением 2.5в получить входное напряжение не используя тип float ? Все примеры что видел использовали его.[/uquote]
переведите вольты в милливольты, получите 2500 mV. Вполне себе целое число. А про точку вам тут уже сказали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

код не смотрел. А что std::to_string(value); уже не работает? У меня выводит....
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Ярослав555",url="/forum/viewtopic.php?p=3352860#p3352860"]код не смотрел. А что std::to_string(value); уже не работает? У меня выводит....[/uquote]
В С++17 есть to_chars/from_chars которые не используют локаль, динамически не выделяют память, не бросают исключения. Правда в моем gcc 7.2 их еще нет, ждем gcc 8... А to_string не для эмбедда, там и так наверно килобайт 20 добавится при том, что у TC в тиньке всего 8КБ, причем это при выключенных эксепшенах, т.е. без возможности отлавливать потенциальные ошибки...
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="Reflector",url="/forum/viewtopic.php?p=3352964#p3352964"]В С++17 есть to_chars/from_chars которые не используют локаль, динамически не выделяют память, не бросают исключения. Правда в моем gcc 7.2 их еще нет, ждем gcc 8... А to_string не для эмбедда, там и так наверно килобайт 20 добавится при том, что у TC в тиньке всего 8КБ, причем это при выключенных эксепшенах, т.е. без возможности отлавливать потенциальные ошибки...[/uquote]
Ну у меня флеша в чипе 256к :))) А так - можно и ручками процедурку написать, делал в одном проекте.
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

мда , ну и нафиг эту тини , ацп сгорел непонятно как. То есть всё работало , вырубил , включил ещё раз всегда приходит значение 1023.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="Ravor",url="/forum/viewtopic.php?p=3354079#p3354079"]мда , ну и нафиг эту тини , ацп сгорел непонятно как. То есть всё работало , вырубил , включил ещё раз всегда приходит значение 1023.[/uquote]
думаете ацп в "не тини" не сгорел бы?
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

Ярослав555,
Вопрос в другом состоит : 1) Почему ? В действительности ничего выше напряжения питания не подавал . 2) Уже не вижу смысла делать , выбрал тини 861 только из-за размеров , но когда ацп сдох , покупать ещё 1 не охото т.к. цена в местном чип и дипе на неё выше чем на мегу328.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="Ravor",url="/forum/viewtopic.php?p=3354695#p3354695"]1) Почему ? В действительности ничего выше напряжения питания не подавал .[/uquote]
1. Статический заряд накопленный в теле от одежды.
2. От чего питаем схему?
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

[uquote="Ярослав555",url="/forum/viewtopic.php?p=3354766#p3354766"]1. Статический заряд накопленный в теле от одежды.
2. От чего питаем схему?[/uquote]

От usbasp , разве от статики не должна была выйти из строя вся тини ?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

[uquote="Ravor",url="/forum/viewtopic.php?p=3354844#p3354844"]От usbasp , разве от статики не должна была выйти из строя вся тини ?[/uquote]
А это как повезет.
А розетка имеет контакт заземления? 110В с корпуса системника на землю сняты? или болтаются на минусовом проводе, а Вы пальцем ткнули и сожгли вход АЦП?
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

[uquote="Ярослав555",url="/forum/viewtopic.php?p=3354850#p3354850"]А это как повезет.
А розетка имеет контакт заземления? 110В с корпуса системника на землю сняты? или болтаются на минусовом проводе, а Вы пальцем ткнули и сожгли вход АЦП?[/uquote]
Вот не знаю всё работало , решил передохнуть , отрубил её , минут через 30 включаю , а ацп мёртв.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Сообщение Ярослав555 »

Ничего - это только начало. Сколько еще спаленых микрух впереди :))) . Я недавно случайно разрядил кандер с +100В через заземленное жало паяльника. Умерла мега8 в устройстве, мега8 в аспе, алегровский датчик тока (стоит как мега примерно) и вишенкой на торте стал сожженый юсб хаб в мониторе, который по сути спас весь системник. Итого я попал где-то на 1000р. А у Вас тинька какая-то. Радиолюбительство затратная штука - у меня с каждой зп уходит под 2к русскими на радиодетали. А еще иногда покупается инструмент... так что привыкайте)))
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн апр 25, 2016 15:43:23
Откуда: Россия , Воронеж

Сообщение Ravor »

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

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

Вернуться в «AVR»