Sodele.
Ich hab mal ein wenig weiter geforscht.
Irgendwie kommen sich Display und Wire-Lib wohl in die Quere...der Code
#define DS1307_ADDRESS 0x68
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8
#include "Adafruit_GFX.h"
#include "Adafruit_ST7735.h"
#include "SPI.h"
#include "Wire.h"
#include <MemoryFree.h>
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
int second;
int minute;
int hour;
int weekDay;
int monthDay;
int month;
int year;
int buttonPin=A2;
void setup()
{
pinMode(buttonPin,INPUT_PULLUP);
Wire.begin();
Serial.begin(9600);
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setTextColor(ST7735_RED,ST7735_WHITE);
tft.println("UHR");
delay(10);
}
void loop(){
tft.setTextColor(ST7735_RED,ST7735_BLACK);
tft.println();
tft.print("freier Speicher:");
tft.println(freeMemory());
printDate();
Serial.print("freeMemory()=");
Serial.println(freeMemory());
tft.print("Blab");
delay(1000);
}
byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}
void printDate(){
// Reset the register pointer
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(0);
tft.print("TACK");
Wire.endTransmission();
tft.print("TICK");
Wire.requestFrom(DS1307_ADDRESS, 7);
second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
monthDay = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
//print the date EG 3/1/11 23:59:59
Serial.print(month);
Serial.print("/");
Serial.print(monthDay);
Serial.print("/");
Serial.print(year);
Serial.print(" ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
Serial.print("freeMemory()=");
Serial.println(freeMemory());
}
läuft bis vor die Zeile:
Wire.endTransmission();
das "TACK" kommt auf dem Display noch an, das "TICK" in der übernächsten bereits nicht mehr...das muss der Punkt sein, an dem alles abschmiert...
Jemand eine Idee wie man das umschiffen könnte?