www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Busy-Flag


Autor: Heli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich habe gestern 3 Stunden vergeblich Probiert
in das Programm aus dem Tutorial (LCD)
das Busy-Flag mit einzufügen.
Ich wäre sehr dankbar wenn mir jemand erklären
könnte wie man ein LCD im 4bit-Modus mit
Abfrage des Busy-Flag betreibt.
Heli

Autor: SaM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
bei meinen Display wird wenn man RW auf Lesen und RS auf Befehl stellt 
der komplette Datenbus auf High bzw. auf Low gesetzt. Das heißt das du 
theoretisch auch im 4-Bitmodus das Busy-Flag ganz einfach dadurch 
ausliest indem du Prüfst ob etwas am Datenbus (DB0 - DB7) anliegt.

SaM

Autor: Phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moinmoin

BF Flag lesen om 4 bit mode ist ein bischen "tricky"

Da der AVR Port im Input mode auch 2 Zustände annehmen kann ja nach dem 
welche Daten am Post anliegen

Wenn PORTx,D7 im Output & modus DDRx,D7 1
Versucht der Eingang einen pull up dh er zieht in richtung 1
Sollte
Ist der Ausgang des LCD chips nicht dafür ausgelegt kann das Probleme
machen
-> dafür sorgen das PRTx,BF (D7) vor der abfrage auf 0 liegt  HI_Z
-> dann erst DDRx,BF auf Input
-> dann RW 1 RS 0

Jetzt noch BF einlesen ( PINx ) Nicht vom PORTx

!! noch was !!

Das BF flag kann erst nach der 2. 4bit operation gelesen werden !
und das auch nur EN log 1
Man ist schnell versucht die BF Abfrage in die normale LCD Routine
reinzuflicken ( in den EN operations teil ) der wird aber 2 mal pro
Schreibvorgang benutzt und so klappt das dann nicht


poste doch mal den code den du probierst
vieleicht kann man da ja was sehen

Mfg Phagsae

Autor: Thomas Strauß (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe auch lange vergeblich versucht, bei einem LCD16X1 das Busyflag 
abzufragen, so daß es auch funktioniert.

Nach Internet-Recherche habe ich es jetzt geschafft. Das 
Assemblerprogramm ist zwar für einen PIC geschrieben, aber es ist kein 
Problem, es in den MCS51-Code
umzuschreiben.

Ich war nun interessiert daran, wie oft das Busyflag abgefragt wird, bis 
der letzte Befehl abgearbeitet ist.

Dafür habe ich ein Programm für einen 80C32X2 Standardcontroller (Atmel) 
geschrieben, das genau das macht und die Anzahl auf einem 16X1-Display 
ausgibt.

Bei 1,8432Mhz-Taktfrequenz sind es 18 Abfragen, bei 24Mhz schon 230.

Thomas

Autor: Thomas Strauß (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch das Programm, das offensichtlich auf der Strecke geblieben 
ist.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow. Ein .DOC File für Quelltext?

Welcher C-Compiler frisst denn sowas?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ernst Bachmann wrote:
> Wow. Ein .DOC File für Quelltext?
>
> Welcher C-Compiler frisst denn sowas?
Und zusätzlich noch nen fünfeinhalb (!) Jahre alten Fred wieder 
rausgekramt. Das ist rekordverdächtig!

Autor: Meister der Insel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja so sind die Leut.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meister der Insel wrote:
> Tja so sind die Leut.
In der Tat. Und es gibt dann auch noch tatsächlich (derzeit 10) Leute, 
die sich das .doc auch noch runterladen...

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes M. wrote:

> In der Tat. Und es gibt dann auch noch tatsächlich (derzeit 10) Leute,
> die sich das .doc auch noch runterladen...

Muss gestehen, zwei der Downloads stammen von mir. Wollte checken, obs 
wirklich ein DOC-File ist (GET-Request an der Kommandozeile) und ob 
Koffice/KWord das öffnen kann. (Ja, es kann, und es ist auch wirklich 
Quelltext enthalten)

Autor: Meister der Insel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gegen Neugier gibt es halt auch kein Kraut.
So jetzt ist Feierabend.

Schönes Wochenende und Gruß.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab grad kein DSL, kann mir also das DOC-Monster nicht ansehen.

Selbst mein größtes Projekt (50 Files, 10.000 Codezeilen in C) schaffts 
nicht auf 503kB.


Peter

Autor: Rudolph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also so habe ich das mal implementiert für einen Mega16
und ein 4x20 DIP (EA DIP 204-4) in 8-Bit:

---
#define LCD_E  (1<<PORTB0);
#define LCD_RW (1<<PORTB1);
#define LCD_RS (1<<PORTB2);

uint8_t display_busy(void)
{
 uint8_t x;

 DDRC = 0x00;      // set all Pins from PORTC to input
 PORTB |=  LCD_RW; // switch display to read-mode
 PORTB &= ~LCD_RS; // clear RS, this is always a command
 PORTB |=  LCD_E;  // set E
 x = PINC & 0x80;  // we only need the busy-flag
 PORTB &= ~LCD_E;  // clear E
 return(x);
}
---

Und dann habe ich das mal auf 4-Bit umgestellt:

---
// display functions

#define LCD_E  (1<<PORTB1);
#define LCD_RW (1<<PORTB2);
#define LCD_RS (1<<PORTB3);


uint8_t display_busy(void)
{
 uint8_t x;

 DDRA = 0x00;      // set all Pins from PORTA to input
 PORTB |=  LCD_RW; // switch display to read-mode
 PORTB &= ~LCD_RS; // clear RS, this is always a command
 PORTB |=  LCD_E;  // set E
 x = PINA & 0x08;  // we only need the busy-flag
 PORTB &= ~LCD_E;  // clear E
 // read second nibble to complete access
 PORTB |=  LCD_E;  // set E
 PORTB &= ~LCD_E;  // clear E
 return(x);
}
---

Hmm, okay, ist 'ne Weile her das ich das gebraucht habe und ist 
vielleicht ein wenig nachlässig implementiert... ;-)

Aber mit dem 2x16 DIP habe ich das auch schon erfolgreich benutzt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.