Forum: Mikrocontroller und Digitale Elektronik ind. Adressierung/Tabelle 80515/80535 läuft nicht


von Baumann (Gast)


Lesenswert?

Hallo,
Habe ein Assembler-Programm für einen selbstgebauten Showlaser 
geschrieben, das für die Lichtmuster zuständig ist. Grundsätzlich ist 
die Funktion des Programms gewährleistet, aber die in der Tabelle 
stehenden Werte werden auf der MC-Platine im Laser nicht abgespielt.
Das selbe Programm läuft allerdings problemlos auf einem MC-Übungsboard 
mit Anzeige an dem ich meinen Laser testweise angeschlossen habe.
Habe bereits verschiedene EPROMS und MC ausprobiert - ohne Erfolg.
Ich bitte um Hilfe.

von Gad Z. (gad)


Lesenswert?

Genauere Angaben z.B. zum verwendeten MC wären schon hilfreich :-)

von Peter D. (peda)


Lesenswert?

Baumann wrote:
> Ich bitte um Hilfe.

Den Hellseherlehrgang habe ich leider mit "6" abgeschlossen.

Ohne jegliche Angaben kanns alles mögliche sein.


Ich würde statt externen SRAM und EPROM nen 8051 mit internem Flash und 
Bootloader verwenden, damit hat man schonmal einen Großteil der 
Verdrahtungsfehler ausgeschlossen.
Außerden testet es sich viel leichter (kein EPROM umstöpseln).


Peter

von Baumann (Gast)


Angehängte Dateien:

Lesenswert?

Bei der µC-Übungsplatine kommt ein 80C535 mit externem RAM zum Einsatz. 
Ins RAM wird das assemblierte Programm ab Adresse 8000H geschrieben. Für 
den Speicherbereich von 0000H - 7FFFH wird ein EPROM verwendet auf dem 
sich das Monitorprogramm für die Displayanzeige befindet.
Zum assemblieren verwende ich µVision, das mir das Programm über RS232 
ins RAM lädt.
Hier ist mein Programm voll funktionsfähig.

In meinem Laser kommt eine kleine Platine zum Einsatz, auf der sich 
lediglich der µC 80C515 (80C535 auch schon getestet), ein D-Latch, das 
EPROM und sonstige Bauteile wie Quartz, Widerstände und Kondensatoren 
befinden. Das Assemblierte Programm wird als hex-File auf das EPROM 
gebrannt und in die Platine eingesetzt.
Diese Platine kommt bei Kollegen bei anderen Anwendungen zum Einsatz und 
funktioniert dort bisher gut.
Grundsätzlich ist auch mein Programm auf dieser Platine funktionsfähig. 
Über einen Drehwählschalter an der Front des Lasers gelangt man in 
verschiedene Programmteile (Abfrage Port 1.1 bis 1.4.). In diese vier 
Programmteile sollen dann verschiedene Lichtmuster mit Hilfe einer 
Tabelle programmiert werden. Für die Tests habe ich bisher nur einen 
Auszug der Lichtmuster für den ersten Programmteil eingefügt. Die 
Umschaltung in die einzelnen Programmteile funktioniert, jedoch werden 
die in der Tabelle befindlichen Werte nicht abgearbeitet, sondern der µC 
incrementiert lediglich den Port 4. Port 4 ist für die X-Ablenkung, Port 
5 für die Y-Ablenkung des Laserstrahls zuständig. Das Programm habe ich 
als .txt im Anhang eingefügt.

Danke Baumann

von Peter D. (peda)


Lesenswert?

Baumann wrote:

> Umschaltung in die einzelnen Programmteile funktioniert, jedoch werden
> die in der Tabelle befindlichen Werte nicht abgearbeitet, sondern der µC
> incrementiert lediglich den Port 4.

Das ist in der Tat äußerst merkwürdig, ich kann nirgends ein "INC P4" 
entdecken.

Das Programm sollte gehen, hast Du es mal simuliert ?

Ist es auch wirklich das, was Du reingebrannt hast ?

Dann kann der Fehler ja nur noch in der Hardware liegen.


Peter

von Baumann (Gast)


Lesenswert?

Habe das Programm nicht simuliert - keine Möglichkeit - keine Software.
Aber wie bereits erwähnt, wenn ich meinen Laser an die Übungsplatine 
anschliesse, werden die Programmierten Lichtmuster abgespielt.

Zur zweiten Frage: War sicher dieses Programm.

Habe auch schon auf einen Hardwarefehler getippt und deshalb ein 
Lauflicht programmiert das über alle ausgehenden Ports läuft. Ergebnis: 
alles OK. Ein Kollege hat das Board sogar getestet. Es funktionieren 
z.B. auch externe Interupts.

Deshalb gehe ich nicht mehr von einem Hardwarefehler aus.

Baumann

von Peter D. (peda)


Lesenswert?

Baumann wrote:
> Habe das Programm nicht simuliert - keine Möglichkeit - keine Software.

Ich behaupte mal, in µVision ist dochn Simulator drin.

Oder:

http://home.arcor.de/jensaltmann/jsim_entry.htm


Schade, daß Du so nen alten Exoten nimmst und nicht nen standard 8051 im 
DIP40 oder PLCC44.

Dann könntest Du einfach nen AT89C51ED2 reinpappen, Latch+EPROM 
rausschmeißen, MAX232 dranklemmen und direkt vom PC downloaden.


Peter

von Baumann (Gast)


Lesenswert?

Danke Peter,

das Problem ist, dass ich vom Chef aus diese Komponenten verwenden muss! 
Die kleinen µC Platinen wurden extra geroutet und geätzt.

Ich schau mal nach den Simulatoren. Meld mich dann wieder. Kann aber 
Montag werden.

Was ist eigentlich mit den include Dateien? Kann es sein dass die 
Probleme machen?

Baumann

von Peter D. (peda)


Lesenswert?

Baumann wrote:

> das Problem ist, dass ich vom Chef aus diese Komponenten verwenden muss!

Scheint wohl ein älterer Herr zu sein.

Es gibt doch seit etwa 14 Jahren Flash-MCs.

Mein EPROM-Brenner dient nur noch als Staubfänger.


Peter

von Karoly Kovacs (Gast)


Lesenswert?

Die Lösung ist MOVC, nicht MOVX!

Also in Deinem Programm:
...
LOOP:  MOVX A,@DPTR            ;Daten auf die DPTR zeigt, in Akku laden
...

Deine Tabelle ist in Programmspeicher (Code segment)!

Siehe noch z.B:
http://www.ieap.uni-kiel.de/surface/ag-berndt/lehre/fpmc/mikrocontroller-2.pdf

(Bemerkung: in bestimmten Konfigurationen, wenn der externe Speicher 
auch als Programmspeicher konfiguriert ist, funktioniert MOVX auch.)

Karoly

von Peter D. (peda)


Lesenswert?

Karoly hats gefunden, allerdings:
1
...
2
  CLR A
3
  MOVC A, @A+DPTR
4
...

Nun ist mir auch klar, warum P4 hochzählt.
Ohne angeschlossenen XRAM liest Du die low-Adresse zurück (wird in den 
Pin-Kapazitäten gespeichert).


Peter

von Karoly Kovacs (Gast)


Lesenswert?

@Peter:

Du hast natürlich Recht! Ich habe es versehen (habe die Zeile bloß mit 
cut-n-copy übernommen, und die Buchstaben "mechanisch" geäendert).

Sorry!

Karoly

von Baumann (Gast)


Lesenswert?

Vielen Dank, probier ich sofort aus. Das EPROM wird bereits mit UV Licht 
bestrahlt.

Baumann

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.