Hi
What you can do: Redraw only the upper part of the screen (assuming that no screen rotation is in effect). However this is not very portable and will always be specific to your display. Idea is this:
1. Get the current y position of the current page.
2. Abort the picture loop once the upper part of the display has been redrawn.
Let me assume that you have a 128x64 ST7920 display.
This means your constructor looks like this:
U8GLIB_ST7920_128X64 u8g(18, 16, 17, U8G_PIN_NONE); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
To get the current y coordinate, define the following:
/*
the pb object is (usually) the device name from http://code.google.com/p/u8glib/wiki/device
with "_pb" added at the end.
*/
extern u8g_pb_t u8g_dev_st7920_128x64_sw_spi_pb;
Then, within the picture loop, you can access the upper y position of the current page with: u8g_dev_st7920_128x64_sw_spi_pb.p.page_y0
The modified picture loop will look like this:
u8g.firstPage();
do {
drawFast();
/* check if the upper part has finished */
if ( u8g_dev_st7920_128x64_sw_spi_pb.p.page_y0 >= 16 )
break;
} while( u8g.nextPage() );
Note, that u8g_dev_st7920_128x64_sw_spi_pb.p.page_y0 will have values 0, 8, 16, 24, ... if the page height is 8.
I have added a complete example here:
http://code.google.com/p/u8glib/source/browse/sys/arduino/PartialUpdate/PartialUpdate.pdeOliver