mikrocontroller.net

Forum: Compiler & IDEs Busy - Flag am HD44780


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

bis jetzt habe ich immer lange genug gewartet (delay) bis das
LCD-Display auf jeden Fall bereit zum Datenempfang war, das gefällt mit
aber nicht. Also habe ich eine Routine geschrieben welche einfach
solange das Busy-Flag abfragt bis Bit 7 Low ist, das funktioniert aber
bei mir nicht. Bin auch nicht so der Profi in C. Also folgendes
Funktioniert nicht:

void lcdbsy()
  {
  DDRC = 0; // Port A auf Eingang setzen

  PORTA = PORTA &~ (1<<DDA0); // RS low
  PORTA = PORTA | (1<<DDA1); // R/W low
  do
    {
    PORTA = PORTA &~ (1<<DDA2); // E Low
    _delay_ms(5);
    PORTA = PORTA | (1<<DDA2); // E High
    }
  while ((PORTC & 128) != 128); // Solange durchlaufen bis Bit 7 Low
ist


  DDRC = 255; // Port A auf Ausgang setzen
  }

Danke für einen Tip.

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du mit PortC & 128 maskierst, müsstes du nicht auf 1 abfragen?

so ala

   ...
while !(PortC & 128);

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTA = PORTA | (1<<DDA2);

Da benutzt man normalerweise den operator "|=":
PORTA |= 1 << DDA2;

Das ist nämlich viel übersichtlicher als deine Version (entsprechendes
gilt für &, dafür gibts &=).

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für ein Device? Wenn's ein AVR Tiny oder Mega ist, dann sorgen
deren Sync-Register am Input dafür, dass der Zustand vom Port gelesen
wird, bevor E überhaupt High-Pegel kriegt.

Autor: Sven Bohner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTx ist ein register zum port beschreiben....
man kann das port register auch lesen, jedoch nur, um zu sehen was man
hineingeschreiben hat
wenn man an manchen ports, die man als eingang konfiguriert hat den
evtl. vorhandenen pull-up einschalten will, muß man für den jeweiligen
portpin eine 1 ins PORTx - register schreiben...

wenn man als eingang konfiguriete ports lesen will, steht der wert, der
am jeweiligen port anliegt im PINx - register!!!!

du mußt beim lesen des port das PINA - register lesen, bis dessen bit 7
gesetzt oder gelöscht ist.

im PORTx - register steht NICHT das, was am port (der als eingang
konfiguriert ist) anliegt!!!

Autor: Sven Bohner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry: PINC mußt du lesen...

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.