Elite Games - Свобода среди звезд!
.
  » ESP8266 dockertoolbox | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Снег | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Железный канал: «ESP8266 dockertoolbox»
_RAZAAR_
 8 EGP


Рейтинг канала: 1(4)
Репутация: 13
Сообщения: 2640
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
Приветствую!

Комуто знакома тема, кто-то пробовал компилить прошивки c _float и _integer
с одинаковым набором модулей.?
Я пока не слишком глубокий чайник, прошивки с _float както глючно работают, частенько больше 4ех знаков после зяпятой не считают.
В основном этим гайдом пользовался
https://hub.docker.com/r/marcelstoer/nodemcu-build/
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингизхан.
    Добавлено: 21:41 03-03-2018   
VBKesha
 795 EGP


Рейтинг канала: 7(550)
Репутация: 132
Сообщения: 3245
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Покажи кусок кода который неправильно считает.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 20:36 17-03-2018   
_RAZAAR_
 8 EGP


Рейтинг канала: 1(4)
Репутация: 13
Сообщения: 2640
Откуда: РАЗААРЪ - 40Лы от Лаве
Зарегистрирован: 15.04.2008
VBKesha :
Покажи кусок кода который неправильно считает.


Привет Кеша!
Спасибо что откликнулся

кусок кода на котором обнаружил глючность вот

 Cкрытый текст   (кликните здесь для просмотра)

--------------------------------------------------------------------------------
-- DS18B20 one wire module for NODEMCU
-- by @voborsky, @devsaurus
-- encoder module is needed only for debug output; lines can be removed if no
-- debug output is needed and/or encoder module is missing
--
-- by default the module is for integer version, comment integer version and
-- uncomment float version part for float version
--------------------------------------------------------------------------------

return({
pin=2,
sens={},
temp={},

conversion = function(self)
local pin = self.pin
for i,s in ipairs(self.sens) do
if s.status == 0 then
--print("starting conversion:", encoder.toHex(s.addr), s.parasite == 1 and "parasite" or " ")
ow.reset(pin)
ow.select(pin, s.addr) -- select the sensor
ow.write(pin, 0x44, 1) -- and start conversion
s.status = 1
if s.parasite == 1 then break end -- parasite sensor blocks bus during conversion
end
end
tmr.create():alarm(750, tmr.ALARM_SINGLE, function() self:readout() end)
end,

readTemp = function(self, cb, lpin)
if lpin then self.pin = lpin end
local pin = self.pin
self.cb = cb
self.temp={}
ow.setup(pin)

self.sens={}
ow.reset_search(pin)
-- ow.target_search(pin,0x28)
-- search the first device
local addr = ow.search(pin)
-- and loop through all devices
while addr do
-- search next device
local crc=ow.crc8(string.sub(addr,1,7))
if (crc==addr:byte(8)) and ((addr:byte(1)==0x10) or (addr:byte(1)==0x28)) then
ow.reset(pin)
ow.select(pin, addr) -- select the found sensor
ow.write(pin, 0xB4, 1) -- Read Power Supply B4h
local parasite = (ow.read(pin)==0 and 1 or 0)
table.insert(self.sens,{addr=addr, parasite=parasite, status=0})
--print("contact: ", encoder.toHex(addr), parasite == 1 and "parasite" or " ")
end

addr = ow.search(pin)
tmr.wdclr()
end

-- place powered sensors first
table.sort(self.sens, function(a,b) return a.parasite<b.parasite end)

node.task.post(node.task.MEDIUM_PRIORITY, function() self:conversion() end)
end,

readout=function(self)
local pin = self.pin
local next = false
if not self.sens then return 0 end
for i,s in ipairs(self.sens) do
--print(encoder.toHex(s.addr), s.status)
if s.status == 1 then
ow.reset(pin)
ow.select(pin, s.addr) -- select the sensor
ow.write(pin, 0xBE, 0) -- READ_SCRATCHPAD
data = ow.read_bytes(pin, 9)

local t=(data:byte(1)+data:byte(2)*256)
if (t > 0x7fff) then t = t - 0x10000 end
if (s.addr:byte(1) == 0x28) then
t = t * 625 -- DS18B20, 4 fractional bits
else
t = t * 5000 -- DS18S20, 1 fractional bit
end

if 1/2 == 0 then
-- integer version
local sgn = t<0 and -1 or 1
local tA = sgn*t
local tH=tA/10000
local tL=(tA%10000)/1000 + ((tA%1000)/100 >= 5 and 1 or 0)

if tH and (tH~=85) then
self.temp[s.addr]=(sgn<0 and "-" or "")..tH.."."..tL
print(encoder.toHex(s.addr),(sgn<0 and "-" or "")..tH.."."..tL)
s.status = 2
end
-- end integer version
else
-- float version
if t and (math.floor(t/10000)~=85) then
self.temp[s.addr]=t/10000
--print(encoder.toHex(s.addr), t)
--print(t)
mT=t
s.status = 2
end
-- end float version
end
end
next = next or s.status == 0
end
if next then
node.task.post(node.task.MEDIUM_PRIORITY, function() self:conversion() end)
else
self.sens = nil
if self.cb then
node.task.post(node.task.MEDIUM_PRIORITY, function() self.cb(self.temp) end)
end
end

end
})



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

t=1/2
print (t)

иногда показывает 0.499999 иногда 0.500009
_________________
Citius, altius, fortius!
------------------------
"Я люблю путешествовать, посещать новые города, страны, знакомиться с новыми людьми." Чингизхан.
    Добавлено: 03:15 18-03-2018   
Diff
 693 EGP


Модератор
Рейтинг канала: 8(861)
Репутация: 46
Сообщения: 4157
Откуда: Сферическая Земля в вакууме.
Зарегистрирован: 04.07.2003
Вот тут твою проблему обсуждают и сходятся на том, что плавающую точку использовать не стоит.
_________________
Конец света в конце тоннеля
    Добавлено: 07:38 18-03-2018   
VBKesha
 795 EGP


Рейтинг канала: 7(550)
Репутация: 132
Сообщения: 3245
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Завтра/послезавтра доберусь до своей сборки для этой железки гляну как у меня.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 23:19 18-03-2018   
VBKesha
 795 EGP


Рейтинг канала: 7(550)
Репутация: 132
Сообщения: 3245
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Блин коллега с девкитом ушел на больничный две недели протестить не могу.
_________________
JumpGate. Quantar Optimus.
Jumpgate(TM) . . . welcome to your next life . . . There's nothing you can't do
    Добавлено: 17:58 31-03-2018   
Железный канал: «ESP8266 dockertoolbox»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Я мохнат! Нет не так. Я - магнат! (Lancer)

  » ESP8266 dockertoolbox | страница 1
Каналы: Новости | Голосований | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18