я ее просмотрел, там нет подключения wire
Дайте ссылку на DS3231…
Она на ногодрыге через digitalWrite shiftOut … без Wire
Причем HIGH выставляется на линию !!! Это очень не хорошо !!!
вот и ищу исполнителя чтобы сделал как нужно
Там действительно не используется Wire, задействован свой набор команд, который будет дублировать команды библиотеки для FM24. Так что использование этих двух либ может оказаться что будет занимать больше места, чем использование часов и фрам-памяти с одной общей Wire
Чтобы действительно сэкономить место, надо в библиотеку часов добавить поддержку Фрам, или наоборот - в библиотеку для памяти - вставить часы.
Только стоит ли это все экономии в лучшем случае 1 - 1.5К ?
Что у вас за проект такой, что вам 128к флеша не хватает и приходится бороться за каждый килобайт? Может есть другие пути оптимизации размера?
ну 1 - 1,5 кб пожертвовать то можно конечно
Сколько готовы пожертвовать в рублях ?
вам же писать, предложите
Вы же понимаете что придётся разбираться и с вашим кодом, который не лезет в 128кб …
мне нужно только что я описал, чтобы это просто заработало вместе, и можно было писать int и long ну и читать
Просто найдите библиотеку часов на Wire и библиотеку для памяти на Wire - и думаю будет на выходе код меньше чем с кривой библиотекой на ногодрыге для часов и на регистрах для памяти !!!
Если же “деньги жгут ляшку” стучите в личку …
вот даже интересно, во сколько он оценит сокращение кода на 1%
Я не вижу отличий в регистрах i2c для 128 и 328 …
Если честно, даже примерно не смотрел
Вроде, КМК, всегда считалось, что обязанность образованного человека поднимать невежества до своего уровня, а не опускаться до их. То есть не следовать хотелкам заказчика, а объяснять заказчику основы и помогать сделать правильный выбор.
и какой тут правильный выбор на твой взгляд?
Прости, был за рулем. С 7 утра, блин!
Правильно - wire использовать. Именно потому, что несколько i2c устройств и нормальный контроллер. Если реально будет не хватать места, то убрать ненужные методы из wire. Но лучше полагаться на оптимизатор.
Странно, вставил код сканера и не видит микру, ее пробовал менять, находит только 0х68 это часы подключенные параллельно на шину i2c, а память не хаходит, что может быть?
#define F_CPU 8000000UL
//----------------------БИБЛИОТЕКИ--------------------------
#include <avr/wdt.h> //Библиотека сторожевого таймера
#include <EEPROM.h>
#include <Wire.h>
//#define DS3231_ADDRESS 0x68 //Адрес часов
//#define disk 0x50 //адрес чипа FM24C
//***************
//Установка
void setup() {
//Запуск внешнего прерывания
Serial1.begin(38400);
wdt_enable(WDTO_2S);
}
//Основной метод
void loop()
{
delay(1000);
wdt_reset();
//Сканер
byte error, address;
int nDevices;
Serial1.println("Scanning...");
nDevices = 0;
for(address = 0; address < 127; address++ ){
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0){
Serial1.print("I2C device found at address 0x");
if (address<16)
Serial1.print("0");
Serial1.print(address,HEX);
Serial1.println(" !");
nDevices++;
}
else if (error==4) {
Serial1.print("Unknow error at address 0x");
if (address<256)
Serial1.print("0");
Serial1.println(address,HEX);
}
}
if (nDevices == 0)
Serial1.println("No I2C devices found\n");
else
Serial1.println("done\n");
}
Прежде, чем искать ошибку в комбинированной системе, нужно убедиться в работоспособности компонент. Поэтому
!!! Возьми обычную уно/нано/мегу и типовую библиотеку для FRAM и запусти из нее тестовые примеры. И ТОЛЬКО ПОТОМ проверяй все в условии экзотической платы с 8МГц тактовой частоты.