Sida 1 av 2

LCD + 20MHz

Postat: 13 februari 2006, 13:18:39
av Mutiaz
Hej!

Lyckas inte få min LCD att fungera tillsammans med min nya 20Mhz kristall. Det fungerade utmärkt med 4MHz.

Jag har ställt in HS och definierat att jag använder 20MHz. Jag använder en Pic16F628A med PicBasic.

Antingen blir det bara svart eller så händer det inget alls på lcdn..

Postat: 13 februari 2006, 13:47:55
av sodjan
Fungerar den med något annat än LCD'n ?
Snurrar ditt program alls ?
Använder du PB's inbyggda LCD rutiner ?
Om inte, har du anpassat timingen till 20 Mhz ?
Varför beskriver du inte vad du gör ordentligt
så du slipper en massa extra frågor ? :-)

Postat: 13 februari 2006, 14:49:25
av Mutiaz
Japp den fungerar utmärkt med tex SerIn2.
Programmet snurrar vad jag vet..
Ja, jag använder PB´s inbyggda rutiner.

Postat: 13 februari 2006, 14:58:20
av sodjan
OK.
Spontant, utan att veta mer än nu, så verkar det som om
PB inte anpassar sina inbyggda LCD rutiner till 20 Mhz.
Är det en original HD44780 eller en "klon" ?

Postat: 13 februari 2006, 15:01:44
av Mutiaz
Det är en orginal HD44780

Postat: 13 februari 2006, 15:07:40
av sodjan
OK, I'm lost. Sorry... :-)

Postat: 13 februari 2006, 15:14:01
av Fagge
Det låter som att du skriver snabbare till displayen än vad den klarar av...
Mät enable pulserna med ett oscillockop & gämför pulstiden , när du kör 4/20MHz klockan!.

Postat: 13 februari 2006, 15:35:39
av dr. Agoz
jag vet inte hur PicBasic fungerar, men ett fel som jag gjorde var att jag glömde att anpassa min delay funktion. ganska slarvigt men det gör så att displayen inte får tid på sig att initieras ordentligt.

Postat: 13 februari 2006, 15:38:40
av Mutiaz
>Fagge
Om jag hade haft ett Oscilloskop så hade jag inte tvekat...

>dr.Agoz
Jag har inte glömt delayfunktion..

Postat: 13 februari 2006, 15:51:48
av Fagge
Jag hade manuellt lagt in delayer efter varje instruktion som ska skrivas till displayen, för att utesluta timnings problem som troligtvis ha uppstått i & med att du öka klockfrekvensen!.

Postat: 13 februari 2006, 15:57:43
av Mutiaz
Hur menar du då?

Här är ett exempel:

Kod: Markera allt

DEFINE OSC 20
DEFINE LCD_DREG PORTA 
DEFINE LCD_DBIT 0 
DEFINE LCD_RSREG PORTA 
DEFINE LCD_RSBIT 4 
DEFINE LCD_EREG PORTB 
DEFINE LCD_EBIT 3 
DEFINE LCD_BITS 4 
DEFINE LCD_LINES 2 
DEFINE LCD_COMMANDUS 2000 
DEFINE LCD_DATAUS 50 




'***************LCD**************************************

Pause 1000 'Wait for LCD to wake up 
LCDOut $FE, 1 'Initiate LCD by clearing display 
LCDOut $FE,1,"Test LCD"'Testar LCD
Pause 5000

'********************************************************

Postat: 13 februari 2006, 16:08:51
av sodjan

Kod: Markera allt

Pause 1000 'Wait for LCD to wake up
LCDOut $FE, 1 'Initiate LCD by clearing display
Pause 1000 
LCDOut $FE,1,"Test LCD"'Testar LCD
Pause 5000 
T.ex...

Postat: 13 februari 2006, 16:13:40
av Mutiaz
Nu blinkar LCDn mellan svart på hela och inget alls.

Postat: 13 februari 2006, 18:18:33
av Mutiaz
Har kommit fram till att det blir svart när den skall skriva. Om jag inte minns helt fel så är det väl nått initieringsfel?

Men jag provade precis med 4MHzaren och det funkade kanon..

Vad kan vara fel?

Postat: 13 februari 2006, 18:53:06
av Porto
Du kan ju prova att ställa upp DEFINE LCD_COMMANDUS och DEFINE LCD_DATAUS till värden typ 5ggr högre för att kompensera för högre klockfrekvens, om nu inte kompileraren gör det. Det kan ju ändå bli problem om enable signalen till LCD:n blir för kort. DEFINE LCD_COMMANDUS och DEFINE LCD_DATAUS är ju bara pausen efter kommando / data och inte pulslängden på signalerna.