Glcd aansturen


dus hier is mijn bijgeschaafde code

pic basic code:

[/Device = 18F4550
CONFIG_START
   PLLDIV   = 2         ; Divide by 2 (8 MHz oscillator input)
   CPUDIV   = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
   USBDIV   = 2         ; USB clock source comes from the 96 MHz PLL divided by 2
   FOSC     = HSPLL_HS    ; HS oscillator, PLL enabled, HS used by USB
   PWRT     = Off          ; PWRT disabled
   BOR      = OFF          ; Brown-out Reset disabled in hardware and software
   LVP      = OFF          ; Low voltage programming off
   WDT      = OFF          ; watch dog timer off
CONFIG_END
XTAL = 48	          
 
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
 
LCD_DTPORT = PORTD
LCD_RSPIN = PORTB.1
LCD_ENPIN = PORTB.0
LCD_RWPIN = PORTB.2
LCD_CS1PIN = PORTB.5
LCD_CS2PIN = PORTB.4
LCD_TYPE = GRAPHIC
;INTERNAL_FONT = On ps deze heb ik er uitgehaald omdat hij niet compiled
;met type 1 display wel met type 2 SAMSUNG denk ik 
FONT_ADDR = 0
 
Cls
DelayMS 500
start: 

    Print "hallo"
    DelayMS 200 
GoTo start
End
 
Include "font.inc"]

Nu ook nog het commentaar kloppend maken... :) (als je dat niet doet kun je het beter weglaten, sticht alleen verwarring)

pic basic code:

   PLLDIV   = 2         ; Divide by 5 (8 MHz oscillator input)
   PWRT     = Off       ; PWRT enabled

Moet zijn

pic basic code:

   PLLDIV   = 2         ; Divide by 2 (8 MHz oscillator input)
   PWRT     = Off       ; PWRT disabled

De XTAL setting is de snelheid waarop de processor loopt. Dat hoeft niet altijd de kristalfrequentie te zijn (zoals ook in dit geval)
Als de compiler die niet weet, kan 'ie geen waitloops maken...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

@banana plug: als je je email adres in je profiel invult stuur ik je de code zoals ik die voor een SED1531 heb ontwikkeld. Uiteraard is dat niet één op één toepasbaar, het is een voorbeeld, dus je zult op basis van je datasheet eea moeten aanpakken.

Just find out what you like and let it kill you

Ik zou toch eerst een ledje laten knipperen in 1 sec ritme om te zien of hardware en config settings kloppen.
Ik doe dat altijd als eerste. Het heeft weinig zin op firmware te gaan zitten zweten, als de boel uberhaupt niet werkt...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Beste je mag mij zeker eens uw code door mailen
En ik zal inderdaat eens proberen een ledje aan te sturen.
Ik wil het echt graag vinden en ik ben blij dat ik al veel bijgeleerd heb
Alvast bedankt iedereen

je hebt gelijk

ik heb de led op porta.0 gesoldeerd en dit programmatje gebruikt maar geen led blink hij doet niks

pic basic code:

Device = 18F4550
CONFIG_START
   PLLDIV   = 2         
   CPUDIV   = OSC1_PLL2 
   USBDIV   = 2         
   FOSC     = HSPLL_HS    
   PWRT     = Off          
   BOR      = OFF          
   LVP      = OFF          
   WDT      = OFF          
CONFIG_END
XTAL = 48	          
 
ALL_DIGITAL TRUE              

Opnieuw:                      

Toggle PORTA.0                
DelayMS 500                   
GoTo Opnieuw                  

End

NOOIT je email adres in een thread zetten, je profiel aanpassen want daar kunnen alleen CO-leden bij!

Just find out what you like and let it kill you

oke ik ga hem verwijderen
Zou deze code goed moeten zijn om een led te blinken?
ik heb het geprobeerd maar dat lukt niet

Ik zou liever LATA gebruiken (zoals het hoort) i.p.v. PORTA, dat werkt tenminste altijd.
(bij te zware belasing werkt toggle van PORTx pin niet, LATx wel. Heeft de led wel een serieweerstand?)

pic basic code:

Toggle LATA.0

Je kunt ook nog proberen de interne oscillator te gebruiken om probleem met kristal uit te sluiten.

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

ik heb alles nog eens goed gesoldeerd en LATA gebruikt (iets bijgeleerd ik wist deze niet)
bij pic basic.nl word deze niet geleerd.
het resultaat is dat de led nu wel blinkt.
maar nog niets op het scherm :(

picbasic.nl is behoorlijk verouderd intussen.
bovendien wordt daar altijd de 16F628A gebruikt en die kent geen LATx registers, dat is pas bij de 18F

Just find out what you like and let it kill you

Ik heb nu de hardware getest en de led doet het.
Maar ik kan nog steeds geen programma werkend krijgen
in de datasheet kom ik dit stu tegen voor het aanstiren van de lcd

Kan ik voorbeeld een programmatje maken om he scherm te testen
enkel ket scherm aan leggen vb dat je een zwart gevuld scherm krijgt?
oor port D0 D1 D2 D3 D4 D5 D6 D7 D/I R/W te maken?
1 1 1 1 1 1 0 0 0 0

Of versta ik dt verkeerd uit de datasheet?

Je kan inderdaad met informatie over hoe je direct de chip kan aansturen even wat proberen om op het scherm te krijgen.

Als je wat wilt zien op het display moet D/I moet 1 zijn.

D=1 scherm is zichtbaar
D=0 scherm is uit.

Daarom is het zo belangrijk om de goede display driver te hebben.
En zij ik al dat je deze eerst moet hebben voordat je het display op de goede manier kan aansturen.

Ik heb deze gemaak maar het lukt nog steeds niet
Is er iemand die voor mij een stukje demo code kan schrijven?
die zeker werkt ;)
Gewoon om het scherm eens te testen

pic basic code:

[Device = 18F4550
CONFIG_START
   PLLDIV   = 2         ; Divide by 2 (8 MHz oscillator input)
   CPUDIV   = OSC1_PLL2 ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
   USBDIV   = 2         ; USB clock source comes from the 96 MHz PLL divided by 2
   FOSC     = HSPLL_HS    ; HS oscillator, PLL enabled, HS used by USB
   PWRT     = Off          ; PWRT disabled
   BOR      = OFF          ; Brown-out Reset disabled in hardware and software
   LVP      = OFF          ; Low voltage programming off
   WDT      = OFF          ; watch dog timer off
CONFIG_END
XTAL = 48	                                                 
 
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
 
LCD_DTPORT = PORTD
LCD_RSPIN = PORTB.1
LCD_ENPIN = PORTB.0
LCD_RWPIN = PORTB.2
LCD_CS1PIN = PORTB.5
LCD_CS2PIN = PORTB.4
LCD_TYPE = GRAPHIC
INTERNAL_FONT = On 
;ps deze heb ik er uitgehaald omdat hij niet compiled
;met type 1 display wel met type 2 SAMSUNG denk ik 
;FONT_ADDR = 0
        ;76543210
TRISB = %00000000
TRISD = %00000000
TRISA = %00000000
 
DelayMS 500
start:      

            ;76543210
    PORTD = %00111111
    
    
End
 
Include "font.inc"]

is er soms iemand die mij een klein test programmatje wil maken met de 00111111 methode enkel maar om het scherm aan te krijgen op de manier die in de datasheet staat

Dan zul je iemand moeten treffen die toevallig ook dat display heeft en ook de processor...

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Met deze code krijg je dit GLCD aangestuurd.
"If Graphic, KS0108 or 1 is chosen then any output by the Print command will be directed to a graphic LCD based on the KS0108 chipset." Maar je hebt helemaal geen KS0108 display voor zover ik het begrepen heb.

Just find out what you like and let it kill you

"The Samsung KS0108/KS0107 is equal to the Hitachi HD61202/HD61203 chipset"

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

Ik heb wel wat code voor het werken met een KS0108
"Declare LCD_Type = 1
Declare LCD_DTPort PORTD
Declare LCD_RWPin PORTC.5
Declare LCD_CS1Pin PORTC.1
Declare LCD_CS2Pin PORTC.0
Declare LCD_ENPin PORTC.3
Declare LCD_RSPin PORTC.4
Declare GLCD_CS_Invert = On
Declare Internal_Font On"
De poorttoewijzingen moet je natuurlijk aanpassen aan jouw hardware.

vervolgens in je main
"Cls
delayms 200
print at 10,10, "hello world"
while 1=1
wend"

Aan het einde de source
"; font goes after main program
Include "font.inc""

Just find out what you like and let it kill you

bedankt hadv.
Ik heb het geprobeerd maar ik krijg nog niks op het scherm.
maar wat mij opvalt is dat hij weer niet wil compilen als ik

Declare LCD_TYPE = 1

dan geeft hij Print At 10,10, "hello world" rood aan en compiled niet

als ik Declare INTERNAL_FONT On er uit haal dan doet hij het wel met Declare LCD_TYPE = 1
dan word er gecompiled maar als ik de code in de pic steek krijg ik nog steeds niets op het scherm.
zou het probleem daar kunnen zitten?

Probeer dan eens
LCD_Type Graphic of Lcd_type KS0108
Ik heb in het verleden ook wel eens problemen gehad met LCD_Type
Ik weet in ieder geval zeker dat wat ik heb opgeschreven ooit goed is gecompileerd en heeft gewerkt. Maar het kan best zijn dat nieuwere versies van de compiler net weer iets anders werken en dat dan de handleiding niet is aangepast.

Ik wil niet flauw doen, maar de handleiding biedt echt heel veel informatie.

Just find out what you like and let it kill you

Ik heb nog een vraagje over xtal snelheden en prossesor ssnelhedn
Hoe bepaal ik vb dat als mijn
XTAL 8 mhz is de
PPLDIV = 2 moet zijn?
En de prossesor aan 48 moet werken
Of mag ik daar een beetje in kiezen?
Als ik vb een xtal van 4 mhz neem hoe weet ik dan mij PPLDIV ? En hoeveel prossesor snelheid mag ik nemen?
In plaats van 48?

Je moet het programma uit eindelijk wel de goede snelheid zeggen. Als dat afwijkt dan kloppen de delay tijden niet.

De ingang van de PLL moet altijd 4MHz zijn. Dus in dit geval 8MHz gedeeld door 2. Bij 4MHz kristal is dat dus 1.
Clock van cpu kiezen is vrij, maar wel gebonden aan wat regels als je de USB module gebruikt. E.e.a. staat beschreven in de datasheet.

[Bericht gewijzigd door Arco op 14 september 2017 22:45:39 (49%)]

Arco - "Simplicity is a prerequisite for reliability" - hard en software ontwikkeling: www.arcovox.com

misschien moet je je eens wat meer verdiepen in de sectie over oscillatoren in de datasheet. zeker voor de usb devices is daar een hele hoop over terug te vinden. heel leerzaam, ook al ga je helemaal geen usb gebruiken.
in table 2.3 kun je vinden dat je met een 4MHz kristal van z'n leven geen xtal van 48 zult behalen.

op de site van crownhill kun je een wizard vinden bedoeld voor usb, maar ook heel handig voor dit soort zaken.
op het eerste scherm selecteer je het device dat je gebruikt (let op, je krijgt alleen devices te zien die usb ondersteunen). vervolgens kun je de oscillatorsnelheid wijzigen en zien wat het resultaat is.

Just find out what you like and let it kill you