Помогите запустить выход SQW на часах DS3231

Не могу понять как записать регистры, с частотой 8192 Гц

Wire.beginTransmission(0x68); // начинаем обмен с DS3231 с i2c адресом 0x68
  Wire.write(0x0E);
  Wire.write(0x00);
  Wire.write(0x00);
  Wire.write(0x00);
  Wire.write(0x01);
  Wire.write(0x01);
  Wire.write(0x00);
  Wire.write(0x00);
  Wire.write(0x00);
  Wire.endTransmission(); // завершение передачи

постоянно на выходе идет 1Гц

Вы разницу между битами и байтами понимаете? Вам надо установить два бита в ОДНОМ БАЙТЕ, нафига же вы шлете 8 байт?
Нужно заранее сформировать байт с нужными битами и потом послать ОДИН байт

Wire.beginTransmission(0x68); // начинаем обмен с DS3231 с i2c адресом 0x68
  Wire.write(0x0E); // выбор регистра CONTROL
  Wire.write(0b00011000); // регистр записи (бит 7 — EOSC)
  Wire.endTransmission(); // завершение передачи

так тоже результата нет

А что есть? 1 Гц? Или ничего? Вы можете как-то повнятнее изъясняться?

1Гц идет постоянно, поменять не могу почему-то

Ну, тогда давайте полный код и схему. ЕМНИП он там с 1ГЦ с завода идёт, так что, может Вы вообще ничего не меняете.

Кстати, как Вы его (1 ГЦ) меряете? Какого номинала резистор?

стандартное подключение, резисторы по 4,7кОм, замеряю осликом

#include <microDS3231.h>
MicroDS3231 rtc;
#define F_CPU 8000000UL
//----------------------БИБЛИОТЕКИ--------------------------
#include <avr/wdt.h>      //Библиотека сторожевого таймера
#include <Wire.h>
//***************
void scan()
  {
    //Сканер
    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<16)
                Serial1.print("0");
            Serial1.println(address,HEX);
        } 
    }
    if (nDevices == 0)
        Serial1.println("No I2C devices found\n");
    else
        Serial1.println("done\n");
  }

void setup() {
  //Запуск внешнего прерывания
  Serial1.begin(38400);
  wdt_enable(WDTO_2S);
  Wire.begin();
  Wire.beginTransmission(0x68); // начинаем обмен с DS3231 с i2c адресом 0x68
  Wire.write(0x0E); // выбор регистра CONTROL
  Wire.write(0b00011000); // регистр записи (бит 7 — EOSC)
  Wire.endTransmission(); // завершение передачи
}

//Основной метод
void loop()
  { 
    delay(1000);
    wdt_reset();
}

Так Вы и не меняете. Читайте даташит дальше, ещё 2 бита есть.

Только эти по таблице и относятся к этому выходу Rate Select (RS2 и RS1) я читал документацию, но так и не смог его запустить на другой частоте

С какого резистора? Выход-то - открытый коллектор, Вы не забыли?

https://i.mycdn.me/i?r=AzEPZsRbOZEKgBhR0XGMT1Rkbo6b_BmbRulxJH24Sbre96aKTM5SRkZCeTgDn6uOyic,https://i.mycdn.me/i?r=AzEPZsRbOZEKgBhR0XGMT1RkxUj1Enf86CNm-wJfbxCKu6aKTM5SRkZCeTgDn6uOyic,https://i.mycdn.me/i?r=AzEPZsRbOZEKgBhR0XGMT1RkOm5eIMF9qvxvzLxzn-ec2qaKTM5SRkZCeTgDn6uOyic

Да, всё верно, чего-то я протупил ))

Я попробовал, у меня получилось.

У меня через б-ку (самогонную), но по регистрам разберётесь.

В основной программе я написал так:

DS3231Init();

ds3231_ControlRegister.clear(CtrlBits::INTCN);
ds3231_ControlRegister.set(CtrlBits::RS1 | CtrlBits::RS2);

Как видите, Ваши два бита, плюс обнулил бит INTCN, но Вы это тоже делаете.

А функция DS3231Init у меня выглядит так:

//
// Запускаем осциллятор, сбрасываем флаг остановки осциллятора
// и выключаем генерацию меандра на ноге 32kHz
//
void DS3231Init(void) {
	ds3231_ControlRegister.clear(CtrlBits::EOSC);
	ds3231_ControlStatusRegister.clear(CtrlBits::OSF | CtrlBits::BB32kHz | CtrlBits::EN32kHz);
	ds3231_alarmsClear();
}

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

(на всякий случай: ControlRegister. - 0x0E, а ControlStatusRegister - 0x0F)

для 32 кГц, там же первая лапка используется

Да, точно, переклинило.

Тем не менее, попробуйте точно повторить мои команды. Работает же у меня. Должно и у Вас.