intel curie RTC

Bonjour je voudrais votre avis sur le true RTC de l'intel curie tinytile est t'il comparable au RTC PCF8523 A vrais dire je voulais utilisé le RTC 8523 car il a une pile qui garantie qu'il conserve l'heure mais je n'arrive pas a l'initialiser sur la bonne heure et pour linstant je passe pas encore par le ble j'utilise un code exemple de la librairie RTClib // pcf 8523 qui suit pour me familiariser avec le module...

pour la suite je voudrais qu'une carte curie lance des commande via le ble sur 2 autres carte comme la syncho d'horloge :)!

#include "RTClib.h"

RTC_PCF8523 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {

  while (!Serial) {
    delay(1);  // for Leonardo/Micro/Zero
  }

  Serial.begin(57600);
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (! rtc.initialized()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

void loop () {
    DateTime now = rtc.now();

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");

    // calculate a date which is 7 days, 12 hours and 30 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));

    Serial.print(" now + 7d + 12h + 30m + 6s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();

    Serial.println();
    delay(3000);
}

Intel Curie n'a t-il pas abandonné le projet curie et les cartes qui vont avec ? Ces cartes n'ont jamais été des Arduino, Intel ne partage pas.

Oui, projet abandonné par Intel il ya deux ans https://www.minimachines.net/actu/arduino-101-53057

Oui mais moi j'en ai et je voudrais m'en servir pour un projet ou le poids est très important puis-je avoir un peut d'aide ou c'est non ?

de l'aide içi sur cette carte , ne pas se faire beaucoup d'illusion, ceux qui voudraient ne peuvent pas Peut être Intel a-t-il maintenu un support ou une communauté sur SON produit ?

pas de sous-forum Curie içi https://forum.arduino.cc/index.php

RTC Curie ? un balayage rapide(trop rapide ?) de ce schéma https://www.arduino.cc/en/uploads/Main/Arduino101-REV4Schematic.pdf ne laisse pas voir de RTC ne serait-ce que par la présence d'un quartz horloger

https://www.arduino.cc/en/Reference/CurieTime

En faite ou est le problème c'est une carte type arduino101 ? c'est pas compatible une arduino 101 ? j'ai pas choisie la carte on me l'impose pour une question de poids ... Je demande juste de l'aide ... je cherche aucun conflit idéologique sur l'open source je veux monté un projet de logger avec une curie + RTC+ sdcard commandé par BLE;

Enfin méaculpa si je vous embête.. c'est sincère je suis juste embêter la j'ai besoin d'aide ...

Non tu ne nous embête pas du tout. Ce qui est dommage pour toi c'est qu'ici personne n'a eu confiance en Intel et qu'il va être très difficile de trouver quelqu'un qui a de l'expérience dessus.

Tu aura probablement plus de chance sur la partie anglophone du forum.

Tu vois ce n'est pas de la mauvaise volonté, c'est simplement du réalisme.

hello j'ai cherché un peu sur le net, j'ai trouvé ce lien

regarde aussi en bas du tableau de compatibilité, tu verras que curie est coché :)

dfgh: hello j'ai cherché un peu sur le net, j'ai trouvé ce lien

regarde aussi en bas du tableau de compatibilité, tu verras que curie est coché :)

oui c'est la librairie que j'ai trouvé dans les doc et dans l'exemple fournis

j'ai l'impression que je peux lire la data mais pas écrire dedans dans l' initialisation du setup:

la commande

rtc.adjust(DateTime(F(DATE), F(TIME)));

na pas l'air de marcher de meme pour lautre rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

sur le com sa me sort toujours 2165 16 février 12h16 je pense que quelque chose ne tourne par rond dans le bus i2c

peux tu faire un test en sortant la ligne de cde du if.

comme ça par exemple

void setup () {

  while (!Serial) {
    delay(1);  // for Leonardo/Micro/Zero
  }

  Serial.begin(57600);
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }


rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));


if (! rtc.initialized()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

j'ai essayer ca na rien donner ca compile ca charge mais c'est comme si le

rtc.adjust(DateTime(F(DATE), F(TIME)));

n'avait aucun effet d'ailleur DATE et Time sont dans le fichier RCTlib.h ? sont t'il bien ecrit je vais regardé car a un moment j'ai eu un souci avec RTC et rtc ....

si non j'ai lu que la pile bouton de 3v dois etre retirer pendant la programmation du rct ?

Je vais tester ca aussi .

voici les fonction de ton horloge dans le .cpp de la lib rtctrouvée ici

/**************************************************************************/
////////////////////////////////////////////////////////////////////////////////
// RTC_PCF8563 implementation
boolean RTC_PCF8523::begin(void) {
  Wire.begin();
  return true;
}

/**************************************************************************/
/*!
    @brief  Check control register 3 to see if we've run adjust() yet (setting the date/time and battery switchover mode)
    @return True if the PCF8523 has been set up, false if not
*/
/**************************************************************************/
boolean RTC_PCF8523::initialized(void) {
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE((byte)PCF8523_CONTROL_3);
  Wire.endTransmission();

  Wire.requestFrom(PCF8523_ADDRESS, 1);
  uint8_t ss = Wire._I2C_READ();
  return ((ss & 0xE0) != 0xE0);
}

/**************************************************************************/
/*!
    @brief  Set the date and time, set battery switchover mode
    @param dt DateTime to set
*/
/**************************************************************************/
void RTC_PCF8523::adjust(const DateTime& dt) {
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE((byte)3); // start at location 3
  Wire._I2C_WRITE(bin2bcd(dt.second()));
  Wire._I2C_WRITE(bin2bcd(dt.minute()));
  Wire._I2C_WRITE(bin2bcd(dt.hour()));
  Wire._I2C_WRITE(bin2bcd(dt.day()));
  Wire._I2C_WRITE(bin2bcd(0)); // skip weekdays
  Wire._I2C_WRITE(bin2bcd(dt.month()));
  Wire._I2C_WRITE(bin2bcd(dt.year() - 2000));
  Wire.endTransmission();

  // set to battery switchover mode
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE((byte)PCF8523_CONTROL_3);
  Wire._I2C_WRITE((byte)0x00);
  Wire.endTransmission();
}

/**************************************************************************/
/*!
    @brief  Get the current date/time
    @return DateTime object containing the current date/time
*/
/**************************************************************************/
DateTime RTC_PCF8523::now() {
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE((byte)3);
  Wire.endTransmission();

  Wire.requestFrom(PCF8523_ADDRESS, 7);
  uint8_t ss = bcd2bin(Wire._I2C_READ() & 0x7F);
  uint8_t mm = bcd2bin(Wire._I2C_READ());
  uint8_t hh = bcd2bin(Wire._I2C_READ());
  uint8_t d = bcd2bin(Wire._I2C_READ());
  Wire._I2C_READ();  // skip 'weekdays'
  uint8_t m = bcd2bin(Wire._I2C_READ());
  uint16_t y = bcd2bin(Wire._I2C_READ()) + 2000;

  return DateTime (y, m, d, hh, mm, ss);
}

/**************************************************************************/
/*!
    @brief  Read the mode of the SQW pin on the PCF8523
    @return SQW pin mode as a Pcf8523SqwPinMode enum
*/
/**************************************************************************/
Pcf8523SqwPinMode RTC_PCF8523::readSqwPinMode() {
  int mode;

  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE(PCF8523_CLKOUTCONTROL);
  Wire.endTransmission();

  Wire.requestFrom((uint8_t)PCF8523_ADDRESS, (uint8_t)1);
  mode = Wire._I2C_READ();

  mode >>= 3;
  mode &= 0x7;
  return static_cast<Pcf8523SqwPinMode>(mode);
}

/**************************************************************************/
/*!
    @brief  Set the SQW pin mode on the PCF8523
    @param mode The mode to set, see the Pcf8523SqwPinMode enum for options
*/
/**************************************************************************/
void RTC_PCF8523::writeSqwPinMode(Pcf8523SqwPinMode mode) {
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE(PCF8523_CLKOUTCONTROL);
  Wire._I2C_WRITE(mode << 3);
  Wire.endTransmission();
}

/**************************************************************************/
/*!
    @brief  Use an offset to calibrate the PCF8523. This can be used for:
            - Aging adjustment
            - Temperature compensation
            - Accuracy tuning
    @param mode The offset mode to use, once every two hours or once every minute. See the Pcf8523OffsetMode enum.
    @param offset Offset value from -64 to +63. See the datasheet for exact ppm values.
*/
/**************************************************************************/
void RTC_PCF8523::calibrate(Pcf8523OffsetMode mode, int8_t offset) {
  uint8_t reg = (uint8_t) offset & 0x7F;
  reg |= mode;

  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE(PCF8523_OFFSET);
  Wire._I2C_WRITE(reg);
  Wire.endTransmission();
}

tu y verras:

void RTC_PCF8523::adjust(const DateTime& dt) {
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE((byte)3); // start at location 3
  Wire._I2C_WRITE(bin2bcd(dt.second()));
  Wire._I2C_WRITE(bin2bcd(dt.minute()));
  Wire._I2C_WRITE(bin2bcd(dt.hour()));
  Wire._I2C_WRITE(bin2bcd(dt.day()));
  Wire._I2C_WRITE(bin2bcd(0)); // skip weekdays
  Wire._I2C_WRITE(bin2bcd(dt.month()));
  Wire._I2C_WRITE(bin2bcd(dt.year() - 2000));
  Wire.endTransmission();

  // set to battery switchover mode
  Wire.beginTransmission(PCF8523_ADDRESS);
  Wire._I2C_WRITE((byte)PCF8523_CONTROL_3);
  Wire._I2C_WRITE((byte)0x00);
  Wire.endTransmission();
}

Re alors bon jai bien la même chose juste que la commande :

 rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

ou

 rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

non pas d'effet ca sort toujours ca:

09:02:00.223 -> 2165/165/165 (Wednesday) 165:165:85
09:02:00.223 ->  since midnight 1/1/1970 = 1530661585s = 17715d
09:02:00.223 ->  now + 7d + 12h + 30m + 6s: 2018/7/11 12:16:31
09:02:00.223 ->

l'heure ne change pas la date non plus alors soit le PC ne communique pas sont heure

soit le code n'arrive pas à récupérer l'heure du pc pour mettre à jour le RCT et voyant que dans le COM il y a l'heure afficher avec l'horodatage je pencherai plus pour le code.

Bon si je compile et que la carte n'est pas présente ca donne la même chose :).

étrange ca...

comment être sur que scl et sda sont bien assigné ?

hello
passe un scanner I2C

s’il ne trouve rien, penses à recommencer en croisant les fils SDA et SCL

scaner_I2C_multi-speed (3).zip (1.17 KB)

rien du tout il n'a rien trouver...

Alors dans mon test j'ai utilisé le RTC PCF8523 en 3.3v et 5v et le rtcds1307 en 5v je suis tombé sur cette doc

https://www.mouser.com/pdfdocs/tinytile-Differences.pdf

ou on peut lire :

he following Arduino pins on the Arduino/Genuino 101 are not brought out on tinyTILE: ATN, I/OREF,RESET, 5V, AREF, SDA, SCL. ATN is not used by Arduino 101, IOREF is equivalent to 3.3V, AREF notconnected on Arduino/Genuino 101, SDA and SCL are duplicated on 5 and 6 on both tinyTILE andArduino/Genuino 101.

mais rien de concluant je vais pousser ma recherche sur cette carte ....

Bon bonne nouvelle

Le master i2c SDA SCL sont sur les pates A5 A4

j’ai exécuter ce script :

Sketch: I2CBusScan.ino

 This sketch demonstrates the usage of the Curie Wire Library.
 It scan the I2C bus to find slave devices

 You can see the found I2C slave device shown in serial output
 with the following message:
    address:xxx  found

 created by Intel
 Modified 18 May 2016

 This example code is in the public domain.
*/


#include <Wire.h>

byte startAddress = 1;
byte endAddress   = 127;

void I2CBusScan(byte startAddress, byte endAddress)
{
 byte retval;
 char temp[64];
 for( byte address = startAddress; address <= endAddress; address++ ) {
   Wire.beginTransmission(address);
   retval = Wire.endTransmission();
   sprintf(temp, "address: %-4d%-5s", address, (retval == 0 || retval == 3) ? "found" : "");
   Serial.print(temp);
   Serial.print((address % 4) ? '\t' : '\n');
 }
}

void setup()
{
 // Initialize pin 13 as an output - onboard LED.
 pinMode(LED_BUILTIN, OUTPUT);

 // join i2c bus (address optional for master)
 Wire.begin();

 // initialize Serial communication
 Serial.begin(115200);
 // wait for the Serial port to connect. Open the Serial Monitor to continue executing the sketch
 while(!Serial);
}

boolean toggle = false;          // state of the LED
void loop()
{
 toggle = !toggle;
 digitalWrite(LED_BUILTIN, toggle);
 delay(5000);

 Serial.print("Start I2C Bus Scan from ");
 Serial.print(startAddress);
 Serial.print(" to ");
 Serial.print(endAddress);
 Serial.println(".....");

 I2CBusScan(startAddress, endAddress);

 Serial.println("\ndone");
}

qui m’a donné ceci

12:40:44.098 -> Start I2C Bus Scan from 1 to 127.....
12:40:44.098 -> address: 1         address: 2         address: 3         address: 4        
12:40:44.098 -> address: 5         address: 6         address: 7         address: 8        
12:40:44.098 -> address: 9         address: 10       address: 11       address: 12       
12:40:44.098 -> address: 13       address: 14       address: 15       address: 16       
12:40:44.098 -> address: 17       address: 18       address: 19       address: 20       
12:40:44.132 -> address: 21       address: 22       address: 23       address: 24       
12:40:44.132 -> address: 25       address: 26       address: 27       address: 28       
12:40:44.132 -> address: 29       address: 30       address: 31       address: 32       
12:40:44.132 -> address: 33       address: 34       address: 35       address: 36       
12:40:44.132 -> address: 37       address: 38       address: 39       address: 40       
12:40:44.132 -> address: 41       address: 42       address: 43       address: 44       
12:40:44.167 -> address: 45       address: 46       address: 47       address: 48       
12:40:44.167 -> address: 49       address: 50       address: 51       address: 52       
12:40:44.167 -> address: 53       address: 54       address: 55       address: 56       
12:40:44.167 -> address: 57       address: 58       address: 59       address: 60       
12:40:44.167 -> address: 61       address: 62       address: 63       address: 64       
12:40:44.167 -> address: 65       address: 66       address: 67       address: 68       
12:40:44.201 -> address: 69       address: 70       address: 71       address: 72       
12:40:44.201 -> address: 73       address: 74       address: 75       address: 76       
12:40:44.201 -> address: 77       address: 78       address: 79       address: 80       
12:40:44.201 -> address: 81       address: 82       address: 83       address: 84       
12:40:44.201 -> address: 85       address: 86       address: 87       address: 88       
12:40:44.201 -> address: 89       address: 90       address: 91       address: 92       
12:40:44.235 -> address: 93       address: 94       address: 95       address: 96       
12:40:44.235 -> address: 97       address: 98       address: 99       address: 100      
12:40:44.235 -> address: 101       address: 102       address: 103       address: 104 [b]found[/b]
12:40:44.235 -> address: 105       address: 106       address: 107       address: 108      
12:40:44.235 -> address: 109       address: 110       address: 111       address: 112      
12:40:44.269 -> address: 113       address: 114       address: 115       address: 116      
12:40:44.269 -> address: 117       address: 118       address: 119       address: 120      
12:40:44.269 -> address: 121       address: 122       address: 123       address: 124      
12:40:44.269 -> address: 125       address: 126       address: 127       
12:40:44.269 -> done

je vais essayer de comparé avec ton script qui ne trouve pas le RTC voir dou ca vient

104, c’est 0x68 et c’est bien l’adresse qui est utilisée dans la lib rtc

En faite moi j'ai utilisé Le SDA ET SCL de la carte qui était marqué sur le PCB mais ce sont des slaves .... et le SDA ET LE SCL en master c'est A4 et A5

http://www.farnell.com/datasheets/2241034.pdf?_ga=2.144923964.969150803.1580213255-329506352.1575970503&_gac=1.183016788.1579767435.Cj0KCQiApaXxBRDNARIsAGFdaB_w_TuEytwTs-qtzHBpSD1RuvBKMVLhdrRGNYsDnjm3-NOSWY7RbjAaAnmoEALw_wcB

et surtout ca :

https://www.element14.com/community/servlet/JiveServlet/downloadBody/84365-102-1-362024/tinytile-Pin-Mapping.pdf

je suis horriblement terrifier comme c'était trop bête la prochaine fois je passerai plus de temps a "RTFM" (Read The Fucking Manuel) !

Merci beaucoup d'être resté dans la discutions ! Je vais poursuivre sur le BLE et la carte micro SD :D donc je reviendrai sur ce fil ou j'en ouvrirai un autre