user58995: Is there a way to detect the start of the OLED screen refresh cycle (V-SYNC) on the SparkFun MicroView? There is no code for this functionality in the Arduino library; in fact it looks like the Arduino library is only set up to send data over SPI to the display, and not receive any data/status back.
Do you know how to access the internal state of the OLED screen directly, by polling some kind of status bit over SPI?
The only datasheet I can find of this OLED screen does not have SPI command details.
Update: here's a movie taken with an iPhone on "slo-mo" video, showing a full screen (all pixels on). There is clearly a screen refresh going on, which interlaces with the video frame rate.


user4143: The scenario you describe is called the Tear Effect. On the SSD1306, which the device you are interested in is based around, a Frame Synchronisation pulse can be emitted on the FR pin.
However it would appear that the specific SSD in use by SparkFun does not provide this pin from the SSD1306 on the external FPC connector, so there is no way of getting it.  Probably owing to the small size of the display a reduced size connector without extra pins like FR was used.
So no, you can't combat the Tear Effect with that display.
There is nothing you can do over SPI, either. That is simply because SPI is just too slow for such things. You would use the FR pin because it's instantaneous.  With SPI you would have to make a request to read a register, then read that register's value back. In that time, coupled with the question of exactly when would the register say it was at the start of a frame, the information would be completely meaningless anyway.

58995: <p>Is there a way to detect the start of the OLED screen refresh cycle (V-SYNC) on the SparkFun MicroView? There is no code for this functionality in the <a href="https://github.com/sparkfun/SparkFun_MicroView_Arduino_Library/blob/V_1.0.0/src/MicroView.cpp" rel="nofollow noreferrer">Arduino library</a>; in fact it looks like the Arduino library is only set up to <em>send</em> data over SPI to the display, and not <em>receive</em> any data/status back.</p>

<p>Do you know how to access the internal state of the OLED screen directly, by polling some kind of status bit over SPI?</p>

<p>The only <a href="https://github.com/sparkfun/SparkFun_MicroView_Arduino_Library/blob/V_1.0.0/extras/OLED-Datasheet_SAS1-02007-A%20UG-6448HLBEG03%20(WiseChip).pdf" rel="nofollow noreferrer">datasheet</a> I can find of this OLED screen does not have SPI command details.</p>

<p>Update: here's a movie taken with an iPhone on "slo-mo" video, showing a full screen (all pixels on). There is clearly a screen refresh going on, which interlaces with the video frame rate.</p>

<p><a href="https://i.stack.imgur.com/qodx6.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qodx6.gif" alt="enter image description here"></a></p>
 4143: <p>The scenario you describe is called the <em>Tear Effect</em>. On the SSD1306, which the device you are interested in is based around, a Frame Synchronisation pulse can be emitted on the FR pin.</p>

<p>However it would appear that the specific SSD in use by SparkFun does <em>not</em> provide this pin from the SSD1306 on the external FPC connector, so there is no way of getting it.  Probably owing to the small size of the display a reduced size connector without extra pins like FR was used.</p>

<p>So no, you can't combat the Tear Effect with that display.</p>

<p>There is nothing you can do over SPI, either. That is simply because SPI is just too slow for such things. You would use the FR pin because it's instantaneous.  With SPI you would have to make a request to read a register, then read that register's value back. In that time, coupled with the question of exactly <em>when</em> would the register say it was at the start of a frame, the information would be completely meaningless anyway.</p>
