www.mikrocontroller.net

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


Autor: Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gad Zinkler (gad)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karoly Kovacs (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/lehr...

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

Karoly

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karoly hats gefunden, allerdings:
...
  CLR A
  MOVC A, @A+DPTR
...

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

Autor: Karoly Kovacs (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Baumann (Gast)
Datum:

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

Baumann

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.