Aggiornamento: questo post e' molto simile al precedente
Lo scopo di questo script e' generare ogni 10 secondi un allarme che risvegli dall standby la MKR1010 per effettuare una operazione e poi la riaddormenti in staandy
Una volta in Sleep Mode in consumo e' inferiore a 10 mA ovvero e' sotto la soglia di misura del mio strumento
Con questa configurazione il consumo e' di circa 14 mA
Attenzione : quando viene lanciato il programma il processore va in standby e viene disabilitata la porta USB. Per effettuare un nuovo upload si deve premere il tasto di reset per due volte in modo veloce
--------------------------------------------------------------------------
#include <RTCZero.h>
/* Create an rtc object */
RTCZero rtc;
/* Change these values to set the current initial time */
const byte seconds = 0;
const byte minutes = 00;
const byte hours = 17;
/* Change these values to set the current initial date */
const byte day = 17;
const byte month = 11;
const byte year = 15;
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
rtc.begin();
rtc.setTime(hours, minutes, seconds);
rtc.setDate(day, month, year);
rtc.setAlarmTime(17, 00, 10);
// Abilita l'allarme quando i secondi sono uguali alla soglia
rtc.enableAlarm(rtc.MATCH_SS);
rtc.attachInterrupt(alarmMatch);
rtc.standbyMode();
}
void loop()
{
rtc.standbyMode(); // Sleep until next alarm match
}
void alarmMatch()
{
// INVERTE LO STATO DEL LED
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
// Setta il nuovo allarme 10 secondi nel futuro
rtc.setAlarmSeconds((rtc.getSeconds() + 10) % 60);
}
Visualizzazione post con etichetta RTC. Mostra tutti i post
Visualizzazione post con etichetta RTC. Mostra tutti i post
martedì 19 marzo 2019
martedì 16 luglio 2013
Real Time Clock DS1302 su Raspberry
Di questo componente esistono molti tutorial su Internet e, cosa abbastanza incredibile, sono spesso molto differenti tra di loro. In alcuni casi viene proposto di rimuovere delle resistenza della schedina dell'RTC, in altri casi l'alimentazione deve essere collegata ai 5 Volts...in questo caso viene presentato l'esempio riportato da questo sito che per il mio caso ha funzionato
La pedinatura e' la seguente
Raspberry -> RTC
VCC 3 Volt -> VCC
GND -> GND
GPIO #21/27 -> CLK
GPIO #18 -> DAT
GPIO #17 -> RST
(il sito originale indica di inserire delle resistenze da 10 KOhm su DAT e VCC .. nel mio caso ha funzionato senza necessita' di questi componenti)
per usare questo componente si deve utilizzare il programma rtc-pi.c che si scarica da questo link
Dato che utilizzo la Raspberry 2 devono essere modificato il file rtc-pi.c come segue
si devono commentare (o cancellare alcune righe) ed inserirne altre; vedi righe evidenziate
---------------------------------------------
La pedinatura e' la seguente
Raspberry -> RTC
VCC 3 Volt -> VCC
GND -> GND
GPIO #21/27 -> CLK
GPIO #18 -> DAT
GPIO #17 -> RST
(il sito originale indica di inserire delle resistenze da 10 KOhm su DAT e VCC .. nel mio caso ha funzionato senza necessita' di questi componenti)
per usare questo componente si deve utilizzare il programma rtc-pi.c che si scarica da questo link
Dato che utilizzo la Raspberry 2 devono essere modificato il file rtc-pi.c come segue
si devono commentare (o cancellare alcune righe) ed inserirne altre; vedi righe evidenziate
---------------------------------------------
#define IO_INPUT *(gpio+GPIO_SEL1) &= 0xF8FFFFFFL
#define IO_OUTPUT *(gpio+GPIO_SEL1) &= 0xF8FFFFFFL; *(gpio+GPIO_SEL1) |= 0x01000000L
//#define SCLK_OUTPUT *(gpio+GPIO_SEL2) &= 0xFFFFFFC7L; *(gpio+GPIO_SEL2) |= 0x00000008L
#define CE_OUTPUT *(gpio+GPIO_SEL1) &= 0xFF1FFFFFL; *(gpio+GPIO_SEL1) |= 0x00200000L
#define IO_HIGH *(gpio+GPIO_SET) = 0x00040000L
#define IO_LOW *(gpio+GPIO_CLR) = 0x00040000L
//#define SCLK_HIGH *(gpio+GPIO_SET) = 0x00200000L
//#define SCLK_LOW *(gpio+GPIO_CLR) = 0x00200000L
#define CE_HIGH *(gpio+GPIO_SET) = 0x00020000L
#define CE_LOW *(gpio+GPIO_CLR) = 0x00020000L
#define IO_LEVEL *(gpio+GPIO_INP) & 0x00040000L
#define SCLK_OUTPUT *(gpio+GPIO_SEL2) &= 0xFF1FFFFFL; *(gpio+GPIO_SEL2) |= 0x00200000L
#define SCLK_HIGH *(gpio+GPIO_SET) = 0x08000000L
#define SCLK_LOW *(gpio+GPIO_CLR) = 0x08000000L---------------------------------------------
il programma si puo' compilare come
cc -o rtc-pi.c rtc-pi.c
chmod +x rtc-pi
per impostare la data sull' RTC si puo' procedere come (da sudo)
./rtc-pi 20130713173002 (ora 17:30:02 del 13 luglio 2013)
per impostare l'ora del Raspberry riprendendola dall' RTC e' sufficiente
./rtc-pi
per rendere il sistema funzionante si deve infine mandare in esecuzione automatica il programma ./rtc-pi ad ogni avvio del sistema
#define SCLK_HIGH *(gpio+GPIO_SET) = 0x08000000L
#define SCLK_LOW *(gpio+GPIO_CLR) = 0x08000000L---------------------------------------------
il programma si puo' compilare come
cc -o rtc-pi.c rtc-pi.c
chmod +x rtc-pi
per impostare la data sull' RTC si puo' procedere come (da sudo)
./rtc-pi 20130713173002 (ora 17:30:02 del 13 luglio 2013)
per impostare l'ora del Raspberry riprendendola dall' RTC e' sufficiente
./rtc-pi
per rendere il sistema funzionante si deve infine mandare in esecuzione automatica il programma ./rtc-pi ad ogni avvio del sistema
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...