mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 89s8253 proggen


Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag an alle,
möchte den 89s8253 von Atmel seriell über einen anderen Controller 
programmieren. Habe dafür ein Programm mit den Programmierroutinen aus 
dem Dateblatt geschrieben, doch es will einfach nicht funktionieren!
Kann mir jemand helfen oder Tips oder Code geben?
Vielen Dank schon mal im Voraus,
MC

Autor: Felix M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf welchem Controller läuft das ProggerProg ???
Kannst Du mal den Code posten ?

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Progger-Programm läuft im Momment auf einem 89s8252. "p1.3" bildet 
das Reset-Signal des zu programmierenden µCs, "lcall spi" ist eine 
Routine zum Übertragen der Daten via SPI. Die Routine sieht so aus 
(Algorythmus aus Datenblatt übernommen):
             setb  p1.3                    ;Reset am Slave-Controller auf High setzen

;Freischalten des Programmiermodus
prog_init:   mov   a,#10101100b
             lcall spi
             mov   a,#01010011b
             lcall spi
             mov   a,#00000000b            ;vervollständigen Befehl auf 4 Byte
             lcall spi
             mov   a,#00000000b
             lcall spi

chip_erase:  mov   a,#10101100b
             lcall spi
             mov   a,#10000000b
             lcall spi
             mov   a,#00000000b
             lcall spi
             mov   a,#00000000b
             lcall spi

;übertragen der Daten aus speicher
             mov   dph,#00h                ;Anfangsadresse für Codespeicher
             mov   dpl,#00h
prog_code:   mov   a,#00100000b            ;Befehl: Code wird übertragen
             lcall spi
             mov   a,dph
             lcall spi
             mov   a,dpl
             lcall spi
;             movx  a,@dptr                 ;Code aus Speicher holen
             mov   a,#00000000b
             lcall spi
             inc   dptr                    ;nächstes Codesegment auswählen

             mov   a,dph                   ;Endadresse erreicht?
             cjne  a,#07h,prog_code
             mov   a,dpl
             cjne  a,#0FFh,prog_code

;Übertragung beenden
             clr   p1.3

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigt bitte, mir ist ein kleiner Fehler unterlaufen. Im Quellcode 
steht:
;             movx  a,@dptr                 ;Code aus Speicher holen
             mov   a,#00000000b
Die Zeilen stammen aus einem Versuch, ob ich den µC wenigstens auslesen 
kann. (Hat natürlich auch nicht geklappt)
Eigentlich sollte da nur
              movx  a,@dptr                 ;Code aus Speicher holen
stehen.
Danke für eure Hilfe,
MC

Autor: Dirk Hofmann (arm-dran)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MC wrote:
> Entschuldigt bitte, mir ist ein kleiner Fehler unterlaufen. Im Quellcode
> steht:
> ;             movx  a,@dptr                 ;Code aus Speicher holen
>              mov   a,#00000000b
> Die Zeilen stammen aus einem Versuch, ob ich den µC wenigstens auslesen
> kann. (Hat natürlich auch nicht geklappt)
> Eigentlich sollte da nur
>               movx  a,@dptr                 ;Code aus Speicher holen
> stehen.
> Danke für eure Hilfe,
> MC

Routine bitte als angehängtes Textfile posten, nicht im Thread.
Und dann schon den kompletten Code. SPI Routine ???

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

Bewertung
0 lesenswert
nicht lesenswert
Bitte entschuldigt, der komplette Quellcode befindet sich im Anhang. Die 
Datei ist vom CESY Assembler, sie kann im txt-Editor ganz normal gelesen 
werden.
Danke für eure Hilfe,
MC

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag an alle,
wollte nur kurz fragen ob mir überhaupt jemand weiterhelfen kann?
Bis irgendwann,
MC

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo MC,

ich kenne mich zwar mit der 8051-Familie aus, auch speziell mit dem 
89S8252, habe aber den 89S8253 "zu Fuß" programmiert.

In wie weit hast Du den Fehler den schon versucht einzukreisen?. Kannst 
Du an der SPI die Daten auf ein Oszi legen, und schauen, ob die Bits 
richtig gesendet werden?

Gruß,
Markus_8051

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag Markus 8051,
habe mit nem Oszi die SPI-Übertragung überprüft. Sie ist beim 
Programmer-Controller einwandfrei. Habe daraufhin versucht, den zu 
programmierenden Controller auszulesen, worauf er aber nicht reagiert 
hat. Der Fehler muss entweder im Programm im Algrorythmus liegen oder 
die Programmierbefehle im Datenblatt sind falsch.
Oder ich habe irgendwo im Programm einen Denkfehler.
Übrigens ist der 89s8253 seinem Vorgänger (fast) gleich. Der einzigste 
Unterschied sind 4k mehr Programmspeicher.
Bis irgendwann,
MC

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus 8051,
weißt du vielleicht, warum ich den 89s8253 nicht proggen kann?
Wie hasst du den denn "zu Fuß" programmiert?
Bis irgendwann,
MC

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
glaube mich zu erinnern, daß sich der at89S8252 und at89S8253 gerade was 
die programmierung betrifft unterscheiden.
hast du das berücksichtigt?

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fals ich keinen Fehler habe, sollte der Programmieralgorythmus aus dem 
Datenblatt des 89s8253 im Programm umgesetzt sein.

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, habe schneller geschrieben als gedacht.

Es muß natürlich heißen: "... habe aber den 89S8253 NIE "zu Fuß" 
programmiert."

Bei Deinem Algorythmus ist mir aufgefallen:
1) Du hast die SPI mit dem Parameter LSB first initialisiert, der 
89S8253 erwartet aber MSB first. (Zur besseren Übersicht kann man hier 
direkt die Bedeutung der Bits angeben, und nicht aufs Datenblatt 
verweisen)
2) nach Reset High sollten 64 Clks lang kein SPI-Takt anliegen. Diese 
Pause kann ich in deinem Programm nirgends umgesetzt finden.

Gruß,
Markus_8051

Autor: MC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag Markus_8051,
habe das Programm soweit abgeändert, trotzdem hat es nicht funktioniert.
Woran kann das liegen?
Bis irgendwann,
MC

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.