Soy un poco nuevo en electrónica y programación, pero logré poner en funcionamiento un RTC DS1307 cuando solo lo utiliza un programa (estoy usando el código C). Pero si trato de usarlo en varios programas al mismo tiempo, ocasionalmente me da fechas y horas extrañas.
Por ejemplo, estoy usando estos dos programas:
- test.c
#include <stdio.h> #include <stdlib.h> #include <time.h> #include "ABE_ExpanderPi.h" void main() { int i = 0; while( i < 100 ) { struct tm datetime; char buffer[80]; datetime = rtc_read_date(); if (strftime(buffer, sizeof buffer, "%Y/%m/%d;%H:%M:%S", &datetime)) { } else { puts("strftime failed"); exit(1); } printf("%s\n", buffer); i++; usleep(10000); } }
- test2.c
#include <stdio.h> #include <stdlib.h> #include <time.h> #include "ABE_ExpanderPi.h" void main() { int i = 0; while( i < 100 ) { struct tm datetime; char buffer[80]; datetime = rtc_read_date(); if (strftime(buffer, sizeof buffer, "%Y/%m/%d;%H:%M:%S", &datetime)) { } else { puts("strftime failed"); exit(1); } printf("%s\n", buffer); i++; usleep(10000); } }
Las funciones DS1307 se pueden encontrar en ABElectronics_C_Libraries .
Cuando ejecuto ambos al mismo tiempo, me muestra algo como esto:
... 2018/07/11;19:07:53 2018/80/40;05:06:92 2018/80/40;05:06:92 2018/07/11;19:07:53 2018/80/40;05:06:92 2018/07/11;19:07:53 2018/80/40;05:06:92 2018/07/11;19:07:53 2018/80/40;05:06:92 2018/07/11;19:07:53 2018/07/11;19:07:53 2018/07/11;19:07:53 2018/07/11;19:07:53 2018/07/11;19:07:53 2018/07/11;19:07:53 2018/80/40;05:06:92 2041/53/02;90:12:90 2018/07/11;19:07:53 2018/80/40;05:06:92 2018/07/11;19:07:53 2018/80/40;05:06:92 2018/07/11;19:07:53 2018/07/11;19:07:53 ...
En mi proyecto usaré el RTC más de dos veces al mismo tiempo. ¿Puedes ayudarme, por favor?