Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Необходимо сохранение данных на внешний носитель


Необходимо сохранение данных на внешний носитель

Сообщений 1 страница 13 из 13

1

Приветствую всех форумчан!
Проектирую девайс, который будет стоять удаленно, питаться от солнечных батарей и аккумуляторов, основная задача которого проводить измерения влажности воздуха, температуры окр. среды, влажности, и, возможно освещение (определять пасмурно или нет).
Работать будет постоянно, а данные с него будут считываться раз в 1-2 недели.
Необходимо где-то хранить данные, и потом скидывать их на комп.
Вот думаю, что и как приспособить для этого.
Взять microSD (или другие карточки с FAT), так нужно что-то вроде AVR DOS использовать, чтоб записывать.
Потом рассматривал возможность использовать микросхемы I2C EEPROM, типа 24Cxx, но, если честно не разобрался как с ними работать в БАСКОМ'е.
Да и как потом их считывать на компе... :dontknow:

0

2

С какой периодичностью будут записываться данные?

Оптимально - или съемная флешь или внутренняя / внешняя еепром, а данные считывать посредством какого-нибудь интерфейса, например, USB

0

3

Для таких целей оптимально EEPROM M24M01 от Microchip. Объем такой микросхемы 128 кБайт. Можно каскадировать до 4-х штук. Т.е. получим банк ОЗУ 512 кБайт.
Расчитать необходимый объем памяти, а считывать по RS232.

0

4

в среднем, планирую, что запись будет производится 1 раз в 10-15 минут, объем записываемых за 1 раз данных 15-20 Байт.

получается примерно 120 - 150 записей в сутки, получается 15-20 кБайт в неделю.

вот навеяло, можо ли писать в еепром, а затем чтоб считать, читать еепром тем-же Атмега8 и отправлять данные по USART в COM порт...

что скажете?

EEPROM'ки пока нет, как будет, так начну эксперименты, пока только в протеусе начну.

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

Отредактировано UN8JAB (2013-04-05 11:17:46)

0

5

Всё зависит сколько данных должно накапливаться, т.е. какие объёмы.
В одном из своих проектов использовал FM24W256(FRAM) - это 32КБ. Работает очень шустро как SRAM, можно конечно использовать и дешевые флешки из той же области (как предложено выше), разница только в задержке на запись, таймингах (в моём варианте можно пренебречь из-за тормозного МК). Т.ч. могу помочь с основным кодом...
Кстати данные думаю проще разгружать беспроводным способом, скажем через БТ - очень удобно. Организуем простою "ОС" и выводим по команде данные...

Отредактировано RDW (2013-04-05 11:46:35)

0

6

UN8JAB написал(а):

вот навеяло, можо ли писать в еепром, а затем чтоб считать, читать еепром тем-же Атмега8 и отправлять данные по USART в COM порт...
что скажете?

Так и делается. Контроллер накапливает данные, а потом их оттуда достают. При переполнении памяти организовать кольцо, чтобы запись начиналась сначала. При объеме памяти 128 кБайт длина архива составит примерно 6 недель.
А в принципе при таких объемах кольцо можно и не организовывать, а выделить под это дело фиксированные адреса, будет проще писать и читать.
Например за один раз можно сформировать такую строку: Дата, время, параметр 1, параметр 2 ... параметр N, CRC8 или CRC16 и в цикле с ходу ее записать по фиксированному адресу. При чтении вы всегда по дате и времени идентифицируете данные.
Следующая запись будет записана по адресу со сдвигом на длину строки и т.д. Читать аналогично всю строку целиком. Контроль ошибок чтения организовать по CRC. Вот в принципе как то так.

0

7

sva-don написал(а):

Дата, время, параметр 1, параметр 2 ... параметр N

аха... именно так и планирую...
все, пошел в протеус схему прикидывать и в баскоме кодить....
тему не закрываю, как начну кодить - вернусь за советами =)

Отредактировано UN8JAB (2013-04-05 19:56:21)

0

8

Удачи, обращайтесь. :rolleyes:

0

9

UN8JAB написал(а):

в среднем, планирую, что запись будет производится 1 раз в 10-15 минут, объем записываемых за 1 раз данных 15-20 Байт.

получается примерно 120 - 150 записей в сутки, получается 15-20 кБайт в неделю...

Самое простое и удобное это использовать внутреннюю память. Ее ресурс весьма велик, 100 000 записей в ячейку гарантированно. Если не писать при каждой записи в одну и ту же ячейку, то ресурса хватит на десятки (а то и сотни, если раз в неделю считывать) лет. Вопрос в относительно небольшой ее емкости...
Температуру с точностью в градус легко можно упаковать в один байт. Влажность и подавно. Для даты и времени, так как отсчеты будут все равно идти "раз в 15 минут" проще писать дату начала, а потом номер отсчета, это так же упакуется в один байт. К влажности можно еще и освещение добавить (байт это 255 значений, а влажность от 0 до 100, то есть старший бит вполне можно использовать как признак пасмурно или нет - меньше/больше порога).
Итого получается в записи примерно три..четыре байта за раз. Мерить температуру и влажность чаще раза в 30 минут имеет небольшой практический смысл, куда точнее будет мерить раз в 15 минут и писать усредненную за час. Это 24 записи по 3..4 байта. Вполне войдет неделя.

0

10

А если  прикрутить AT45DB321 ??  И работать просто и войдет много..

0

11

Skull написал(а):

AT45DB321

спасибо за наводку....

времени вообще мало заниматься любимым делом.... "любимая" работа все забирает на себя....
но ничего, я справлюсь =)

никогда не работал с SPI (TWI, I2C) интерфейсами....

на тиньку 13 такое думаю уже не повесить, а очень б хотелось. ладно, еще парочка Мег8 лежит, и одна 16

0

12

Skull написал(а):

А если  прикрутить AT45DB321 ??  И работать просто и войдет много..

Да уж, для человека, который никогда не работал с I2C и SPI это будет самый замороченный проект. Из недостатков можно отметить страничную загрузку по 512 байт, что для данного проекта не очень хорошо, а лучше сказать не рационально. Я понимаю, что можно и "винт" присобачить и он будет работать, но как то не по инженерному что ли...
Да и ток 7 мА при чтении из AT45DB321 и 25 мкА в паузе против 2 мА при чтении из M24M01 и 2 мкА в паузе при батарейном питании много значит.

Отредактировано sva-don (2013-04-08 15:28:46)

0

13

Можно накапливать 512 байт во встроенном EEPROM, а потом сбрасывать блоком.
A M24M01 тоже неплохой вариант.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Необходимо сохранение данных на внешний носитель