Mico32 LCD Busy Flag

Gast #2722624
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 #2723424
Peter schrieb:
> Muss ich die Richtung des Pins umschalten um ihn lesen zu können, oder
> bin ich hier komplett auf dem Holzweg?
Ja. Du musst den Treiber im FPGA abschalten, z.B. so:
1
    sda_in    <= pad_sda;                             -- input
2
    pad_sda   <= sda_out when sda_oen = '0' else 'Z'; -- output

Duke
Gast #2723443
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.