bonjour tout le monde ???
j'ai un probleme avec un ds3231
j'ai fait un code a partire de la librairie : GitHub - JChristensen/DS3232RTC: Arduino Library for Maxim Integrated DS3232 and DS3231 Real-Time Clocks
j'ai ce ds3231 : http://www.lextronic.fr/P29815-module-horloge-rtc-pour-raspberry.html
mais le probleme c'est que j'ai tout connecter correctement
mais je n'arrive pas à trouver la broche int(pour les alarme
j'ai fait un code mais dans la documentation
du ds3231 ils disent qu'il faut connecter la broche
int il faut une resistance en pull up mais je ne sait pas comment
faire ??
Comment je pourrai cabler une resistance en pull up à la broche int du ds3231
Bonjour,
Voir datasheet sur la première page.
Une résistance de 4.7k ou 10k vers le +5V sur la pin 3
@+
j'ai essayer mais cela ne marche pas
je ne comprend pas ????
Re,
Polua:
j'ai essayer mais cela ne marche pas
je ne comprend pas ????
Tu ne comprends pas quoi ?
La pin 3 (INT/SQW) est à fonction multiple, à toi de la programmer. Alors que souhaites-tu faire ?
Active-Low Interrupt or Square-Wave Output. This open-drain pin requires an external pullup resistor
connected to a supply at 5.5V or less. This multifunction pin is determined by the state of the INTCN bit in
the Control Register (0Eh). When INTCN is set to logic 0, this pin outputs a square wave and its frequency
is determined by RS2 and RS1 bits. When INTCN is set to logic 1, then a match between the timekeeping
registers and either of the alarm registers activates the INT/SQW pin (if the alarm is enabled). Because the
INTCN bit is set to logic 1 when power is first applied, the pin defaults to an interrupt output with alarms
disabled. The pullup voltage can be up to 5.5V, regardless of the voltage on VCC
. If not used, this pin can be left unconnected
declancher une alarme qui va reveiller l'arduino en faisant une interruption sur le pin 2 mais cela ne marche pas meme avec la resistance en pull up
comment faire ??
Ce n'est plus un problème de DS3231 c'est un problème de mise en sommeil et de réveil.
A mon avis pour vérifier que tu arrive a mettre en sommeil et à réveiller le micro un simple bouton poussoir suffit.
Moins il y aura de choses à gérer plus vite la solution sera trouvée.
je vais essayer avec un bouton poussoir pour voir si c'est un probleme du code .
mais j'ai essayer de faire un code avec le ds3231 pour une simple alarme mais ça be marche pas je ne comprend pas pourquoi ??
Regle ton problème avec le matériel minimum et ensuite il y a de fortes probabilités pour que quand tu reviendra avec le DS3231 la solution te paraisse évidente.
68tjs:
Regle ton problème avec le matériel minimum et ensuite il y a de fortes probabilités pour que quand tu reviendra avec le DS3231 la solution te paraisse évidente.
Que veut dire "le matériel minimum"
Faire au plus simple.
Actuellement tu mélanges l'apprentissage de la gestion du DS3231 avec celui de la mise en sommeil et du réveil du micro-controleur.
Sépare les variables et ne fait qu'une chose à la fois. Quand tout fonctionnera assemble.
Essaye déjà le code d'exemple de cette page pour vérifier que tu câbles bien l'interruption et qu'elle fonctionne.
L'étape suivante pourrait être la mise en sommeil et le réveil par l'interruption.
Ensuite tu pourras raccorder ta RTC et vérifier son fonctionnement.
j'ai une question suis-je réellement obliger d'utiliser une interruption du ds3231 pour reveiller l'arduino ou il y aurait t'il une alternative pour réveiller l'arduino ?
Si tu nous donnais un schéma de ce que tu as câblé et le code que tu fais tourner ce serait peut être plus facile de t'aider.
je pense que je vais faire partire sur le watchdog pour reveiller l'arduino toutes les 8secondes
verifier si l'heure est la bonne fait ce aui est demander
mais je ne sais pas programmer le wdt j'ai cherché pourriez-vous m'aider
Il n'y a pas assez de lien dans le pdf que j'ai joins ?
je vien de faire ce code :
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/wdt.h>
#include <Time.h>
#include <DS3232RTC.h>
#include <Wire.h>
volatile int f_wdt=1;
ISR(WDT_vect)
{
if(f_wdt == 0)
{
f_wdt=1;
}
else
{
}
}
void enterSleep()
{
set_sleep_mode(SLEEP_MODE_PWR_SAVE);
sleep_enable();
sleep_mode();
sleep_disable();
power_all_enable();
}
void setup()
{
Serial.begin(9600);
delay(100);
RTC.setAlarm(ALM1_MATCH_SECONDS, 0, 0, 20, dowSaturday);
RTC.alarm(ALARM_1);
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP0 | 1<<WDP3;
WDTCSR |= _BV(WDIE);
delay(100);
}
void loop()
{
if(f_wdt == 1)
{
if(RTC.alarm(ALARM_1))
{
//fait quelque chose
}
f_wdt = 0;
enterSleep();
}
else
{
}
}
pouvez-vous me dire si il est correct
de plus le watchdog reveil l'arduino toute les 8sesconds
alors que l'alarme se met en marche toute les minute je demande si elle a fonctionner il ne va pas y avoir une erreur si elle a retentit avant que le l'arduino soit reveiller ?
comment faire pour que le watchdog reveil l'arduino toute les minutes ??
A la place de 8secondes