void Adafruit_SSD1306::display(void) { ssd1306_command(SSD1306_COLUMNADDR); ssd1306_command(0); // Column start address (0 = reset) ssd1306_command(127); // Column end address (127 = reset) ssd1306_command(SSD1306_PAGEADDR); ssd1306_command(0); // Page start address (0 = reset) ssd1306_command((SSD1306_LCDHEIGHT == 64) ? 7 : 3); // Page end address if (sid != -1) { // SPI *csport |= cspinmask; *dcport |= dcpinmask; *csport &= ~cspinmask; for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { fastSPIwrite(buffer[i]); //ssd1306_data(buffer[i]); } *csport |= cspinmask; } else { // save I2C bitrate #ifdef __AVR__ uint8_t twbrbackup = TWBR; TWBR = 12; // upgrade to 400KHz! #endif //Serial.println(TWBR, DEC); //Serial.println(TWSR & 0x3, DEC); // I2C for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { // send a bunch of data in one xmission Wire.beginTransmission(_i2caddr); Wire.write(0x40); for (uint8_t x=0; x<16; x++) { Wire.write(buffer[i]); i++; } i--; Wire.endTransmission(); } #ifdef __AVR__ TWBR = twbrbackup; #endif } }
uint8_t RTC_DS1307_SS::isrunning(void) { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(i); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 1); uint8_t ss = Wire.read(); return !(ss>>7); }
void RTC_DS1307_SS::adjust(const DateTime& dt) { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(i); Wire.write(bin2bcd(dt.second())); Wire.write(bin2bcd(dt.minute())); Wire.write(bin2bcd(dt.hour())); Wire.write(bin2bcd(0)); Wire.write(bin2bcd(dt.day())); Wire.write(bin2bcd(dt.month())); Wire.write(bin2bcd(dt.year() - 2000)); Wire.write(i); Wire.endTransmission(); }
void Adafruit_SSD1306::ssd1306_data(uint8_t c) { if (sid != -1) { // SPI //digitalWrite(cs, HIGH); *csport |= cspinmask; //digitalWrite(dc, HIGH); *dcport |= dcpinmask; //digitalWrite(cs, LOW); *csport &= ~cspinmask; fastSPIwrite(c); //digitalWrite(cs, HIGH); *csport |= cspinmask; } else { // I2C uint8_t control = 0x40; // Co = 0, D/C = 1 Wire.beginTransmission(_i2caddr); Wire.write(control); Wire.write(c); Wire.endTransmission(); } }
DateTime RTC_DS1307_SS::now() { Wire.beginTransmission(DS1307_ADDRESS); Wire.write(i); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); uint8_t ss = bcd2bin(Wire.read() & 0x7F); uint8_t mm = bcd2bin(Wire.read()); uint8_t hh = bcd2bin(Wire.read()); Wire.read(); uint8_t d = bcd2bin(Wire.read()); uint8_t m = bcd2bin(Wire.read()); uint16_t y = bcd2bin(Wire.read()) + 2000; return DateTime (y, m, d, hh, mm, ss); }