Страница 1 из 1

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 04 дек 2018, 13:29
zvukache
Добрый день, форумчане. У меня вопрос по работе с внешней памятью EEPROM.
В настройках контроллера я отключаю внутреннюю память и включаю работу с внешней микросхемой, делаю настройки: 256 байт, 50 адрес (у меня 24C02N) и контроллер не хочет (или не может?) работать с внешней микросхемой.
Применил метод исключения:
- моя программа прекрасно работает с внутренней памятью и она же не работает с внешней;
- подключена микросхема правильно, т. к. сканирование шины I2C это подтверждает - видятся сама микросхема и дисплей 1602;
- перепробованы несколько микросхем 24С02N и ни с одной микроконтроллер не захотел работать.
Я где-то на просторах форума читал, что некоторые пользователи сами пишут блоки для работы с микросхемой 24С08, в настройках блока есть микросхемы только с 32 и 256 килобитной памятью. У меня таймер для включения и выключения нагрузки и мне нужно хранить время для блоков будильника, в общем 12 байт, и нет смысла использовать микросхему на 4 килобайта или ещё больше. С другими микросхемами (которых нет в настройках блока) стандартный блок не работает?

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 04 дек 2018, 16:19
Sancho
zvukache писал(а): 04 дек 2018, 13:29С другими микросхемами (которых нет в настройках блока) стандартный блок не работает?
Встроенная поддержка только для больших микрух. Связано с разным форматом адреса ячейки - один или два байта. У Вас умещается в один байт - увы...

Отправлено спустя 37 минут 26 секунд:
Сделаю блочок - какие данные: тип, кол-во для одного "массива".

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 05 дек 2018, 16:13
zvukache
Спасибо за ответ. Я начинающий и об адресе ячейки не подумал.
Не представляю себе какие именно данные нужно хранить в объеме 4 килобайт - это больше двух тысяч переменных типа int. По киевским ценам разница между десятью микросхемами 24С02 и 24С32 - три с половиной цента, но, как говорил мой дедушка, зачем гнать грузовик, чтобы доставить на поле одного рабочего?
В моем случае это четыре будильника (по два на каждый таймер) + включено/выключено. Всего на каждый будильник: две переменных типа байт (часы:минуты) и одна булева (вкл/выкл). Спасибо за предложение написать блочок для работы с маленькой микросхемой. Но писать отдельный блок для выполнения одной конкретной задачи как-то не комильфо.
Скажите пожалуйста (не сочтите за наглость), а можно ли написать что-то вроде универсального блока (как встроенный блок), где в настройках блока можно было бы задавать тип переменной (хотя бы из трех: булева, байт и интеджер) и таких блоков в проекте можно было бы использовать столько, сколько нужно?

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 05 дек 2018, 17:22
Sancho
zvukache писал(а): 05 дек 2018, 16:13Скажите пожалуйста (не сочтите за наглость), а можно ли написать что-то вроде универсального блока (как встроенный блок), где в настройках блока можно было бы задавать тип переменной (хотя бы из трех: булева, байт и интеджер) и таких блоков в проекте можно было бы использовать столько, сколько нужно?
Нет, проще сделать чистые byte входы и на них подавать нужное, предварительно разложив при необходимости на байты.
zvukache писал(а): 05 дек 2018, 16:13Но писать отдельный блок для выполнения одной конкретной задачи как-то не комильфо.
Я просто слегка подредактирую свои старые под одно байтовый адрес запоминающего пространства и соответствующие входы/выходы.
Вместо bool будет байт - один бит не пишется, минимум 8 - байт :)

Отправлено спустя 4 минуты 47 секунд:
Будет bool, сделаю :) Возьмём один у часов, у них лишние :)

Отправлено спустя 54 минуты 50 секунд:
Надеюсь, проведёшь эксперименты - разберёшься

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 05 дек 2018, 23:46
seri0shka
У меня часы реального времени DS1307 с AT24C32, перерыл интернет, чтоб найти как её использовать, не нашёл. [ref]zvukache[/ref], можете выложить ваш проект для примера?

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 06 дек 2018, 00:01
dsfbuy
Изображение
В DS1307 наверно так-же.

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 06 дек 2018, 14:10
zvukache
У меня проект управления подсветкой для рассады, где используется модуль времени 1302 (там связь по трем цифровым пинам). Модуль 1307 с микросхемой памяти у меня тоже есть, но нет аккумулятора для него, поэтому решил использовать именно 1302.
Прежде всего вам нужно отключить в настройках использование внутренней памяти и оставить только внешнюю микросхему. Потом запустить скетч сканирования I2C шины и посмотреть видит ли ваш МК микросхему памяти и на каком адресе она сидит. Далее ввести адрес в настройках и всё должно получиться (в теории, сам я пока только планирую это проделать).

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 06 дек 2018, 14:15
Sancho
[ref]seri0shka[/ref], Какие проблемы по использованию? Никаких.
Главное - найти применение.
[ref]zvukache[/ref], попробовали блоки для 24С02?

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 06 дек 2018, 14:41
zvukache
Sancho, спасибо за блок.
Правда в работе есть некоторые нюансы. Когда в проекте один блок, то он работает превосходно, а когда в проекте несколько блоков с разными номерами, то начинаются глюки. У меня в проекте пять блоков с номерами 0, 1, 2, 3, 4. В четырех блоках я использую часы и минуты, в пятом только минуты, а в первом третьем и пятом по одной булеве. Первый и пятый блоки с номерами 0 и 4 работают отлично, а вот 2-4 блоки с номерами 1, 2, 3 - не читаются часы и минуты, только булевы.
Сегодня вечером буду продолжать экспериментировать - создам генератор со счетчиком и обнулением, и буду периодически сохранять показания счетчика в разные ячейки памяти и сразу читать эти ячейки. После отпишусь.

Отправлено спустя 4 минуты 41 секунду:
Эх, если бы можно было создавать блоки на языке Ардуино (в СИ я немножко ноль). :smile37:

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 06 дек 2018, 17:13
Sancho
[ref]zvukache[/ref], Пришлите Ваш проект - можете в личку.

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 06 дек 2018, 23:04
zvukache
Как я уже писал, проект состоит из трех таймеров:
1) Утренний (работает по времени);
2) Вечерний (работает по времени);
3) Дневной (настраивается автоматически между утренним и вечерним и работает в зависимости от интенсивности наружного освещения).
Порог интенсивности освещения можно вводить вручную, или запоминать текущие показатели нажатием отдельной кнопки.
В цепь управления реле добавлены временные задержки для предотвращения ложных срабатываний от кратковременного затемнения, или засвета фоторезистора.
Запись в память происходит только в момент выхода из меню настройки времени таймеров.
Считывание сначала делал по импульсу при включении МК (через 5 секунд), или сразу после записи, но потом отказался и сделал постоянное считывание.
Timer for rassada++.flp

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 07 дек 2018, 11:04
Sancho
[ref]zvukache[/ref],
1. Я правильно понял - bool блоке времени отвечает за задействовать таймер или нет?
2. Измените логику работы меню - выбирайте таймер, номер его подавайте на блок записи.....
3. Дневной режим, если активирован, работает только по уровню освещённости или как?

Отправлено спустя 54 минуты 49 секунд:
Отключить внешнюю память в проекте!!!!!!!!!!

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 07 дек 2018, 12:59
zvukache
1. Да.
3. Да. Работать должно только если очень пасмурно.
Отключить внешнюю память. Ясно. Попробую - отпишусь.

Работа блоков EEPROM с внешней микросхемой.

Добавлено: 08 дек 2018, 20:07
leons
вам видно что она подключена правильно а нам нет можно глянуть схему