Forum: Mikrocontroller und Digitale Elektronik LCD an M16C


von Benedikt (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin gerade ziemlich am Verzweifeln:
Am Datenbus des M16C habe ich ein 320x240 LCD mit SED1335
angeschlossen.

Das LCD initialisiert, aber gelöscht wird es nicht, obwohl am Ende der
Initialisierung der komplette Speicher mit 0 beschrieben wird.

Ich habe alles jetzt schon dutzende mal überprüft, und bin eigentlich
der Meinung, dass die Software OK ist.
Die Hardware ist auch OK, das habe ich auch schon mehrmals überprüft.
Das seltsamste ist aber, dass der Controller bis zur for Schleife alles
einwandfrei ausführt, aber aus irgendeinem Grund alles ab hier
ignoriert, bzw. alles was danach kommt. Oder er hängt sich auf.
Aber warum ?

von Benedikt (Gast)


Angehängte Dateien:

Lesenswert?

hier der Rest vom Programm

von Tobias Schneider (Gast)


Lesenswert?

Bist du dir sicher, dass die Timings des LCDs eineghalten werden?

von Benedikt (Gast)


Lesenswert?

Ja, das war auch mein erster Gedanke. Der Controller läuft mit <1MHz,
das sollte reichen...

von Benedikt (Gast)


Lesenswert?

Hab den Fehler jetzt gefunden:
Da der uC bei jeder Schleife und auch beim Rücksprung von jedem
Unterprogramm abgestürzt ist, kam ich drauf, dass das interne RAM nicht
funktioniert.
Im Processor Mode Register war ein Reserved Bit gesetzt, welches es nur
beim 626 gibt. Beim 624 muss es auf 0 gesetzt werden...
Schon merkwürdig was diese reserved Bits an Fehler verursachten: Setzt
man das PLL bit beim 624 funktionieren die ADCs nicht...

Allerdings kotzt mich der Compiler an, der scheinbar einige Fehler
hat:
Wenn ich diesem Unterprogramm eine 0 übergebe müssten doch alle
Festplattenregister mit 0 beschrieben werden, außer dem ersten in dem
eine 1 stehen sollte. Auf dem LCD sollte dasselbe erscheinen. Oder irre
ich mich da ?

void SetCHS (unsigned long LBAAdresse)
    {Check_Busy ();
    IDE_Sector=(LBAAdresse%NumSectors)+1;
    IDE_Device=(LBAAdresse/NumSectors)%NumHeads;
    IDE_CylinderLow=(LBAAdresse/NumSectors/NumHeads)&255;
    IDE_CylinderHigh=(LBAAdresse/NumSectors/NumHeads)/256;

    DispBCD (6, 3, 5, (LBAAdresse%NumSectors)+1);
    DispBCD (7, 3, 5, (LBAAdresse/NumSectors)%NumHeads);
    DispBCD (8, 3, 5, (LBAAdresse/NumSectors/NumHeads)&255);
    DispBCD (9, 3, 5, (LBAAdresse/NumSectors/NumHeads)/256);
    DispBCD (10, 3, 5, LBAAdresse);
    }

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.