Форум РадиоКот https://radiokot.ru/forum/ |
|
Перевод float в string https://radiokot.ru/forum/viewtopic.php?f=57&t=154172 |
Страница 1 из 2 |
Автор: | Ravor [ Чт апр 12, 2018 21:18:11 ] | ||
Заголовок сообщения: | Перевод float в string | ||
Доброе время. Делаю вольт-омметр на attiny861a . Настроил ацп на внешнее напряжение 2.5в . Т.к. в 861 нет usart , решил выводить результаты на lcd дисплей. Всё настроел , начинаю проверку и начал выводится бред. При отсутствии напряжения 0 , при подаче -10240 . Как я понял это из-за неправильного перевода дроби в строку. Но при всех попытках это наилучший результат. Проект прилагаю.
|
Автор: | Z_h_e [ Чт апр 12, 2018 22:13:55 ] |
Заголовок сообщения: | Re: Перевод float в string |
Если Вам лень выложить код сюда , конечно правильно оформив, в нужные тэги, не весь, а только проблемное и под спойлер с пояснениями, то почему будет не лень другим читать Ваш проект? Я так думаю, что очень большая часть формчан не будет его смотреть. Это дело Ваше конечно, так, совет. Вопрос. В каком диапазоне ожидаемый результат ? То есть, зачем Вам float? Код Ваш не смотрел. |
Автор: | Ivanoff-iv [ Пт апр 13, 2018 05:23:20 ] |
Заголовок сообщения: | Re: Перевод float в string |
лучше использовать целые числа, а запятую держать "в уме" (и рисовать на дисплее принудительно) т.е. 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: ничего, такого, что бы могло потребовать плавающей точки не вижу... |
Автор: | Ravor [ Пт апр 13, 2018 06:06:38 ] |
Заголовок сообщения: | Re: Перевод float в string |
Спойлерлучше использовать целые числа, а запятую держать "в уме" (и рисовать на дисплее принудительно) т.е. 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: ничего, такого, что бы могло потребовать плавающей точки не вижу... Не стоит перед сном , вспоминал схему подключения и не туда напряжение подавал. Сейчас работает |
Автор: | Ivanoff-iv [ Пт апр 13, 2018 06:25:39 ] |
Заголовок сообщения: | Re: Перевод float в string |
я не говорю, что работать не будет, я говорю, что флоат там - лишнее: и места больше занимает и обсчитывать тяжелее |
Автор: | Ravor [ Пт апр 13, 2018 07:53:09 ] |
Заголовок сообщения: | Re: Перевод float в string |
я не говорю, что работать не будет, я говорю, что флоат там - лишнее: и места больше занимает и обсчитывать тяжелее Тогда такой вопрос , как с опорным напряжением 2.5в получить входное напряжение не используя тип float ? Все примеры что видел использовали его. |
Автор: | Z_h_e [ Пт апр 13, 2018 08:00:18 ] |
Заголовок сообщения: | Re: Перевод float в string |
Если Вы разберете что из себя представляет число с плавающей запятой, то Вы увидите, что основное назначение такого формата - это охватить огромный диапазон. От бесконечно малого числа, до бесконечно большого. "Бесконечно" конечно же не буквально. Допустим Вам нужен результат от 0 до 500 с двумя знаками после запятой. Тогда вам хватит двухбайтного беззнакового целочисленного формата. Например число 499,99 отлично будет лежать в памяти как 49999. При выводе на экран не забыть воткнуть в нужное место запятую |
Автор: | ozonn [ Пт апр 13, 2018 08:16:57 ] |
Заголовок сообщения: | Re: Перевод float в string |
Тогда такой вопрос , как с опорным напряжением 2.5в получить входное напряжение не используя тип float ? Все примеры что видел использовали его. переведите вольты в милливольты, получите 2500 mV. Вполне себе целое число. А про точку вам тут уже сказали |
Автор: | Ярослав555 [ Пт апр 13, 2018 09:07:40 ] |
Заголовок сообщения: | Re: Перевод float в string |
код не смотрел. А что std::to_string(value); уже не работает? У меня выводит.... |
Автор: | Reflector [ Пт апр 13, 2018 10:18:49 ] |
Заголовок сообщения: | Re: Перевод float в string |
код не смотрел. А что std::to_string(value); уже не работает? У меня выводит.... В С++17 есть to_chars/from_chars которые не используют локаль, динамически не выделяют память, не бросают исключения. Правда в моем gcc 7.2 их еще нет, ждем gcc 8... А to_string не для эмбедда, там и так наверно килобайт 20 добавится при том, что у TC в тиньке всего 8КБ, причем это при выключенных эксепшенах, т.е. без возможности отлавливать потенциальные ошибки... |
Автор: | Ярослав555 [ Пт апр 13, 2018 11:29:51 ] |
Заголовок сообщения: | Re: Перевод float в string |
В С++17 есть to_chars/from_chars которые не используют локаль, динамически не выделяют память, не бросают исключения. Правда в моем gcc 7.2 их еще нет, ждем gcc 8... А to_string не для эмбедда, там и так наверно килобайт 20 добавится при том, что у TC в тиньке всего 8КБ, причем это при выключенных эксепшенах, т.е. без возможности отлавливать потенциальные ошибки... Ну у меня флеша в чипе 256к ![]() |
Автор: | Ravor [ Сб апр 14, 2018 16:54:47 ] |
Заголовок сообщения: | Re: Перевод float в string |
мда , ну и нафиг эту тини , ацп сгорел непонятно как. То есть всё работало , вырубил , включил ещё раз всегда приходит значение 1023. |
Автор: | Ярослав555 [ Сб апр 14, 2018 19:09:08 ] |
Заголовок сообщения: | Re: Перевод float в string |
мда , ну и нафиг эту тини , ацп сгорел непонятно как. То есть всё работало , вырубил , включил ещё раз всегда приходит значение 1023. думаете ацп в "не тини" не сгорел бы? |
Автор: | Ravor [ Вс апр 15, 2018 12:58:01 ] |
Заголовок сообщения: | Re: Перевод float в string |
Ярослав555, Вопрос в другом состоит : 1) Почему ? В действительности ничего выше напряжения питания не подавал . 2) Уже не вижу смысла делать , выбрал тини 861 только из-за размеров , но когда ацп сдох , покупать ещё 1 не охото т.к. цена в местном чип и дипе на неё выше чем на мегу328. |
Автор: | Ярослав555 [ Вс апр 15, 2018 14:15:29 ] |
Заголовок сообщения: | Re: Перевод float в string |
1) Почему ? В действительности ничего выше напряжения питания не подавал . 1. Статический заряд накопленный в теле от одежды. 2. От чего питаем схему? |
Автор: | Ravor [ Вс апр 15, 2018 15:50:34 ] |
Заголовок сообщения: | Re: Перевод float в string |
1. Статический заряд накопленный в теле от одежды. 2. От чего питаем схему? От usbasp , разве от статики не должна была выйти из строя вся тини ? |
Автор: | Ярослав555 [ Вс апр 15, 2018 16:03:12 ] |
Заголовок сообщения: | Re: Перевод float в string |
От usbasp , разве от статики не должна была выйти из строя вся тини ? А это как повезет. А розетка имеет контакт заземления? 110В с корпуса системника на землю сняты? или болтаются на минусовом проводе, а Вы пальцем ткнули и сожгли вход АЦП? |
Автор: | Ravor [ Вс апр 15, 2018 16:10:29 ] |
Заголовок сообщения: | Re: Перевод float в string |
А это как повезет. А розетка имеет контакт заземления? 110В с корпуса системника на землю сняты? или болтаются на минусовом проводе, а Вы пальцем ткнули и сожгли вход АЦП? Вот не знаю всё работало , решил передохнуть , отрубил её , минут через 30 включаю , а ацп мёртв. |
Автор: | Ярослав555 [ Вс апр 15, 2018 16:29:42 ] |
Заголовок сообщения: | Re: Перевод float в string |
Ничего - это только начало. Сколько еще спаленых микрух впереди ![]() |
Автор: | Ravor [ Вс апр 15, 2018 18:00:27 ] |
Заголовок сообщения: | Re: Перевод float в string |
Так я и не переживаю , я на прототип приставки системного монитора 2.5к потратил , долбанный чип и дип и их бракованные меги ( лочились во время прошивки) . Сейчас доктор есть , все вернул к жизни. Просто 1 дело , когда железно сам виноват что прибор сдох , а другое когда оно само сдохло. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |