mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD init hd44780


Autor: Fazer150ps (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute.
Ich versuche meine LCD zu initialisieren. Leider wird nur LCD_FUNC 
übergeben. Danach passiert nicht mehr. Das kann ich sehen, weil ich mir 
am PORTE die Befehle anschaue.

Kann mir einer helfen?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So geht das nicht.

Nehmen wir mal das hier

#define LCD_FUNC  PORTB = 0x38  //8bit Ansteuerung, 4 Zeilen, Zeichenbox 
5x7

und das hier

  PORTE=LCD_FUNC;

Was steht nachher für den Compiler dort?

  PORTE=PORTB = 0x38;

Sieht irgendwie nach Unsinn aus, oder nicht?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wird das Programm vermutlich hängen:

>void datenAnLCD()
>{
>    VarTimer(0.005);

Wie sieht VarTimer() aus?

Autor: Fazer150ps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort.

Zu Klärung:
Das ist mir schon klar das es kein Sinn ergibt.
PORTE=0x38 hab ich erst später eingefügt.
Ich wollte sehen welche Daten grade gesendet werden.
Am Atmega16 hat ja alles funktioniert.
Jetzt benutze ich Atmega128 und es wird nur LCD_FUNC an das Display 
übergeben.

Autor: Fazer150ps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
//Version 03042009

//Ein Schleifendurchlauf dauert 1,375us (11 Cyclen)
//Rechnung zahler=ZEIT*((8MHz)^-1*11 Cyclen)^-1
//z.B. 1s*(1,375^-6*11 Cyclen)^-1 = 727273

double VarTimer(double TimeX)
{
  unsigned long int zahler=0;

  zahler=TimeX*(1/(0.0000001375*11.0));

  while(zahler!=0)
  {
    zahler-=1;
    asm volatile ("nop");
  }

  return 0;
}

Autor: Georg W. (gewe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fazer150ps:

Hast Du Dir die LCD Library von Peter Fleury http://jump.to/fleury schon 
mal angesehen?

Ist als Anregung und als Referenz zum Vergleichen meiner Ansicht nach 
nicht schlecht.

Bis bald
Georg

Autor: Fazer150ps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten.
Es funktioniert aber nur mit atmega16.
Warum es nicht auf dem atmega128 funktioniert weis ich leider immer noch 
nicht.
Es soll angeblich an den Fuses-Bits liegen.
Man soll dort was umstellen, aber leider konnte mir keiner sagen was.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es soll angeblich an den Fuses-Bits liegen.

Es könnte auch daran liegen das man ein HEX File für einen
ATMega16 nicht in einen ATMega128 brennen kann.
Beim ATMega128 sollte man auch besser die ATMEga103
Fuse abschalten.

Autor: Fazer150ps (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu 1. das man ein HEX-File vom atmega16 nicht auf ein atmega128 brennen 
kann. Es geht. Hab ich grade gemacht und es funktioniert.
Zu 2. hab ich das Fuse abgeschaltet und es funktioniert. SUPER.

DANKE.

Letzte Frage: Wofür braucht man das atmega103 Fuse beim atmega128 
überhaupt???

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.