mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Diverse Probleme T89C51


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Nachdem ich hier wirklich gut geholfen wurde meinen T89C51AC2 zu
programmieren habe ich jetzt noch diverse Probleme. Ich mache in
circuit programming  mit FLIP. Nachdem ich mit FLIP mein Programm in
den Controller geflasht habe u. einen Reset gemacht habe, läuft es
nicht selbstständig los (Natürlich PSEN vorher wieder auf High gelegt).
Wenn ich in diesem Zustand nochmal mit FLIP connecte bekomme ich keinen
Time Out Fehler. D.h. der Bootloader ist wieder gestartet worden. Dann
habe ich mir mal in den Datenblättern die Bedingungen für den
Bootloader Start angeguckt. Hardware Condition=> NEIN u. Bootloader
Jump Bit GESETZT. So sollte der meine Applikation bei einem Reset
ausführen. Macht er aber nicht...???

Hardware Condition JA => PSEN=0, EA=1
Hardware Condition NEIN => PSEN=1, EA=1

Wenn ich allerdings bei FLIP den "Start Application" Button drücke
läuft mein Proggie sofort los (PSEN=1). Kapiere ich irgendwie nicht...

So, 2. und noch viel wichtigeres Problem ist der EEPROM Lesezugriff.
Ich habe ein Programm geschrieben was aus einer Tabelle im EEPROM Daten
rausholen soll und mir im Display anzeigt. Die Daten habe ich vorher
mit FLIP schon im EEPROM abgelegt. Wenn diese nachher in meinem
Programm ausgelesen werden, bekomme ich da lauter Pfeile im Display
dargestellt (also schonmal kein FF). Zum Test ob das Display mir die
Daten richtig darstellt, habe ich mal einige Testwörter direkt im
Programmspeicher deklariert. Das funktioniert einwandfrei.
Also liegts zu 99% am EEPROM lesen. Da geht irgendwas schief.
So ungefähr sieht mein Unterprogramm aus.

clr EA          ; Alle Interrupts aus
mov EECON,#02h  ; EEPROM wird gemapped für Movx befehl
movx A,@DPTR    ; EEPROM Adressierte Speicherzelle in Akku lesen
mov DATEN,A     ; Akku in Daten sichern
mov EECON,#00h  ; unmap EEPROM
ret

Gibts da noch irgendeinen Trick ?

Wäre für ein bischen Unterstützung dankbar...
Gruß
Alex

Autor: buz11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell so :

clr EA          ; Alle Interrupts aus
mov EECON,#02h  ; EEPROM wird gemapped für Movx befehl
mov A,@DPTR    ; EEPROM Adressierte Speicherzelle in Akku lesen
movx DATEN,A     ; Akku in Daten sichern
mov EECON,#00h  ; unmap EEPROM
ret

kleiner , aber feiner Unterschied ...

Autor: buz11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung , hätte besser lesen sollen ...

Du willst ja lesen .

Hast Du den DPTR richtig geladen ?

Autor: buz11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlt irgendwo ' INC DPTR '  ?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Buz11

Erstmal danke für die Antwort. Ich habe den DPTR mit $0000 geladen. Ich
hoffe das stimmt so. Weil ich beschreibe das EEPROM ja auch ab $0000.
Aber irgendwie will das noch nicht so richtig. Hab mir jetzt mal ein
Programm geschrieben was mir den EEPROM Inhalt durchscannen soll. Der
DPTR wird immer erhöht und die Daten an einem Port ausgegeben. Ich
bekomme immer den Datenwert E0 geliefert. Das kann ja irgendwie schon
nicht sein. 1. Habe ich in meiner Tabelle diesen Datenwert nicht, und
2. Wenn ich an einer falschen Stelle lesen würde müßte ich ja ständig
FF bekommen.
Also ist da irgenwas anderes faul. Ich verbringe jetzt schon Stunden
damit, aber finde den Fehler nicht...
Ich bin jetzt noch dabei mir den DPTR aufs Display ausgeben zu lassen
und die EEPROM Daten wieder auf dem Port (zum Test). Hab das Programm
aber noch nicht fertig.
Wenn jemand aber noch einen Tip hat, nur her damit...


Gruß
Alex

Autor: Eugen Mailaender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nach dem Schreiben des(der) Datenbytes musst du noch den Befehl zum
Programmieren dess Eeproms geben:
EECON = 0x50;
EECON = 0xA0;
vergiss nach nicht eventuell wieder die Interrupts freizugeben.

Hoffe, dass ich dir helfen konnte

Gruesse
Eugen

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.