Hej!
Jag håller på att kommunicera med LCD displayen HD44780. Jag har skrivit en IP kärna i VHDL samt en C-kod som nu exekveras på en processor som anropar min IP kärna via en bus. Jag har noggrant läst manualen för HD4478. I den bästa manualen, troligen orginal, står det info om Busy flag och address counter. För att sammanfatta kan man troligen dra två slutsatser:
1. Skriver man till DDRAM med hjälp av "write data to RAM" instruktionen och sedan gör i "read busy flag" instruktionen så kommer busy flag biten indikera om instruktionen fortfarande behandlas. När busy flag får 0 är den redo att ta emot en ny instruktion.
2. Skriver man till DDRAM med hjälp av "write data to RAM" instruktionen och sedan gör i "read busy flag" instruktionen så kommer address counter bitarna (de som ges ut tilsammans med BF när man ger read busy flag instruktion) först få sitt nya värde, dvs det inkrementerade värdet pga att man gjort en "write data to ram instruktion", först tadd after BF gått låg (tadd varierar men vi kan säga 4-5 us).
Detta leder mig till följande fråga:
Eftersom andresscountern har en delay innan den uppdateras efter BF gått låg, är det forfarande okej att skriva en ny instruktion direkt när busy flaggan går låg? Jag har skrivit en C-kod som kommer exekveras på en processor. Dvs assamblerkod skapas och anropar min IP-kärna som i sin tur kommunicerar med displayen. Frågan är relevant för man kan inte riktigt avgöra hur långa delayer min c-kod struktur orsakar så det är viktigt att veta om IP kärnan behöver moddas för att c-pogrammeraren ej ska behöva bry sig om en delay mellan att busy flaggan går låg och nästa instruktion. Målet är nämligen att man ej ska behöva bry sig om delay på C-nivå utan bara kunna läsa busy flaggan för att sedan läsa/skriva när den går låg. Jag hoppas jag är tydlig i min frågeställning!
Busy flag och Address counter HD44780
Re: Busy flag och Address counter HD44780
Det kanske enbart är utläsningen av adressen som ligger lite efter.
Det är ju möjligt att skrivningen går OK i alla fall.
Bara gissar, i och för sig...
> Jag har noggrant läst manualen för HD4478.
Om du *har* länkar till det du refererar till så är det väldigt bra
att posta dom så att var och en kan kolla själva. Och ange gärna
kapitel, figurnr o.s.v där det som du beskriver anges eller visas.
Det är ju möjligt att skrivningen går OK i alla fall.
Bara gissar, i och för sig...
> Jag har noggrant läst manualen för HD4478.
Om du *har* länkar till det du refererar till så är det väldigt bra
att posta dom så att var och en kan kolla själva. Och ange gärna
kapitel, figurnr o.s.v där det som du beskriver anges eller visas.
Re: Busy flag och Address counter HD44780
Okej ja jag kan bara gissa också. Hoppas på att någon vet mycket om denna display här!
Här är infon:
http://www.sparkfun.com/datasheets/LCD/HD44780.pdf
PDF sida 25 illustrerar att adressen updateras efter BF gått låg.
PDF sidor 9, 24, 29, 32 nämer och illustrerar busy flag.
Här är infon:
http://www.sparkfun.com/datasheets/LCD/HD44780.pdf
PDF sida 25 illustrerar att adressen updateras efter BF gått låg.
PDF sidor 9, 24, 29, 32 nämer och illustrerar busy flag.
Re: Busy flag och Address counter HD44780
OK.
Man kan tolka det olika. Databladet talar enbart om en delay tills de externa
adresserna är uppdaterade. "Address counter (DB0 to DB6 pins)".
Eller så menar man även den interna räknaren...
Dock så sägs det aldrig att man *måste* vänta Tadd efter BF=0
till nästa instruktions skrivs. Bara att det tar Tadd innan DB0-6
uppdateras...
Tja, jag skulle "safe'a" och ha en kort delay efter BF=0, t.ex de 4 us
som databladet har som exempel (typvärde?).
Man kan tolka det olika. Databladet talar enbart om en delay tills de externa
adresserna är uppdaterade. "Address counter (DB0 to DB6 pins)".
Eller så menar man även den interna räknaren...

Dock så sägs det aldrig att man *måste* vänta Tadd efter BF=0
till nästa instruktions skrivs. Bara att det tar Tadd innan DB0-6
uppdateras...
Tja, jag skulle "safe'a" och ha en kort delay efter BF=0, t.ex de 4 us
som databladet har som exempel (typvärde?).