Bug in the AXE134 Serial OLED interface ?

zorgloub

Member
Good evening everyone,

Is there a bug in the AXE134 Series interface program?

When I try to control the outputs C0, C1 and C2 (by playing the 3 lower bits of an output byte) the outputs are not conform to the command.

Example of recommended command: Serout Display, Baud, (255,% 00000010) command to turn on C1.
and Serout Display, Baud, (255,% 00000001) to turn it off and turn on C0 ...

For my part here is what I get:

% 00100000: C1 and C2 ON
% 01000000: All output ON
% 00010000: C2 On
And finally, the command ...% 00000000 does not turn off the outputs!

I also notice that the command following an output check is not executed. (Clear Display + pause 30).

I tested everything at the level of connections and welds and there is no problem on that side!

Has anyone ever used all the possibilities of this module (Data, commands and Aux.Outputs)?

There, I do not understand anything.

I use a 08M2 to drive the serial interface which has an 18M2.
Would the problem come from the slow speed of the 08M2 :confused:

Thanks for your advices.

Code:
#Picaxe 08M2

Symbol Display = C.2
Symbol Baud = N2400_4
symbol Pos = b20


#no_data
#SIMSPEED 150

Pause 2000 'Stabilize Serial Display
Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Pause 1000

Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("Pilotage Original")
Pause 1500
Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Pause 1000

'    TESTING 255 COMMAND
'+++++++++++++++++++++++++++++++

Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit1 = 1")
Serout Display,Baud,(255,%00000010)
Pause 1500

Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit2 = 1")
Serout Display,Baud,(255,%00000100)
Pause 1500

Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit3 = 1")
Serout Display,Baud,(255,%00001000)
Pause 1500


Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit5 = 1")
Serout Display,Baud,(255,%00100000)
Pause 2500

Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit6 = 1")
Serout Display,Baud,(255,%01000000)
Pause 2500


Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit4 = 1")
Serout Display,Baud,(255,%00010000)
Pause 2500


Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit7 = 1")
Serout Display,Baud,(255,%10000000)
Pause 2500

Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("bit0 = 1")
Serout Display,Baud,(255,%00000001)
Pause 1500

Serout Display,Baud,(254,1) : Pause 30 'Clear Display
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("All OFF -------------------")
Serout Display,Baud,(255,%00000000)
Pause 1500

Serout Display,Baud,(254,1) : Pause 30 'Clear Display ---> NOT EXECUTED !!!???

Serout Display,Baud,(254,15) 'Cursor ON
Serout Display,Baud,(254,193)'L2 C2
Serout Display,Baud,("12345",125,127,126)
Pause 1000

'Serout Display,Baud,(COMD,15) 'Cursor ON
Serout Display,Baud,(254,215)'L4 C4
Serout Display,Baud,("ABCDE",126,127,179)
Pause 1000

'Serout Display,Baud,(COMD,15) : Pause 30 'Cursor ON
Serout Display,Baud,(254,150)'L3 C3
Serout Display,Baud,("FGHIJ",222,244,180)
Pause 1000

'Serout Display,Baud,(COMD,15) 'Cursor ON
Serout Display,Baud,(254,128)'L1 C1
Serout Display,Baud,("KLMNO",210,181)
Pause 3000

Serout Display,Baud,(254,1) : Pause 30 'Clear Display

Serout Display,Baud,(254,12) 'No Cursor


'Creation Graphic Charactere

'GG0
Serout Display,Baud,(254,$40)
Serout Display,Baud,($0E,$1B,$11,$11,$11,$11,$11,$1F)' : Battery Level 0 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG1
Serout Display,Baud,(254,$48)
Serout Display,Baud,($0E,$1B,$11,$11,$11,$11,$1F,$1F)' : Battery Level 1 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG2
Serout Display,Baud,(254,$50)
Serout Display,Baud,($0E,$1B,$11,$11,$11,$1F,$1F,$1F)' : Battery Level 2 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG3
Serout Display,Baud,(254,$58)
Serout Display,Baud,($0E,$1B,$11,$11,$1F,$1F,$1F,$1F)' : Battery Level 3 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG4
Serout Display,Baud,(254,$60)
Serout Display,Baud,($0E,$1B,$11,$1F,$1F,$1F,$1F,$1F)' : Battery Level 4 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG5
Serout Display,Baud,(254,$68)
Serout Display,Baud,($0E,$1B,$1F,$1F,$1F,$1F,$1F,$1F)' : Battery Level 5 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG6
Serout Display,Baud,(254,$70)
Serout Display,Baud,($0E,$1F,$1F,$1F,$1F,$1F,$1F,$1F)' : Battery Level 6 in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG7
Serout Display,Baud,(254,$78)
Serout Display,Baud,($01,$1B,$00,$04,$01,$12,$0C,$00)' : Smile in CG7
Serout Display,Baud,(254,128)' : Reinit Address DDRAM


' Call CG
Serout Display,Baud,(254,128)'L1 C1
Serout Display,Baud,("CG 0/7 =",0,1,2,3,4,5,6,7)

Serout Display,Baud,(254,192)'L2 C2
Serout Display,Baud,("CG 8/15=",8,9,10,11,12,13,14,15)

PAUSE 2000
'GG0
Serout Display,Baud,(254,$40)
Serout Display,Baud,($0E,$11,$15,$11,$0E,$04,$0A,$11)' : in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG1
Serout Display,Baud,(254,$48)
Serout Display,Baud,($0E,$15,$0A,$15,$0A,$15,$0A,$15)' :  in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG2
Serout Display,Baud,(254,$50)
Serout Display,Baud,($1B,$1B,$00,$1B,$1B,$00,$1B,$1B)' :  in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG3
Serout Display,Baud,(254,$58)
Serout Display,Baud,($12,$09,$04,$12,$09,$04,$12,$09)' :  CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG4
Serout Display,Baud,(254,$60)
Serout Display,Baud,($09,$12,$04,$09,$12,$04,$09,$12)' :  CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG5
Serout Display,Baud,(254,$68)
Serout Display,Baud,($1F,$04,$15,$15,$1F,$15,$04,$1F)' :  CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG6
Serout Display,Baud,(254,$70)
Serout Display,Baud,($0F,$1E,$1C,$10,$1C,$1E,$0F,$00)' : PacMan Open in CG6
Serout Display,Baud,(254,128)' : Reinit Address DDRAM
'GG7
Serout Display,Baud,(254,$78)
Serout Display,Baud,($0E,$1F,$1F,$1E,$1F,$1F,$0E,$00)' : PacMan Close in CG7
Serout Display,Baud,(254,128)' : Reinit Address DDRAM


PAUSE 2000

Serout Display,Baud,(254,148)'L3 C1
Serout Display,Baud,("CG 0/7 =",0,1,2,3,4,5,6,7)

Serout Display,Baud,(254,212)'L4 C2
Serout Display,Baud,("CG 8/15=",8,9,10,11,12,13,14,15)

PAUSE 1000

DO
 For Pos = 208 to 211
 Serout Display,Baud,(254,Pos)'L2 C19
 Serout Display,Baud,(6)
 pause 150
 Serout Display,Baud,(254,Pos)'L2 C19
 Serout Display,Baud,(7)
 pause 150
 Serout Display,Baud,(254,Pos)
 Serout Display,Baud,(" ")
 next
LOOP
 
Last edited:

neiltechspec

Senior Member
I had that issue, my workaround was to separate the command and data.

Serout Display,Baud,(255,)
Serout Display,Baud,(%00000010)

this works reliably for me.

Seems to be a timing issue on the axe134 s/w

Neil.
 

AllyCat

Senior Member
Hi,

Yes, increasing the transmitted inter-character time delay is the practical solution.

But if you're really interested in seeing how the "bug" might be fixed, then see this thread. ;)

Cheers, Alan.
 

zorgloub

Member
YESSSSS, :D

By breaking the command into two sucessive serouts, it works perfectly!

I think the problem comes from the conditional loop of the 18M2 in the AXE134 (Else If sequences) which is too long and therefore too slow to catch the second term of the single serout command.

Decomposing the serout command into two successive commands "slows down" the process slightly and leaves a little more time to the Axe134.

Strange that this fault then does not appear for commands 254 and data characters.
It is true that the test on the value 255 is placed in the last position. Perhaps that explains that?

Thank you so much for sharing your experience!

AllyCat, I'm going to revise your Post and inspire me a lot.

Thanks for the dynamism and the indispensable quality of this forum!
 
Top