Ik ben al de hele avond aan het prutsen en krijg het niet voor elkaar
dat mijn LCD welke goed aangesloten is niet goed wordt opgestart door mijn PIC.

LCD heeft het met dezelfde PIC gedaan!!!

Maar na het opnieuw programmeren met de volgende code wordt hij niet meer gestart.


Device 16F628A                ;Gebruik een 16F628A type

Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF

XTAL = 4
HSERIAL_BAUD = 9600	
HSERIAL_RCSTA = %10010000
HSERIAL_TXSTA = %00100000
HSERIAL_CLEAR = On

ALL_DIGITAL TRUE
		
DelayMS 500                   ;LCD stabilisering

Dim ONTVANGEN As Byte
Dim POSITIE As Byte
Dim LIJN As Byte

Cls
Print At 1,1, "Display OK"
DelayMS 500
Print At 2, 1, "Lijn 2 ook"

DelayMS 1000



LIJN = 1
Cls                           ;Wis scherm en zet cursor links bovenaan 
While 1 = 1
ONTVANGEN = 0
POSITIE = 1
	  While ONTVANGEN <> 13
	  HRSin Dec ONTVANGEN
	  Print At LIJN, POSITIE, ONTVANGEN
      Print At 2,12, Dec ONTVANGEN , "  "
	  POSITIE = POSITIE + 1
      Wend
LIJN = LIJN +1
If LIJN = 3 Then LIJN = 1
Wend

End                           ;Einde programma

Even niet kijken naar de baudrate en intrc, wilde een HS_OSC (20MHz) aansluiten (XTAL 20) en daarna ging niks meer.

Heb ik hier iets fout gedaan, ik kan het niet vinden.

Gecompileerd met Proton IDE 3.2.5.5

Je kan de code tags die je hebt gebruik ook naar picbasic zetten. Dan krijgt alles gelijk de goede kleur dat leest wat makkelijker.

Heb je een 4Mhz of 20Mhz kristal aanzitten. Als je een 20Mhz gebruikt maar in het programma een 4Mhz vermeldt dan kunnen de signalen wel een te snel worden voor het lcd display. Alles gaat immer 5 keer sneller dan proton heeft bedoelt. Een delay van 500mS wordt dan een delay van 100mS.

Wat ik vaak doe in deze vervelende situaties is toch maar weer terug gaan naar een werkend program en schakeling. Dit gewoon om alles uit te kunnen sluiten. Je weet dan dat het programma gewerkt heeft. Werkt het niet meer en je weet zeker dat de schakeling in orde is dan gaat her programmeren fout. Werkt het oude programma wel dan zit er in het nieuwe programma iets wat het lcd display verstoort.

Ik ben er achter dat het te maken heeft met de initialisatie van de UART op een of andere manier loopt hij daarop vast.

Uiteraard gebruik ik een XTAL 20 als ik er een 20MHz-kristal aan hang.

Dacht even dat het daar aan lag, omdat ik dat als eerste had veranderd.

Volgende code werkt wel:


Device 16F628A                ;Gebruik een 16F628A type
Config HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF

XTAL 20



SERIAL_BAUD = 300	
		RSOUT_PIN = PORTB.1
		RSOUT_MODE = TRUE
		RSOUT_PACE = 10
		RSIN_PIN = PORTB.0
		RSIN_MODE = TRUE

Dim ONTVANGEN As Byte
Dim POSITIE As Byte
Dim LIJN As Byte



DelayMS 500                   ;LCD stabilisering

Cls                           ;Wis scherm en zet cursor links bovenaan 
Print "Hello world!"          ;Plaats tekst op het display

DelayMS 3000

LIJN = 1
Cls                           ;Wis scherm en zet cursor links bovenaan 
OPNIEUW:

ONTVANGEN = 0
POSITIE = 1
	  While ONTVANGEN <> 13
	  RSIn ONTVANGEN
	  If ONTVANGEN = 13 Then GoTo NXT
      Print At LIJN, POSITIE, ONTVANGEN
      Print At 2,12, Dec ONTVANGEN , "  "
	  POSITIE = POSITIE + 1
NXT:

      Wend
LIJN = LIJN +1
If LIJN = 2 Then LIJN = 1

GoTo OPNIEUW

Zoals je ziet, de picbasic-code gevonden.

EDIT:

Ben er achter, op poort B.2 zat de LCD_enable pin, deze dus omgegooid naar poort B.0

DECLARE LCD_ENPIN PORTB.0

Opgenomen in het programma, nu werkt alles correct.....