problem med busy-flag på LCD!
problem med busy-flag på LCD!
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
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
Re: problem med busy-flag på LCD!
Jag har aldrig använd Busy-flaggan, jag kör med hård timing och det har fungerat bra genom åren.
Re: problem med busy-flag på LCD!
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
//Erik
Re: problem med busy-flag på LCD!
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.
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.
Re: problem med busy-flag på LCD!
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
tack för snabba svar.
//Erik
Re: problem med busy-flag på LCD!
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...
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...
Re: problem med busy-flag på LCD!
"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.
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.
Re: problem med busy-flag på LCD!
Ä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...
Vissa displayer har ju lite konstig indelning av skärmen... om du pekar ut en ogiltig adress kanske den hänger sig? Kolla databladet...
Re: problem med busy-flag på LCD!
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
Tack alla för viljan att hjälpa!
mvh
Erik