Here's an example of dynamic data change using the internal EEPROM of a PIC18F4550 (256 bytes).
This gives a negative image of each frame.
I've included the reset routine as well. This is easily ported to Arduino code.
/***** Flip every bit in eeprom then write to AS1130 **************************/
void flipData(void)
{
printf(usb_cdc_putc, "Flipping Data:\r\n");
char i,j;
char data = 0;
char mask = 0b00000111;
char flipped;
for (i = 0; i <= 253; i+=2) //size of eeprom
{
flipped = mask ^ read_eeprom(i);
write_eeprom(i, flipped);
}
i = 254;
flipped = mask ^ read_eeprom(i);
write_eeprom(i, flipped);
mask = 0b11111111;
for (i=1; i <=253; i+=2) //size of eeprom
{
flipped = mask ^ read_eeprom(i);
write_eeprom(i, flipped);
}
printf(usb_cdc_putc, "Data Flipped:\r\n");
write_frame_data();
AS1130_reset();
}
/***** AS1130 Copy Frame Data from EEPROM *************************************/
void write_frame_data(void)
{
char i, j, k;
char data = 0;
for (i=FRAME0; i<=FRAME10; i++)
{
for (j=0x00; j<=0x0B; j++) // 0x00 to 0x0b are the Current Segments in each frame (CS0-CS11)
{
as_config(i, 2*j+1, read_eeprom(data)); // i = frame address, 2*j+1 = CS register address (odd numbers) then second data byte
data++;
as_config(i, 2*j, read_eeprom(data)); // i = frame address, 2*j = CS register address (even numbers) then first data byte
data++;
}
}
}
/***** Restart AS1130 with changed settings ***********************************/
void AS1130_reset(void)
{
bit_clear(SHUTDOWNOPENSHORT_BYTE, 0);
bit_clear(SHUTDOWNOPENSHORT_BYTE, 1);
as_config(CONTROLREGISTER, SHUTDOWNOPENSHORT, SHUTDOWNOPENSHORT_BYTE);
as_config(CONTROLREGISTER, MOVIEMODE, MOVIEMODE_BYTE);
as_config(CONTROLREGISTER, DISPLAYOPTION, DISPLAYOPTION_BYTE);
as_config(CONTROLREGISTER, FRAMETIME, FRAMETIME_BYTE);
as_config(CONTROLREGISTER, PICTURE, PICTURE_BYTE);
as_config(CONTROLREGISTER, MOVIE, MOVIE_BYTE);
bit_set(SHUTDOWNOPENSHORT_BYTE, 0);
bit_set(SHUTDOWNOPENSHORT_BYTE, 1);
as_config(CONTROLREGISTER, SHUTDOWNOPENSHORT, SHUTDOWNOPENSHORT_BYTE);
}
I'll upload a video of this later so you can see the speed etc.