LCD + 20MHz

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

LCD + 20MHz

Inlägg 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..
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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 ? :-)
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Japp den fungerar utmärkt med tex SerIn2.
Programmet snurrar vad jag vet..
Ja, jag använder PB´s inbyggda rutiner.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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" ?
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Det är en orginal HD44780
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, I'm lost. Sorry... :-)
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg 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!.
Användarvisningsbild
dr. Agoz
Inlägg: 149
Blev medlem: 9 juni 2005, 11:39:07

Inlägg 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.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

>Fagge
Om jag hade haft ett Oscilloskop så hade jag inte tvekat...

>dr.Agoz
Jag har inte glömt delayfunktion..
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg 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!.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg 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

'********************************************************
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg av Mutiaz »

Nu blinkar LCDn mellan svart på hela och inget alls.
Mutiaz
Inlägg: 295
Blev medlem: 3 april 2004, 17:29:53

Inlägg 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?
Användarvisningsbild
Porto
EF Sponsor
Inlägg: 437
Blev medlem: 27 mars 2004, 12:58:48

Inlägg 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.
Skriv svar