I'm trying to increase LCD refresh rate by doing SPI commands without using SHIFTOUT. There seems to be quite big improvement between code #1 and code #2.
Code #1: Lcd_CLK high time is 3.6us
Code #2: Lcd_CLK high time is 0.8us
This speed increasement is big and you can really notice it visually 
Code #1
Code:
SHiftOUT Lcd_SDA , Lcd_CLK , MSBFIRST, [FC(0),FC(1),FC(2),FC(3),FC(4),FC(5)]
Code #2
Code:
Lcd_SDA = FC.0(7) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(6) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(5) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(4) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(3) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(2) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(1) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(0) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(15) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(14) : Lcd_CLK = 1 : Lcd_CLK = 0
....
....
....
Lcd_SDA = FC.0(47) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(46) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(45) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(44) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(43) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(42) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(41) : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0(40) : Lcd_CLK = 1 : Lcd_CLK = 0
Because Code #2 is quite long (48 lines) and consumes memory, I tried to make it with loops but there I faced big problems.
I tried many different ways but never managed to get it work as Code #2.
Code:
for i = 0 to 5
k=7+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=6+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=5+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=4+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=3+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=2+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=1+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
k=0+8*i : Lcd_SDA = FC.0[k] : Lcd_CLK = 1 : Lcd_CLK = 0
next i
Code:
for i = 0 to 5
Lcd_SDA = FC.0[7+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[6+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[5+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[4+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[3+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[2+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[1+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
Lcd_SDA = FC.0[0+8*i] : Lcd_CLK = 1 : Lcd_CLK = 0
next i
Code:
for k = 0 to 5
for i = (8+(8*k)) to (1+(8*k)) step -1
j = i-1
Lcd_SDA = FC.0(j) : Lcd_CLK = 1 : Lcd_CLK = 0
next i
next k
(Variables i, j and k are bytes)
I have read Melanies guide about Bits, Byte Words and Arrays, which tells how to you can reference to Arrays, etc...
http://www.picbasic.co.uk/forum/show...17&postcount=1
but it didn't help me too much. I have understood that variable in array is OK, am I wrong?
-Gusse-
Bookmarks