Forum: Mikrocontroller und Digitale Elektronik LCD init hd44780


von Fazer150ps (Gast)


Angehängte Dateien:

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?

von holger (Gast)


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?

von holger (Gast)


Lesenswert?

Da wird das Programm vermutlich hängen:

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

Wie sieht VarTimer() aus?

von Fazer150ps (Gast)


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.

von Fazer150ps (Gast)


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;
}

von Georg W. (gewe)


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

von Fazer150ps (Gast)


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.

von holger (Gast)


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.

von Fazer150ps (Gast)


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???

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.