Сигнализация RP2040 RTC или аналогичная функция
У меня есть плата rp2040, использующая ядро Earl E. Philhower. Я хотел бы использовать функции rtc точно так же, как упомянутые в sdk. Особенно функция сигнализации, которая имеет решающее значение в моем проекте.
Предположительно из того, что я знаю, у вас есть доступ ко всем функциям в sdk в среде IDE arduino, но когда я опробовал пример в sdk, он не компилировался, говоря, что функции rtc не объявлены
char datetime_buf[256];
char *datetime_str = &datetime_buf[0];
datetime_t t = {
.year = 2020,
.month = 06,
.day = 05,
.dotw = 5, // 0-воскресенье, поэтому 5-пятница
.hour = 15,
.min = 45,
.sec = 00
};
void setup() {
Serial.begin(9600);
Serial.println("Hello RTC!");
rtc_init();
rtc_set_datetime(&t);
}
void loop() {
rtc_get_datetime(&t);
Serial.println(datetime_str);
sleep_ms(100);
}
Эрл Э. Филхауэр поставляется с примером скетча времени, но проблема в том, что я не смог найти документацию, если существует функция, подобная сигналу тревоги
/* Простая демонстрация настройки и печати текущего времени */
/* Начальное время должно быть получено от RTC, NTP или пользователя */
/* Выпущено в общественное достояние Эрлом Ф. Филхауэр, III <[email protected]> */
#include <time.h>
#include <sys/time.h>
void setup() {
Serial.begin(115200);
delay(5000);
struct timeval tv;
tv.tv_sec = 1611198855; // 21 января 2021 3:14:15 утра ...Выпуск RPi Pico;
tv.tv_usec = 0;
settimeofday(&tv, nullptr);
}
void loop() {
time_t now;
char buff[80];
time(&now);
strftime(buff, sizeof(buff), "%c", localtime(&now));
Serial.println(buff);
delay(1000);
}
@Jack, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы можете попробовать использовать мою библиотекуRP2040_RTC, особенно этот примерRP2040_RTC_Alarm.
Поддерживаются как ArduinoCore-mbed, так и ядра arduino-pico Earle Philhower.
Это выглядит красиво, в нем даже есть пример того, как получить время через ethernet, что является одной из причин тревоги, мне нужно обновлять время каждые 6 часов., @Jack
кстати , это аппаратная реализация RTC?, @Jack
ДА. Это аппаратный RTC RP2040, как указано в разделе 4.1.21. hardware_rtc
[Raspberry Pi Pico-C/C++ SDK](https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf), @khoih-prog
Круто, спасибо, что сделали библиотеку :), @Jack
У меня есть вопрос о сигналах тревоги, если сигнал тревоги сработает, это вызовет прерывание, верно? и точно так же, как работают стандартные прерывания, он остановит все, что делает, и обработает это прерывание правильно?, @Jack
ДА. Проверьте код ISR здесь [RP2040_RTC_Alarm.ino#L54-L58](https://github.com/khoih-prog/RP2040_RTC/blob/main/examples/Alarm/RP2040_RTC_Alarm/RP2040_RTC_Alarm.ino#L54-L58). ISR просто устанавливает флаг, и флаг считывается и обрабатывается в цикле() в [RP2040_RTC_Alarm.ino#L179-L186](https://github.com/khoih-prog/RP2040_RTC/blob/main/examples/Alarm/RP2040_RTC_Alarm/RP2040_RTC_Alarm.ino#L179-L186), @khoih-prog
Другой вопрос, сколько сигналов тревоги может быть установлено в данный момент времени?, @Jack
- Примеры двухъядерных скетчей Rp2040
- Неустранимая ошибка Adafruit_SSD1306.cpp: pgmspace.h: нет такого файла или каталога с использованием SSD1306 на Arduino Nano RP2040
- Ардуино не может подключиться к порту (arduino nano rp2040)
- Rp2040: Как сообщить второму ядру от первого ядра в качестве индикатора, чтобы что-то сделать
- Примерный скетч RP2040 для двухъядерной очереди
- Датчик температуры DS18B20 дает сбой MbedOS на Arduino Nano RP2040?
- Для чего предполагается использовать SerialNina и SerialHCI? (Подключение Arduino Nano RP2040)
- Вход на Nano RP2040 не float
Вы `#включили "оборудование/rtc.h" при попытке использовать RTC из SDK?, @Majenko
@Majenko Да, он не смог найти библиотеку.
фатальная ошибка: аппаратное обеспечение/rtc.h: Нет такого файла или библиотеки решений директорий(аппаратное обеспечение/rtc.h)
, @Jack