Busy flag och Address counter HD44780
Postat: 18 maj 2011, 20:42:14
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!
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!