Hallo,

Ik ben bezig met een transceiver besturing te maken met een 16f8777 nu kom ik het volgende probleem tegen...
Ergens heb ik de volgende JAL code die niet werkt


PROCEDURE SCANBAND()   IS               ;SCAN TUSSEN 2 FREQS

STARTSCAN = 80                           ;START CH#
STOPSCAN = 120                           ;STOP CH#

if (PLLCHCOUNT<=STOPSCAN)  then PLLCHCOUNT = PLLCHCOUNT + 1 ;CH hoger
                           else PLLCHCOUNT = STARTSCAN      ;CH begin
                           end  if

end PROCEDURE


MAAR WAT WEL WERKT ZONDER VARIABLEN


PROCEDURE SCANBAND()   IS               ;SCAN TUSSEN 2 FREQS


if (PLLCHCOUNT<=120)  then PLLCHCOUNT = PLLCHCOUNT + 1 ;CH hoger
                      else PLLCHCOUNT = 80             ;CH begin
                      end  if

end PROCEDURE

Iemand een idee ??? .....dit is zo frustrerend ;((

STOPSCAN = 120 :STOP CH#

Hier staat een dubbele punt ipv punt comma

[Bericht gewijzigd door Zylar op (40%)]

SORRY Zylar dit is niet de fout..ik had het commentaar later toegevoegt voor de leesbaarheid op het forum...overigens de compiler geeft in beide procedures geen errors ( als de ; wel juist zijn)

[Bericht gewijzigd door semtex op (11%)]

Hoef je in JAL je variabelen niet te declareren?
Je zegt dat het niet werkt, maar wat werkt er dan niet of wat gebeurt er nog wel?

De variablen zijn al declarereert ergens in begin van het programma ..ik post alleen de procedure anders wordt zoveel.

STARTSCAN verwijst naar 145.000 mhz (80 x 12500 ) + 144 mhz
STOPSCAN verwijst naar 145.500 mhz (120 x 12500) + 144 mhz

Ergens anders in het programma wordt PLLCHCOUNT gebruikt om de juiste deler waarden te berekenen voor de pll.

De bovenste procedure gaat echter scannen van 144.000 tot 144.0125 mhz

DE onderste procedure gaat scannen tussen 145.000 mhz en 145.500 mhz

STARTSCAN en STOPSCAN worden alleen in deze procedure gebruik en nergens anders ,behalve dan waar ze hun waardes krijgen ergens in de MAIN.

WAAROM DOEN BIJDE PROCEDURES NIET HET ZELFDE EN HET JUISTE ???

Mod-edit: Waarom gaan we schreeuwen?

[Bericht gewijzigd door Henry S. op (43%)]

je zegt vage foutmelding..
Maar waar/wat is deze ?

[Bericht gewijzigd door falaigai op (10%)]

- Kan je de code geven inclusief de declaractries van de variabelen?

- ligt het verschil aan STARTSCAN of aan STOPSCAN?

- je zegt dat de var's elders niet gebruik worden. hoed werkt het als je in het eerste geval de var's lokaal declareert?

[Bericht gewijzigd door Wouter van Ooijen op (34%)]


;MAIN T813  in 12,5khz
;test frequentie 145.4750  ->124.075
;144 tot 146 mhz  zenden
;122,6 tot 124.6 lo  ontvangen

;LET OP ALLES WERKR IN DEZE BESTURING MET 160 KANAAL NUMMER 144 MHZ TO 146 MHZ
;                 !!ALLES IS HIER UIT ALGELEID !!!

;HET HOOFD PROGRAMMA SCHIJFT DISPLAY,SCHRIJFT PLL INDIEN PLLchCOUNT IS GEWIJZIGT EN WACHT OP INPUT
;HET EEPROM geheugen bevat een shaduw van de RAM geheugen De procedure LAADEPROM2RAM laat de geheugen waardes  naar RAM


;************** spi routine ****************
include 16f877_bert
gie = 0
;-------------deler waarden voor 2 meterband 144.000 -  146.000------
var byte
STARTSCAN = 80 ,         ;VAR VOOR START KANAAL SCANNEN
STOPSCAN = 159 ,          ;VAR VOOR STOP KANAAL SCANNEN
PLLBNOWS= 0x74 ,      ; actuele word in de de deler 145.475
PLLANOWS= 0x26 ,
PLLBNOWR= 0x63 ,      ; actuele word in de de deler
PLLANOWR= 0x1A ,
PLLCHCOUNT =  118 ,    ;kanaal nummer voor index  teller tabel array !! het gaat om het onvangst kanaal !!! ivm evt SHIFT bij zenden
BYTETOSEND  = 0      ;var voor sendbyte routine

VAR BYTE kanaalnaarpll_RNOW = 119 ; waarden anders dan PLLCHCOUNT zodat routine zie dat deze moet worden geupdate
                                  ; variable is bedoelt om bij te houden of de funtie kanaalnaarpll_R()
                                  ;niet ovewr bodig is om uit te voeren
VAR BYTE MEMSCANBANK[10] = {128,29,80,131,132,133,134,135,136,137} ; EERSTE ellement DEFAULT CH bij aanzetten DE REPEATER KANALEN
VAR BYTE MEMSCANINDEX = 0 ; TELLER SCANNER
VAR BYTE FREQTEXT[8] = {"1","4","5",".","4","7","5","0"}                ;string arrray voor display
VAR BIT  SEND = 0         ; bit welke hoog is tijdens zenden
VAR BIT  SHIFT = 0       ;bit welke actuele waarde shift aan geeft (SHIFT==1 >> -600khz)
VAR BIT  UP_DOWN = 1     ; BIT = 1 OMHOOG SCANNEN BIT = 0 NAAR BENEDEN SCANNEN
;VAR BIT  drie,vier,vijf,zes,zeven


;ini pic
TRISb = OUTPUT
TRISC = OUTPUT    ;later anders
TRISD = OUTPUT    ;Chip enable lijnen
PORTD = 0x00


delay_1ms(15)

ASM BCF PORTd,1  ;rs  Display


;*********** spi ini ******************
GIE = 0
SSPEN = 0

SMP = 1
CKE = 1             ;welke flank
CKP = 0             ;idle waarde  klok

SSPM3 = 0   ;  VOOR FREQ KLOK
SSPM2 = 0
SSPM1 = 0   ;64
SSPM0 = 1  ; 16   BIJ HOGERE KLOK TREED ER ERNSTIGE VERVORMING OP IN DE DIGI PULSEN


sspen = 1

;*************************************************************************
PROCEDURE PULS() IS
asm bSf portB,6
DELAY_1ms(1)
asm bCf portB,6
DELAY_1ms(1)
END PROCEDURE
;*************************************************************************




;***************************************
procedure sendbyte is

;GIE = 0              ;interups  uit

SSpif = 0          ;flag  interupt  1 als data verzonden
sspbuf  = bytetosend   ;start zenden comando
WHILE (sspif==0)   loop end  loop   ;Zolang nul wordt er no data verzonden
;GIE =  1
end procedure
;***************************************


procedure kloknaaruitgang() is
ASM BSF PORTD,3    ;klok  naar de data naar uitgangnen 4094
ASM BCF PORTD,3
delay_1ms(8) ;ff wachteb       !!!!! de grote hiervan nog bepalen bij grote freq sprong 2 mhz

end procedure

;****************************************************************************
;haal actuele deler insteligen op en  SCHIJF de juiste deler waarde naar pll voor zenden
;en klok voor de 4094 dus

procedure SCHIJFPLLWORD_S is

BYTETOSEND =  PLLBNOWS
sendbyte()
BYTETOSEND =  PLLANOWS
sendbyte()

kloknaaruitgang()

 end procedure
;*******************************************************************************


;****************************************************************************
;haal actuele deler insteligen  op en  SCHIJF de juiste deler waarde naar pll voor ontvangen
;en klok voor de 4094 dus

procedure SCHIJFPLLWORD_R is

BYTETOSEND =  PLLBNOWR
sendbyte()
BYTETOSEND =  PLLANOWR
sendbyte()

kloknaaruitgang()

end procedure

;***********************************************************************
;Dexe procedure zet het kanaal nummer  om in de juiste deler instelingen
;voor ontvangst  en schrijft ze naar de actuele pll deler instelingen register
;PLLBNOWR en PLLANOWR  en roep dan de routime aan op deze in de pll zet zetten
Procedure kanaalnaarpll_R() is
VAR byte B
var byte BTEL = 98,    ;144000mhz start waardes
         ATEL = 08     ;"                      "
B = 0                  ;lus teller
WHILE(B!=PLLCHCOUNT)   loop
                       ATEL =  ATEL + 1
                       if (ATEL==100) then BTEL = BTEl + 1
                                           ATEL = 0
                       else  end if
                       B = B + 1
                       end loop
PLLBNOWR = BTEL
PLLANOWR = ATEL

schijfpllword_R()       ;EN SCHRIJF NAAR PLL
kanaalnaarpll_RNOW = PLLCHCOUNT ; ververs zodat te zien is dat deze routine al gedaan is
end procedure
;***********************************************************************

PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ
STARTSCAN = 80
STOPSCAN = 120
; !!up_down kan door rotery scan richting bepalen
if (PLLCHCOUNT<=120)  then PLLCHCOUNT = PLLCHCOUNT + 1
                           else PLLCHCOUNT = 80
                           end  if

end PROCEDURE

;*******************************************************************
;Geheugen bank scan Array van 10 ellement (   10 geheugens)
PROCEDURE MEMSCAN() IS

PLLCHCOUNT = MEMSCANBANK[MEMSCANINDEX]
MEMSCANINDEX = MEMSCANINDEX + 1
IF (MEMSCANINDEX>9) THEN MEMSCANINDEX = 0   ;WANT TELLER INDEX  0 TOT 9 = 10
                    ELSE END  IF
end PROCEDURE
;**********************************************************************

;**********************************************************************
;kanaal omhoog
PROCEDURE UP1CH() IS
PLLCHCOUNT = PLLCHCOUNT + 1
IF  (PLLCHCOUNT>=160) THEN PLLCHCOUNT = 0
                      ELSE END IF
end PROCEDURE
;**********************************************************************

;**********************************************************************
;kanaal omlaag
PROCEDURE DOWN1CH() IS
IF  (PLLCHCOUNT==0) THEN PLLCHCOUNT = 160
                    ELSE END IF
PLLCHCOUNT = PLLCHCOUNT - 1
end PROCEDURE
;**********************************************************************




;**********************************************************************
;stuur comamdo naar lcd 4780
PROCEDURE SENDCMDLCD() IS
asm bcf portd,1    ;het gaat om comando

SENDBYTE()

ASM BSF PORTD,2    ;klok  naar de data naar uitgangnen 4094
ASM BCF PORTD,2

ASM BSF PORTD,0    ;enable bit hoog  klok in het lcd   !!!! kan dit kleiner !!!!!
delay_1ms(1)
ASM BCF PORTD,0    ;weer laag

end PROCEDURE
;**********************************************************************


;**********************************************************************
;stuur charter  naar lcd 4780
PROCEDURE SENDCHARLCD() IS
asm bsf portd,1    ;het gaat om character

SENDBYTE()

ASM BSF PORTD,2    ;klok  naar de data naar uitgangnen 4094
ASM BCF PORTD,2

ASM BSF PORTD,0    ;enable bit hoog  klok in het lcd   !!!! kan dit kleiner !!!!!
delay_1ms(1)
ASM BCF PORTD,0    ;weer laag

end PROCEDURE
;**********************************************************************

;**********************************************************************
PROCEDURE INILCD() IS
bytetosend = 0x38
sendcmdlcd()
bytetosend = 0x0e
sendcmdlcd()
bytetosend= 0x06
sendcmdlcd()
bytetosend = 0x01
sendcmdlcd()
delay_1s(1)
bytetosend = 0b10000011
sendcmdlcd()
end PROCEDURE
;**********************************************************************


;***************************************
;Als er gezonden word de zend frequentie en anders de onvangst

procedure FREQ2DISPLAY() is
VAR word KANAALmaalRaster                     ;0-80 X 125
VAR byte Teller,AantalSUBTRACTIES
if ((SHIFT==1)&(SEND==1))  then  Teller =  PLLCHCOUNT - 48 ; - 600khz idien nodig alleen tijdens zenden uitgevoert
                           else  Teller =  PLLCHCOUNT   end if

if  (teller<80)  then  FREQTEXT[2] = "4"  else end if
if  (teller>=80) then  FREQTEXT[2] = "5"  Teller = teller - 80  else end if

Kanaalmaalraster = TEllER
Kanaalmaalraster = Kanaalmaalraster * 125

AantalSUBTRACTIES = 0
While (Kanaalmaalraster>=1000) loop
                              Kanaalmaalraster = Kanaalmaalraster - 1000
                              AantalSUBTRACTIES = AantalSUBTRACTIES + 1
                              end loop
FREQTEXT[4] = AantalSUBTRACTIES + 48

AantalSUBTRACTIES = 0
While (Kanaalmaalraster>=100) loop
                              Kanaalmaalraster = Kanaalmaalraster - 100
                              AantalSUBTRACTIES = AantalSUBTRACTIES + 1
                              end loop
FREQTEXT[5] =AantalSUBTRACTIES + 48

AantalSUBTRACTIES = 0
While (Kanaalmaalraster>=10)  loop
                              Kanaalmaalraster = Kanaalmaalraster - 10
                              AantalSUBTRACTIES = AantalSUBTRACTIES + 1
                              end loop
FREQTEXT[6] = AantalSUBTRACTIES + 48

if  (Kanaalmaalraster==5) then  FREQTEXT[7] = "5"  else end if
if  (Kanaalmaalraster==0) then  FREQTEXT[7] = "0"  else end if


bytetosend = 0b10000011        ;positie op scherm
sendcmdlcd()
var byte xx = 0
while (xx<8) loop              ;shrijf text
bytetosend = FREQTEXT[xx]
sendcharlcd()
xx = xx + 1
end loop




end procedure
;*********************************************************************************


;***************************************
; KOPIEEER DE GEGEVENS UIT EEPROM NAAR WERK GEHEUGEN (ram)
; ADRESS 0 ->  FREQUENTIE ALS T813 AAN GAAT =  PLLCOUNT
; ADRESS 32 -> TABEL 10 GEHEUGEN KANALEN
; ADRESS 64 -> CALL GEBRUIKER
; ADRESS 98 -> SCAN FUNTIE START CH# EN STOP CH#
; ADRESS 128 ->
procedure EEPROM2RAM() is
var byte adresscount = 0

PLLCHCOUNT = Data_EEprom(0)

adresscount = 32
While(adresscount<42) loop
                      MEMSCANBANK[adresscount-32] = Data_EEprom(adresscount)
                      adresscount  = adresscount + 1
                      end  loop
adresscount = 64
;While(adresscount<71) loop
 ;;                     CALL[adresscount-64] = Data_EEprom(adresscount)
   ;;                   adresscount  = adresscount + 1
     ;                 end  loop

 STARTSCAN =  Data_EEprom(98)
 STOPSCAN  =  Data_EEprom(99)

end procedure
;*********************************************************************************

;******************************************************
;FUNCTIE WORDT AAN GEROEPEN NAAR HET DRUKKEN VAN ENTER
; KOPIEEER DE GEGEVENS UIT RAM NAAR EEPROM
; ADRESS 0 ->  FREQUENTIE ALS T813 AAN GAAT =  PLLCOUNT
; ADRESS 32 -> TABEL 10 GEHEUGEN KANALEN
; ADRESS 64 -> CALL GEBRUIKER
; ADRESS 98 -> SCAN FUNTIE START CH# EN STOP CH#
; ADRESS 128 ->
procedure RAM2EEPROM () is
var byte adresscount = 0

Data_EEprom_write(0,PLLCHCOUNT)

adresscount = 32
While(adresscount<42) loop
                      Data_EEprom_write(adresscount,MEMSCANBANK[adresscount-32])
                      adresscount  = adresscount + 1
                      end  loop
adresscount = 64
;While(adresscount<71) loop
 ;                     Data_EEprom_write(adresscount,CALL[adresscount-64])
  ;                    adresscount  = adresscount + 1
   ;                   end  loop

Data_EEprom_write(98,STARTSCAN)
Data_EEprom_write(99,STOPSCAN)

end procedure
;*********************************************************************************

;EEPROM2RAM()   ;laad de  gebruiker gegevens uit  het EEprom
INILCD()
;RAM2EEPROM ()
;********************** MAIN LOOP  ********************************
WHILE (TRUE) loop
;knaalnaarpll_S deze procedure zal iets uitgebruider zijn  omdat hier ook naar SHIFT -600KHZ GEKEKEN MOET WORDEN

if (PLLCHCOUNT!=kanaalnaarpll_RNOW) then kanaalnaarpll_R  else end if  ;bereken de pll istelingen ONTVANGST de waades
                                                                       ;PLLBNOWR EN PLLANOWR idien nodog   en schrijf deze naar pll
FREQ2DISPLAY ()
;PLLCHCOUNT = PLLCHCOUNT + 1

delay_10ms(10)
SCANBAND()
STARTSCAN = 80
STOPSCAN = 120
;STARTSCAN = 80 ,         ;VAR VOOR START KANAAL SCANNEN
;STOPSCAN = 159           ;VAR VOOR STOP KANAAL SCANNENSCANBAND()
;FREQ2DISPLAY ()

end loop

Probleem treed op met STARTSCAN EN STOPSCAN .... STARTSCAN WORDT STEEDS 0 op een af andere manier en STOPSCAN 1 . In het geval dat dat ik voor STARTSCAN 80 in vul en STOPSCAN ALS VARIABLE gebruik gaat de routine ook niet goed ..DE routine werkt alleen als ik geen variablen gebruik .... maar dan kan ik deze niet wijzigen en de routine niet echt nuttig

VEEL DANK voor je reactie iig !!!

[Bericht gewijzigd door Henry S. op (1%)]

> ASM BCF PORTd,1 ;rs Display

doe dat iig niet, zo werk je om de port shadow heen

==========================

je zegt dat de waarden 0 en1 worden, maar hoe weet je dat?

[Bericht gewijzigd door Wouter van Ooijen op (36%)]

bedankt voor je reactie .... 0 en 1 vermoed ik om dat hij dan gaat scannen tussen 144.000 en en stap verder 144.0125 ..dit komt overeen met 0 en 1

Nu moet ik je helaas wel vragen wat een port shadow is ?? Wat is dan de wel de juist manier ?? want ik vond dit juist een mooie korte methode in assembly

Vind jij het niet raar dat een variable met bijvoorbeeld waarde 80 en een vaste waarde van 80 niet het zelfde doen in mijn routine ?

ik heb alle ASM BCF PORTd,1 vervangen door pin_D1 = low ...en alle andere poort bit wijzigingen die ik in assembly had ook ..is nu het shadow probleem opgelost ??
Het probleeem met de variablen in me procedure scanband() bestaat nog steeds.

[Bericht gewijzigd door Henry S. op (22%)]

Hoe weet je zo zeker dat die waarden op 1 en 0 worden gezet, is dat een directe waarneming of een deductie?

Dat is deductie omdat ik wel kan horen dat de zender naar een bepaalde frequentie gaat ,die met deze waardes in overeen stemming zijn. Ik wil je echter wijzen op iets vreemds ,het volgende


PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ


if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
                                       ;   PULSOP6()


                                           bytetosend =  STOPSCAN
                                           sendcharlcd()
                                            ;delay_100ms(1)

                     else PLLCHCOUNT = STARTSCAN
                      ;if (STARTSCAN==0) then  PULSOP7() else end if

                                          bytetosend =   STARTSCAN
                                          sendcharlcd()
                                             ;delay_100ms(10)

                           end  if

Als ik dat toevoeg om te debuggen doet hij het goed !

end PROCEDURE

Ik zie niet meteen wat je toevoegd, maar zou het niet iets met de SPI timing te maken kunnen hebben?

En deze procedure
met STARTSCAN = 80 en STOPSCAN 120


PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ

if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1

                                         bytetosend =  STOPSCAN
                               

                          else PLLCHCOUNT = STARTSCAN
                          end  if
end PROCEDURE

werkt "een beetje" ,daarmee bedoel ik te zeggen dat PLLCOUNT wel gewijzigt wordt als PLLCOUNT>STOPSCAN ("hij komt goed in het else gedeelte) maar wijzigt vervolgens PLLCOUNT niet naar STARSCAN maar naar 0. (De boven grens werkt wel)

ECHTER

met STARTSCAN = 80 en STOPSCAN 120


PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ


if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1

                                         bytetosend =  80

                           else PLLCHCOUNT = STARTSCAN

                           end  if

end PROCEDURE

Nu werkt hij zodat PLLCOUNT wisselt tussen nul en 1
Het is toch raar dat de variable bytetosend invloed heeft op deze routine en dan ook nog met wisselende effecten nagelang zijn waarde ?

Als je er code tags omheen zet, en niet steeds 10 lege regels ertussen, dan wordt alles tenminste leesbaar...

Zou je me een kunnen zeggen waar ik dan aan moet denken als je zegt spi timing?

je zegt; "Ik zie niet meteen wat je toevoegd,"

ik voeg toe in if deel

 bytetosend = STOPSCAN
 sendcharlcd()

else deel

  bytetosend = STARTSCAN
  sendcharlcd()

Dit deed ik om te debuggen maar levert tevens op dat routine wel juist werkt

- je conclusie is gebaseerd op wat er over de SPI naar je chip gestuurd wordt
- als je iets toevoegd of iets kleins veranderd lijkt het goed te gaan

Als je ipv die sendchar een vertraging invoegd, gaat het dan nog steeds goed?

Het is nu als volgt :

 PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ
       if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
                                          bytetosend =  STOPSCAN
                                           delay_10ms(1)

                                   else PLLCHCOUNT = STARTSCAN
                                           bytetosend =  STARTSCAN
                                           delay_10ms(1)
                           end  if
end PROCEDURE

dit gaat gaat goed
maar verander ik de waarde bytetosend in iets anders bv

PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ
      if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
                                          bytetosend = 44
                                          delay_10ms(1)

                           else PLLCHCOUNT = STARTSCAN
                                    bytetosend =  STARTSCAN
                                           delay_10ms(1)
                           end  if
end PROCEDURE

gaat het weer mis en komt hij alleen nog in het else gedeelte
De var bytetosend staat er alleen maar voor het debuggen en zou een waarde moeten zijn voor de procedure sendchar() ! das toch raar ? ...sendchar() stuurt de bytetosend var naar het display

De gewenste code is


PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ

if (PLLCHCOUNT<=STOPSCAN)  then PLLCHCOUNT = PLLCHCOUNT + 1
                           else PLLCHCOUNT = STARTSCAN
                           end  if

end PROCEDURE

bytetosend is een var die de door spi te verzenden waarde vertegenwoordigt, deze wordt gebruikt voor gegevens naar de display of de naar de deler van de pll te sturen.

Ik heb iets ontdekt.. als ik de variablen local declareer gaat de procedure goed
als volgt :

PROCEDURE SCANBAND()   IS       ;SCAN TUSSEN 2 FREQ
var byte
STARTSCAN = 80,          ;VAR VOOR START KANAAL SCANNEN
STOPSCAN = 159

if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1

                             else PLLCHCOUNT = STARTSCAN

                           end  if

end PROCEDURE

Nu heb ik vervolgens dit gemaakt:


Procedure  SCANBAND( byte in STARTSCAN,byte in STOPSCAN)  IS       ;SCAN TUSSEN 2 FREQ

if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1

                             else PLLCHCOUNT = STARTSCAN

                           end  if

end PROCEDURE

dit werkt prima ik ben blij !!! maar waarom het andere niet werkt is me een raadsel ??

[Bericht gewijzigd door Henry S. op (19%)]

Een waarschuwing voor de TS wegens topickicken, het wordt tijd om dit eens goed door te lezen.