Кто портит байты?

Radjah
Offline
Зарегистрирован: 06.08.2014

Прошу помощи местных владельцев хрустальных шаров, а то мой не работает.

Есть код, который собирает данные и отправляет их по радио. Прошит в Uno.

Есть код, который всё это принимает и отображает на LCD 20x4. Прошит в Nano.

В паре они работают как задумано.

Второй код переделал для отображения полученного на OLDE 128x64. Прошит в Mega, потому что даже в Uno оперативной памяти не хватает.

Так вот в первом поле структуры, которое outtemp, принимается какая-то хрень.

На передающей стороне:

Outtemp: 29.81 Intemp: 30.30
 Inpres: 747.63
 Hum: 28.60
Sended!

На принимающей стороне первое поле равно 8.02. При этом включенная в тоже время Nano принимает 29.81 и его же выводит.

Отключение Nano на работу Mega не влияет, даже если всё погасить и включить только Uno и Mega.

Может какую-то тонкость не знаю?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

По радио.. маяк?
тонкость скорее всего в размере пакетов и такой библиотечке как progmem.

Radjah
Offline
Зарегистрирован: 06.08.2014

Чем поможет хранение переменных во флеше?

float - 4 байта. 4*4=16. Всё равно меньше 32 байт получается.

Уде пробовал передатчики местами менять. Хрень вылезает сразу после получения пакета, т.е. точно не глюк дисплейных либ.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Угу это глюк между progmem и радио. Атмега2560 не использует progmem, ей свой памяти хватает. Мы вроде это решили просто используя int заместо float ибо лень было ковырять библиотеки.

Radjah
Offline
Зарегистрирован: 06.08.2014

Тогда остаётся одно из:

1) Забить на OLED-дисплей

2) Найти другую либу для дисплея, которая требует меньше памяти, чтобы в UNO влезало. Adafruit формирует массив в памяти борды и загружает его в дисплей.

3) Мутить костыль для передачи float как int, домножая на 100 на "сервере" и деля на 100 на "клиенте".

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Ну мы сделали третье и забили.

Radjah
Offline
Зарегистрирован: 06.08.2014

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