This commit is contained in:
Mr.Blinky 2020-04-25 17:44:22 +02:00 committed by GitHub
parent c9fc1f821c
commit 65193c1e07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 2 deletions

View File

@ -205,7 +205,6 @@ void Arduboy2Core::bootPins()
// Port C // Port C
// Speaker: Not set here. Controlled by audio class // Speaker: Not set here. Controlled by audio class
// Port D INPUT_PULLUP or HIGH // Port D INPUT_PULLUP or HIGH
PORTD = ( PORTD = (
#if defined(AB_ALTERNATE_WIRING) #if defined(AB_ALTERNATE_WIRING)
@ -428,6 +427,7 @@ void Arduboy2Core::i2c_sendByte(uint8_t byte)
" brne 1b \n" // initial set carry will be shifted out after 8 loops setting Z flag " brne 1b \n" // initial set carry will be shifted out after 8 loops setting Z flag
" \n" " \n"
" out %[port], %[sda0] \n" // clear SDA for ACK " out %[port], %[sda0] \n" // clear SDA for ACK
" nop \n" // extra delay
" sbi %[port], %[sclb] \n" // set SCL (extends ACK bit by 1 cycle) " sbi %[port], %[sclb] \n" // set SCL (extends ACK bit by 1 cycle)
" cbi %[port], %[sclb] \n" // clear SCL (extends SCL high by 1 cycle) " cbi %[port], %[sclb] \n" // clear SCL (extends SCL high by 1 cycle)
:[byte] "+r" (byte) :[byte] "+r" (byte)
@ -621,7 +621,7 @@ void Arduboy2Core::paintScreen(uint8_t image[], bool clear)
"2: \n" "2: \n"
" out %[port], %[sda0] \n" // preemtively clear SDA " out %[port], %[sda0] \n" // preemtively clear SDA
" brcc 3f \n" // skip if dealing with 0 bit " brcc 3f \n" // skip if dealing with 0 bit
" out %[pin], %[sda] \n" " out %[pin], %[sda] \n" // toggle SDA on
"3: \n" "3: \n"
" out %[pin], %[scl] \n" // toggle SCL on " out %[pin], %[scl] \n" // toggle SCL on
" lsl r0 \n" // next bit to carry (moved here for 1 extra cycle delay) " lsl r0 \n" // next bit to carry (moved here for 1 extra cycle delay)
@ -630,6 +630,7 @@ void Arduboy2Core::paintScreen(uint8_t image[], bool clear)
" \n" " \n"
" out %[port], %[sda0] \n" // clear SDA for ACK " out %[port], %[sda0] \n" // clear SDA for ACK
" subi %A[len], 1 \n" // len-- part1 (moved here for 1 cycle delay) " subi %A[len], 1 \n" // len-- part1 (moved here for 1 cycle delay)
"nop\n"
" out %[pin], %[scl] \n" // set SCL (2 cycles required) " out %[pin], %[scl] \n" // set SCL (2 cycles required)
" sbci %B[len], 0 \n" // len-- part2 (moved here for 1 cycle delay) " sbci %B[len], 0 \n" // len-- part2 (moved here for 1 cycle delay)
" out %[pin], %[scl] \n" // clear SCL (2 cycles required) " out %[pin], %[scl] \n" // clear SCL (2 cycles required)