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.
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
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
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
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
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
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
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
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
@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