www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89S8252 In System Programmierung


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leutens,

im Rahmen eines Schulprojektes arbeiten wir gerade an einer Lösung zur
In - System Programmierung eines AT89S8252 durch einen zweiten
AT89S8252 auf zwei getrennten Controllerboards.

Wir verwenden einen zweiten Controller, der aus einer PC - Applikation,
die wir mit Delphi programmiert haben, die notwendigen Adressen und
Datenbytes (bereits mit Write-Instruction versehen)  über V24 empfängt
und über seinen Port 0 auf die  Pins  MOSI, SCK und RST des
Zielcontrollers überträgt.

 Mittlereiweile sehen die übertragenen Informationen und der Takt am
Oszilloskop genau so aus, wie sie in den Unterlagen von Atmel
beschrieben sind, mit dem kleinen Unterschied, dass das Taktsignal
schon vorzeitig auf Low geht. Unser Ablauf sieht so aus:


1. RST anlegen

2. ca. 90ms warten

3. das "Programm Enable" Bit für Bit senden

4. die Programmdaten aus dem Hex-file geparst mit dem "Write Enable"
(aaaaa010) versehen senden

5. RST auf low


Die Bitfolge beim Übertragen ist beispielsweise:



Instruction Input Bit (MSB zuerst) anlegen

50us warten

SCK au HI

50us warten

SCK auf LO

50us waren

Nächstes Instruction Input Bit anlegen

usw.


Wir können teilweise auch schon in laufenden Programmen einzelne
Programmstellen umschreiben. Leider funktioniert das nur bei ca. 80%
aller Versuche und wir können auch noch keine kompletten Programme
übertragen. Eigentlich müsste mit unserem Timing alles in Ordnung sein.
Die Signale, die am Zielcontroller anliegen haben wir mittlerweile mit
einem TTL-Gatter verstärkt, weil wir dachten, der RST-Pegel wäre zu
schwach, aber dadurch ist unsere Fehlerhäufigkeit noch gestiegen.

Gibt es etwas, was wir da übersehen haben?

Jens

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur so ne Idee: Schon daran gedacht, daß bei Flash-Speichern die Bits
nur gelöscht, aber nicht gesetzt werden können? Um ein auf "0"
geflashtes Bit auf "1" zu setzen, muß der Flash-Speicher mit dem
"erase"-Command gelöscht werden.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@thkaiser:

zum Probieren haben wir in den Zielcontroller ein Zielprogramm geflasht
(mit 'ner Flash-Software am PC-Paralellport!), was eine LED an P1.0
eine bestimte Häufigkeit blinken lässt. Wir haben die Speicherstelle
mit diesem Byte in der Hex-Datei ausfindig gemacht, und schreiben
einzelne Werte an diese Stelle. Und das klappt. Allerdings mit 10-20%
Fehlerquote. Wenn es nicht klappt, steht an dieser Stelle noch der alte
Wert, das sieht man ja am blinken!

Trotzdem Danke

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@thkaiser:

zum Probieren haben wir in den Zielcontroller ein Zielprogramm
geflasht
(mit 'ner Flash-Software am PC-Paralellport!), was eine LED an P1.0
eine bestimte Häufigkeit blinken lässt. Wir haben die Speicherstelle
mit diesem Byte in der Hex-Datei ausfindig gemacht und die Stelle
gefunden, an der das Byte steht, und schreiben einzelne Werte an diese
Stelle. Und das klappt. Allerdings mit 10-20% Fehlerquote. Wenn es
nicht klappt, steht an dieser Stelle noch der alte Wert, das sieht man
ja am blinken!

Trotzdem Danke

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huch, wenn mal der Forenchef vorbeikommt:

Bitte diesen und den vorletzten Beitrag löschen! :-)

Jens

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja nun, diese Fehlerquote könnte eben genau damit zusammenhängen. Ich
kenne es so von der 90er-Serie der Atmels, ob allerdings bei der
89er-Serie der Flash-Speicher so anders organisiert ist, weiß ich nicht
100%-ig. Die bisherigen Flash-Speicher, die mir untergekommen sind,
ließen sich entweder komplett, oder bestenfalls Seitenweise löschen.
Einzelne Speicherstellen lassen sich üblicherweise nicht ändern, zwar
kann man ein "1" -Bit mit einem "0"-Bit überschreiben, aber nicht
umgekehrt. Das würde das Phänomen der Fehlerquote evtl. erklären. Es
bleibt also nichts übrig, als die Applikation nach dem Löschen des
Flash komplett neu zu übertragen. Soweit mein Wissensstand, vielleicht
weiß ja noch wer etwas (das Datenblatt des 89S8252 müßte in der
"Flash-ROM"-Sektion aber auch Klarheit bringen).

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.