OLED display met ST7789 en MikroBasic

Ja,

Je kunt rustig de chipselect voor en na een groep of commando's of strings aan en uitzetten, maar niet na elke byte (geeft ook veel te veel overhead)
Sommige commando's bestaan uit 2 of 3 bytes, die mogen zeker niet onderbroken worden...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

En dus werd het zo. Werkt ook prima!

pic basic code:

 Program OledSPI_887
'====================================================================================================
' Project name: OledSPI_887
' MCU:          PIC16F887
' Oscillator:   Internal 16 MHz
' Display: Oled SPI 0,96"
' SDO:          PORT C.5                 Pin 24
' CLK:          PORT C.3                 Pin 18
' D/C:          PORT C.7                 Pin 26
' CS:           PORT C.1                 Pin 16
' RES:          High
'====================================================================================================

Const Char6x8 As Byte[570] = (       'Character table
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  ' sp
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,  ' !
0x00, 0x00, 0x07, 0x00, 0x07, 0x00,  ' "
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,  ' #
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,  ' $
0x00, 0x62, 0x64, 0x08, 0x13, 0x23,  ' %
0x00, 0x36, 0x49, 0x55, 0x22, 0x50,  ' &
0x00, 0x00, 0x05, 0x03, 0x00, 0x00,  ' '
0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,  ' (
0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,  ' )
0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,  ' *
0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,  ' +
0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,  ' ,
0x00, 0x08, 0x08, 0x08, 0x08, 0x08,  ' -
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,  ' .
0x00, 0x20, 0x10, 0x08, 0x04, 0x02,  ' /
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,  ' 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,  ' 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46,  ' 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,  ' 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,  ' 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39,  ' 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,  ' 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03,  ' 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36,  ' 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,  ' 9
0x00, 0x00, 0x36, 0x36, 0x00, 0x00,  ' :
0x00, 0x00, 0x56, 0x36, 0x00, 0x00,  ' ;
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,  ' <
0x00, 0x14, 0x14, 0x14, 0x14, 0x14,  ' =
0x00, 0x00, 0x41, 0x22, 0x14, 0x08,  ' >
0x00, 0x02, 0x01, 0x51, 0x09, 0x06,  ' ?
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,  ' @
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,  ' A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,  ' B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,  ' C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,  ' D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,  ' E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,  ' F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,  ' G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,  ' H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,  ' I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,  ' J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,  ' K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,  ' L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,  ' M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,  ' N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,  ' O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,  ' P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,  ' Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,  ' R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31,  ' S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,  ' T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,  ' U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,  ' V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,  ' W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63,  ' X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07,  ' Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43,  ' Z
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,  ' [
0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,  ' \
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,  ' ]
0x00, 0x04, 0x02, 0x01, 0x02, 0x04,  ' ^
0x00, 0x40, 0x40, 0x40, 0x40, 0x40,  ' _
0x00, 0x00, 0x01, 0x02, 0x04, 0x00,  ' '
0x00, 0x20, 0x54, 0x54, 0x54, 0x78,  ' a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,  ' b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20,  ' c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,  ' d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18,  ' e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,  ' f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,  ' g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,  ' h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,  ' i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,  ' j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,  ' k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,  ' l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,  ' m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,  ' n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38,  ' o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,  ' p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,  ' q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,  ' r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20,  ' s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,  ' t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,  ' u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,  ' v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,  ' w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44,  ' x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,  ' y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,  ' z
0x00, 0x10, 0x6C, 0x82, 0x00, 0x00,  ' {
0x00, 0x00, 0x00, 0xFE, 0x00, 0x00,  ' |
0x00, 0x00, 0x00, 0x82, 0x6C, 0x10,  ' }
0x14, 0x14, 0x14, 0x14, 0x14, 0x14)  ' horiz lines

Dim D_C      As sBit At PORTC.7         'pin 26                   'Data/Command
    ClockPin As sbit at PORTC.3         'pin 18                   'Clock
    Datapin  As sbit at PORTC.5         'pin 24                   'SDO
    C_S      As sbit at PORTC.1         'pin 16
    i1 as byte

'====================================================================================================
Sub Procedure Lcd_WrCmd(Dim pCmd As Byte)                       'Write command to display
'====================================================================================================
  D_C = 0
  Spi1_Write(pCmd)
End Sub

'====================================================================================================
Sub Procedure Lcd_WrDat(Dim pDat As Byte)                       'Write data to display
'====================================================================================================
  Dim lCnt As Byte
  D_C = 1
  Spi1_Write(pDat)
End Sub

'====================================================================================================
Sub Procedure Lcd_SetPos(Dim px, py as Byte)                    'Set write position on display
'====================================================================================================
  Delay_us(1)
  Lcd_WrCmd(0xB0 + py)
  Lcd_WrCmd((px  >> 4) Or 0x10)
  Lcd_WrCmd((px And 0x0F))
  delay_us(1)
End Sub

'====================================================================================================
Sub Procedure Lcd_Fill(Dim pFill As Byte)                       'Fill display with character pFill
'====================================================================================================
  Dim lx, ly As Byte
  For ly = 0 To 7
    Lcd_WrCmd(0xB0+ly)
    Lcd_WrCmd(0x00)
    Lcd_WrCmd(0x10)
    For lx = 0 to 127
      Lcd_WrDat(pFill)
    Next lx
  Next ly
End Sub

'==================================================================================================
Sub Procedure Lcd_Char_6x8(Dim px, py, pchar As Byte)           'Write one character
'==================================================================================================
  Dim lIndex As Word
  Lcd_SetPos(px, py)
  lIndex = pChar - 0x20
  lIndex = (lIndex << 2) + (lIndex << 1)                        'Multiply lIndex by 6
  Lcd_WrDat(Char6x8[lIndex+0])
  Lcd_WrDat(Char6x8[lIndex+1])
  Lcd_WrDat(Char6x8[lIndex+2])
  Lcd_WrDat(Char6x8[lIndex+3])
  Lcd_WrDat(Char6x8[lIndex+4])
  Lcd_WrDat(Char6x8[lIndex+5])
End Sub

'========================================================================================
Sub Procedure Lcd_String_6x8(Dim px, py As Byte, Dim ByRef pDisp As String) 'Write string
'========================================================================================
  Dim lLen, lCnt As Byte
  lLen = Length(pDisp)
  For lCnt = 0 To (lLen-1)
    If px > 127 Then px = 0 py = py+1 End If
    Lcd_Char_6x8(px, py, pDisp[lCnt])
    px = px + 6
  Next lCnt
End Sub

'===============================================================================
Sub Procedure Display_Init()
'===============================================================================
  Lcd_WrCmd(0xAF)                                 'Turn OLED panel off
  Lcd_WrCmd(0xA8)                                 'Multiplex ratio set to
  Lcd_WrCmd(0x3F)                                 '63
  Lcd_WrCmd(0xD3)                                 'Display offset RAM counter
  Lcd_WrCmd(0x00)                                 'none
  Lcd_WrCmd(0x40)                                 'Start line address
  Lcd_WrCmd(0xA1)                                 'Set segment remap rotation to left
  Lcd_WrCmd(0xC8)                                 'Common output scan direction
  Lcd_WrCmd(0xDA)                                 'Common signals pad
  Lcd_WrCmd(0x12)                                 'value
  Lcd_WrCmd(0x81)                                 'Contrast control
  Lcd_WrCmd(0xFF)                                 'value
  Lcd_WrCmd(0xA4)
  Lcd_WrCmd(0xA6)                                 'Normal display
  Lcd_WrCmd(0xD5)                                 'Clock ratio:oscillator frequency
  Lcd_WrCmd(0x80)                                 'oooo:rrrr
  Lcd_WrCmd(0x8D)
  Lcd_WrCmd(0x14)
  Lcd_WrCmd(0x00)                                 'Set lower column address
  Lcd_WrCmd(0x10)                                 'Set higher column address
  Lcd_WrCmd(0xD9)                                 '15 clocks, discharge 1 clock
  Lcd_WrCmd(0xF1)                                 'dddd:pppp
  Lcd_WrCmd(0xDB)                                 'Common output voltage
  Lcd_WrCmd(0x40)                                 'level
  Lcd_WrCmd(0x20)                                 'Addressing mode
  Lcd_WrCmd(0x02)                                 'value
  Lcd_WrCmd(0xAE)                                 'Turn OLED panel off
End Sub

'====================================================================================================
Main:                                             'Main program
'====================================================================================================
  TRISC   =  %01111101                            'PORTC.1 and PORTC.7 output
  OSCCON =   %01110000                            '16 Mhz internal

  C_S = 0
  SPI1_Init()
  Delay_ms(100)
  Display_Init()
  Delay_ms(100)

  Lcd_WrCmd(0xAF)                                 'Turn OLED panel on
  LCD_Setpos(0,0)                                 'Set start Position
  LCD_Fill(0x00)                                  'Blank Screen
  
  C_S = 1
  While True

  Delay_ms(500)
  C_S = 0

  LCD_Setpos(0,0)

  Lcd_String_6x8(0,0,"123456789012345678901")
  Lcd_String_6x8(0,1,"123456789012345678901")
  Lcd_String_6x8(0,2,"123456789012345678901")
  Lcd_String_6x8(0,3,"123456789012345678901")
  Lcd_String_6x8(0,4,"123456789012345678901")
  Lcd_String_6x8(0,5,"123456789012345678901")
  Lcd_String_6x8(0,6,"123456789012345678901")
  Lcd_String_6x8(0,7,"123456789012345678901")

  Delay_ms(1000)
  LCD_Setpos(0,0)

  Lcd_String_6x8(0,0,"Nu is het een andere ")
  Lcd_String_6x8(0,1,"tekst die wordt      ")
  Lcd_String_6x8(0,2,"getoond!             ")
  Lcd_String_6x8(0,3,"De letter zijn nog   ")
  Lcd_String_6x8(0,4,"behoorlijk scherp.   ")
  Lcd_String_6x8(0,5,"The Quick Brown Fox  ")
  Lcd_String_6x8(0,6,"Jumps Over The Lazy  ")
  Lcd_String_6x8(0,7,"Dog.                 ")
  
  C_S = 1

 Wend
 
 End.
Plans are nothing, planning is everything. Dwight D. Eisenhower

Ik heb nog een zelfde exemplaar Oled hier, ook SPI en 0,96".
Deze heeft echter 2 kleuren, De eerste 2 regels zijn amber, de overige blauw.
Ik neem aan dat je die kleuren ook kunt sturen? (Er zit geen aparte pin voor).

Plans are nothing, planning is everything. Dwight D. Eisenhower

Nee, da's gewoon gekleurd in het display, daar kun je niks aan veranderen... ;)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Vermoedde ik al.

Dan probeer ik nog wat te spelen met de lichtopbrengst (contrast)
In mijn onschuld dacht ik dat met 0x81 en daarna een waarde het contrast is te regelen.

Maar het ding reageert hier niet op:

--- Loop

pic basic code:

i1 = i1 + 10
  Lcd_WrCmd(0x81)                                 'Contrast control
  Lcd_WrCmd(i1)                                   'value
 
Plans are nothing, planning is everything. Dwight D. Eisenhower

Geen idee,

Ik heb nog nooit aandrang gehad om het kontrast te verminderen... (hoe meer hoe beter...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ik vind de lichtopbrengst nl inderdaad te zwak. Daarom wilde ik het verhogen. je zou volgens de datasheet een waarde tussen 0x00 en 0xFF moeten kunnen geven, maar elke waarde geeft hetzelfde resultaat.

Plans are nothing, planning is everything. Dwight D. Eisenhower

Dan heb ik hier NOG een Oled (TFT scherm) , dat lijkt wel een kruising tussen de I2C en SPI. Volgens de achterzijde is het SPI.

Een SDA, SCL pin (I2C dus), maar ook een DC en RES (en BLK?)

Soms worden de benamingen ook wel eens door elkaar gehaald heb ik al gemerkt. Dan noemt met het CLK, dan Weer SCL.

Plans are nothing, planning is everything. Dwight D. Eisenhower
Plans are nothing, planning is everything. Dwight D. Eisenhower

Dan heb ik hier NOG een Oled (TFT scherm) , dat lijkt wel een kruising tussen de I2C en SPI. Volgens de achterzijde is het SPI.
Een SDA, SCL pin (I2C dus), maar ook een DC en RES (en BLK?)

Ze maken meestal maar 1 printje voor i2c en spi. Wat voor text er bij de pinnen staat moet je dan ook niet zo op letten...
Voor aansturen heb je flink wat meer geheugen nodig. (8x zoveel pixels en dat in 3 kleuren...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

En die kleuren dat is de BLK pin?

Plans are nothing, planning is everything. Dwight D. Eisenhower

Ondertussen heb ik de contrast wijziging ook aan de praat met de Set Contrast Control:

pic basic code:

Lcd_WrCmd(0x81)                                 'Contrast control

gevolgd door een waarde.
Ondanks dat je 256 niveaus kan instellen, is het effekt minimaal. Zou ook aan de fabrikant kunnen liggen, vermoed ik.

Ik vind het overigens nog steeds heel leuk dat je voor een extreem laag bedrag toch zo'n schermpje kan gebruiken, met toch nog een verrassend goed beeld.

de PIC16F887 heeft maar 1 MSSP begreep ik. Dat zou inhouden dat je óf voor SPI óf voor I2C moet kiezen (als je er bv een extra device I2C aan wilt hangen voor bv een klokje, temp o.i.d dan kan dat niet).
Het zij zo... :)

Plans are nothing, planning is everything. Dwight D. Eisenhower

Voor kleuren moet je de RGB waardes opgeven voor een groep van 3 pixels. (rood, groen, en blauw. Zo ontstaat de gewenste kleur)

[Bericht gewijzigd door Arco op 3 april 2020 12:44:08 (11%)]

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Even nog een klein worstelingetje met het OSCCON register in de 1847:

pic basic code:

5.6 Register Definitions: Oscillator Control
REGISTER 5-1: OSCCON: OSCILLATOR CONTROL REGISTER
R/W-0/0 R/W-0/0 R/W-1/1 R/W-1/1 R/W-1/1 U-0 R/W-0/0 R/W-0/0
SPLLEN IRCF<3:0> &#8212; SCS<1:0>
bit 7 bit 0
Legend:

R = Readable bit W = Writable bit U = Unimplemented bit, read as &#8216;0’
u = Bit is unchanged x = Bit is unknown -n/n = Value at POR and BOR/Value at all other Resets
&#8216;1’ = Bit is set ‘0’ = Bit is cleared
bit 7 SPLLEN: Software PLL Enable bit
If PLLEN in Configuration Words = 1:
SPLLEN bit is ignored. 4x PLL is always enabled (subject to oscillator requirements)
If PLLEN in Configuration Words = 0:
1 = 4x PLL Is enabled
0 = 4x PLL is disabled
bit 6-3 IRCF<3:0>: Internal Oscillator Frequency Select bits
000x = 31 kHz LF
0010 = 31.25 kHz MF
0011 = 31.25 kHz HF(1)
0100 = 62.5 kHz MF
0101 = 125 kHz MF
0110 = 250 kHz MF
0111 = 500 kHz MF (default upon Reset)
1000 = 125 kHz HF(1)
1001 = 250 kHz HF(1)
1010 = 500 kHz HF(1)
1011 = 1MHz HF
1100 = 2MHz HF
1101 = 4MHz HF
1110 = 8 MHz or 32 MHz HF(see Section 5.2.2.1 &#8220;HFINTOSC”)
1111 = 16 MHz HF
bit 2 Unimplemented: Read as &#8216;0’
bit 1-0 SCS<1:0>: System Clock Select bits
1x = Internal oscillator block
01 = Timer1 oscillator
00 = Clock determined by FOSC<2:0> in Configuration Words.
Note 1: Duplicate frequency derived from HFINTOSC.

Het gaat met name om de laatste 2 bits (bits 1-0). Als ik nu 8Mhz frequentie wil, Is het dan

OSCCON =%01110010 of %01110000 ?

Plans are nothing, planning is everything. Dwight D. Eisenhower

Kan beide. Bij '1' wordt altijd de interne oscillator gebruikt, bij '0' hangt dat af van de config setting.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ik heb nog een foutje / onjuistheid ontdekt in mijn eigen programma:

(Even checken of ik het juist heb):

pic basic code:

Dim D_C      As sBit at LATB.0           'pin 6                   'Data/Command
    ClockPin As sbit at PORTB.4          'pin 10                   'Clock
    Datapin  As sbit at PORTB.2          'pin 8                    'SDO
    C_S      As sbit at LATA.4           'pin 3                    'Chip Select
    RES      As sbit at LATB.3           'pin 9                    'RESET

Voor de C_S, RES en D/C stond PORT maar moet volgens mij LAT zijn voor de PIC16F1847, omdat het hier output betreft.

Dan had ik de CS aan LATB.1 gekoppeld, omdat ik dacht dat die "vrij" was. Maar ik merkte dat na de SPI1_Init() het moeilijk was om deze poort op logisch hoog te krijgen.
In de Datasheet van de 1847 lees ik dat B.1 ook wordt gebruikt voor de SPI (SDI1).

Daarom leek het me beter een echt 'vrije poort' te kiezen, c.q. A.4

Plans are nothing, planning is everything. Dwight D. Eisenhower

Wat ik me tevens afvroeg: de 1847 heeft twee keer I2C en SPI aan boord.
Maar sommige pinnen zijn gecombineerd.
Zo zie je bijvoorbeeld dat aan Poort B.4 zowel de SCL als SCK wordt toegekend.

Maar mag je wanneer je SPI EN I2C beide gebruikt in een programma, dezelfde pin gebruiken als clock voor SPI én I2C?

Zo nee,dan zou je dus alleen maar 1 keer SPI en 1 keer I2C kunnen gebruiken (en dan ook nog met APFCON poorten aan het verschuiven gaan).

Plans are nothing, planning is everything. Dwight D. Eisenhower

Tja,

Als je SPI en I2C beide gebruikt is dat al ongewoon in zo'n klein controllertje. (veel peripherals zijn in i2c en spi te koop)
En de kans dat iemand meer als 1 spi of i2c bus nodig heeft is ook al heel erg klein.

Beter dan een grotere met meer pinnen nemen, dan heb je meer mogelijkheden.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Beter dan een grotere met meer pinnen nemen, dan heb je meer mogelijkheden.

Wat zou dan een redelijk alternatief zijn, die je echter nog wel in een breadbord kan plaatsen?

Plans are nothing, planning is everything. Dwight D. Eisenhower

Nog een issue met het APFCON register en de 1847:

Met APFCON0 = %01000000 verplaats je SDO1 naar Poort A.6
(Default = B.2)

Maar op A.6 zit ook de CLKOUT. Kan dat dan wel?
(het werkt ook idd niet)

Plans are nothing, planning is everything. Dwight D. Eisenhower

Je kunt clkout toch gewoon uitzetten? (gebruikt toch bijna niemand)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 4 april 2020 20:01:10 schreef Arco:
Je kunt clkout toch gewoon uitzetten? (gebruikt toch bijna niemand)

Ik heb Ckock Out Disabled in de Project Settings...

[Bericht gewijzigd door Bavelt op 5 april 2020 00:48:38 (14%)]

Plans are nothing, planning is everything. Dwight D. Eisenhower
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Ik heb Ckock Out Disabled in de Project Settings...

Is dat niet hetzelfde?

Plans are nothing, planning is everything. Dwight D. Eisenhower
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com