Прямоугольный сигнал RTC

rtc

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

Интересно, как мне установить частоту импульса?

Какова (временная) продолжительность импульса?

ОБНОВЛЕННЫЙ ВОПРОС

Чтобы использовать DS3231 как прерывание 1PPS, я хочу использовать выход Square Wave. Вот как я подключил его к Arduino.

Я подключил к выходу SQW подтягивающий резистор 10 кОм и светодиод. После этого я протестировал код, который показывает время, и он отлично заработал.

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {
   Serial.begin(9600);
   #ifdef AVR
      Wire.begin();
   #else
      Wire1.begin(); 
   #endif
   rtc.begin();

  if (! rtc.isrunning()) {
     Serial.println("RTC is NOT running!");
     rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    }  
  }

void loop () {

   DateTime now = rtc.now();
   Serial.print(now.year(), DEC);
   // и т. д
   }

(DS3231 отлично работает с библиотекой DS1307)

В этом случае светодиод просто мерцал, поэтому я подумал, что частота по умолчанию SQW должна быть больше 1 Гц. Я немного погуглил и понял, что мне нужно изменить некоторые регистры. Поэтому я нашел этот фрагмент кода, который я вызвал из функции setup(), но безуспешно, светодиод все еще мерцает.

void set1Hz() {
   // Частота хранится в регистре 0x0e в битах 3 и 4
   Wire.beginTransmission(0x68);
   Wire.write(0x0e);
   Wire.endTransmission();
   Wire.requestFrom(0x68, 1);
   uint8_t register0E = Wire.read();

   // очистить биты 3 и 4 для 1 Гц
   register0E &= ~(1 << 3);
   register0E &= ~(1 << 4);

   // вернуть значение регистра обратно
   Wire.beginTransmission(0x68);
   Wire.write(0x0e);
   Wire.write(register0E);
   Wire.endTransmission();
 }

Поскольку теперь я имею квалификацию для низкоуровневого программирования, любые предложения по изменению регистров будут оценены по достоинству.

, 👍1


2 ответа


0

с библиотекой DS1307 Tiny RTC:

"rtc.writeSqwPinMode(0x10);" в цикле настройки...

устанавливает выход DS на 1 Гц, прямоугольный сигнал

Это не совсем сигнал 1PPS, который обычно представляет собой узкий импульс,

но этот сигнал с 50%-ным рабочим циклом будет работать как 1-секундное прерывание.

,

0

Выход SQWV имеет только низкий уровень, это выход с открытым стоком.

Подключите следующим образом: 5 В к аноду светодиода, катод светодиода к резистору ограничения тока, другая ножка резистора к выводу SQWV.

Проверьте допустимую нагрузку на вывод. 10 кОм сделают светодиод очень тусклым (если вообще будет виден). Попробуйте 1 кОм.

,