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.
Genauere Angaben z.B. zum verwendeten MC wären schon hilfreich :-)
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
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
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.