Mico32 LCD Busy Flag

Gast #2722624
Lesenswert?
• ▲
▼
Hallo,

ich verwende einen Lattice ECP2 mit integriertem Mico32 Kern sowie ein 
LCD mit HD44780 Controller.
Ich habe bis jetzt mit delays gearbeitet, möchte nun allerdings auf die 
Abfrage des Busy Flags umsteigen.

Ich habe im Mico32 in der Platform ein Signal "DB7" als "Both Input and 
Output" definiert, dann bekomme ich zwei Signale
1
; DB7PIO_BOTH_IN : in std_logic_vector(0 downto 0)
2
; DB7PIO_BOTH_OUT : out std_logic_vector(0 downto 0)

die ich so an meinen physikalischen Ausgangspin DB7 am FPGA verdrahte.
1
,DB7PIO_BOTH_IN(0)  => DB7
2
,DB7PIO_BOTH_OUT(0)  => DB7

Nun möchte ich das BusyFlag abfragen, die Enable Leitung wird getoggelt, 
RW ist auf high und RS ist auf low:
1
while (busy_flag)
2
{
3
  *((volatile unsigned char *)(lcd_E->base))  = 1;
4
  busy_flag = *((volatile unsigned char *)(lcddb7->base));  
5
  *((volatile unsigned char *)(lcd_E->base))  = 0;
6
}

allerdings bleibt das Programm hier stehen.
Muss ich die Richtung des Pins umschalten um ihn lesen zu können, oder 
bin ich hier komplett auf dem Holzweg?

Vielen Dank
Peter
Gast #2723443
Lesenswert?
• ▲
▼
Hallo,

also müsste ich ein weiteres Signal in die Platform integrieren, z.B. 
"lcd_busy_flag_enable", und dieses Signal vom Mico32 aus auf 0 setzen 
wenn ich Daten an das LCD senden möchte und auf 1 setzen wenn ich das 
BusyFlag lesen möchte?

Und im FPGA dann so realisieren?
1
DB7PIO_BOTH_IN(0)  <= DB7;
2
DB7 <= DB7PIO_BOTH_OUT(0) when lcd_busy_flag_enable = '0' else 'Z';

Vielen Dank
Peter
Gast #2723551
Lesenswert?
• ▲
▼
Peter schrieb:
> also müsste ich ein weiteres Signal in die Platform integrieren, z.B.
> "lcd_busy_flag_enable", und dieses Signal vom Mico32 aus auf 0 setzen
> wenn ich Daten an das LCD senden möchte und auf 1 setzen wenn ich das
> BusyFlag lesen möchte?
Genau.
Ich denke bei der GPIO-Komponente müsste sowas schon realisiert sein.

Duke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren