problem med busy-flag på LCD!

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
mrej
Inlägg: 9
Blev medlem: 4 maj 2007, 17:37:24
Ort: Linköping

problem med busy-flag på LCD!

Inlägg av mrej »

Hej forumet, här kommer ett skumt problem...

Har nu suttit många timmar och felsökt min enkla displaystyrkod, och tror jag äntligen kommer fram till problemet. Koden fungerar som så att adress väljs (rad och kolumn), och sedan skrivs en textsträng på vald adress.

exempel:
LCD_wait();
set_adress(0,1); //Sätter rad och kolumn
LCD_wait();
LCD_write("ABC");

vilket producerar:

________________________
ABC

________________________

Detta fungerar utmärkt för båda rader, förutsatt att man inte går längre än de första 8 kolumnerna.

Om man försöker skriva utanför de första 8 kolumnerna, alltså såhär:

LCD_wait();
set_adress(0,9); //Sätter rad och kolumn
LCD_wait();
LCD_write("ABC");

Så vägrar displayen att sätta busy-flaggan, och därmed stannar koden.

Har någon upplevt något liknande, eller har någon kanske till och med en lösning?

vänliga hälsningar
Erik
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: problem med busy-flag på LCD!

Inlägg av Icecap »

Jag har aldrig använd Busy-flaggan, jag kör med hård timing och det har fungerat bra genom åren.
mrej
Inlägg: 9
Blev medlem: 4 maj 2007, 17:37:24
Ort: Linköping

Re: problem med busy-flag på LCD!

Inlägg av mrej »

Jo, det vore ju en lösning... Ungefär hur nära minimi-gränsen brukar du köra, eller är du rentav precis på de timingvärden som finns angivna i datablad? Så länge man kan va säker på att det funkar varje gång är det ju lugnt. Men samtidigt måste ju busyflaggan ha ett syfte, den är väl menad för att man ska få absolut snabbast möjliga displayhantering?

//Erik
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: problem med busy-flag på LCD!

Inlägg av Icecap »

Jag kör precis på minimi, enstaka display har ballat ut och då har jag ökat på en aning.

Tiden går ju _ändå_ så varför spilla tid med att fråga om den är klar? Oavsett om du poller status eller inte går det åt samma tid, alltså går det snabbare att köra hård timing, man sparar tid på att slippa kasta om porten.
mrej
Inlägg: 9
Blev medlem: 4 maj 2007, 17:37:24
Ort: Linköping

Re: problem med busy-flag på LCD!

Inlägg av mrej »

Ok, kanske får bli så då. Bara displayen visar vad jag vill den ska visa så är jag nöjd.

tack för snabba svar.

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

Re: problem med busy-flag på LCD!

Inlägg av sodjan »

Håller med Icecap, i de flesta fall timar man bara hårt i koden.
De flesta vanliga "kommandon" till en HD44780 går snabbt, och nör
man gör en reset så kan man vänta lite längre. Dessutom spara man
en I/O pinner eftersom man kan lägga R/W pinnen fast till GND...
BJ
Inlägg: 8864
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: problem med busy-flag på LCD!

Inlägg av BJ »

"Så vägrar displayen att sätta busy-flaggan"

Menar du att den inte blir 1?
Kan det inte gå så fort så att du missar det bara?
För den blir väl 1 på en gång efter en skrivning,
och sen ska man bara vänta tills den är 0.
Om man vill så kan man titta på den före bokstäverna också
så kanske programmet går lite fortare.
Då kan man hämta nya tecken medan skärmen är upptagen med det gamla.
Men det kanske inte blir så stor skillnad.
laban12
Inlägg: 1199
Blev medlem: 17 april 2008, 16:01:56
Ort: Stockholm

Re: problem med busy-flag på LCD!

Inlägg av laban12 »

Är du säker på att (0,9) är rätt adress då?
Vissa displayer har ju lite konstig indelning av skärmen... om du pekar ut en ogiltig adress kanske den hänger sig? Kolla databladet...
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: problem med busy-flag på LCD!

Inlägg av bos »

Hur ser din LCD_wait() ut?
mrej
Inlägg: 9
Blev medlem: 4 maj 2007, 17:37:24
Ort: Linköping

Re: problem med busy-flag på LCD!

Inlägg av mrej »

Har minsann fått ordning på problemet! På ett ställe, i ett visst läge, kom det två LCD_wait på raken. Av någon anledning vägrade han hantera det. Efter att ha korrigerat det, har allting funkat felfritt.

Tack alla för viljan att hjälpa!

mvh
Erik
Skriv svar