Forum: Mikrocontroller und Digitale Elektronik 89s8252 Problem


von Hermann Gebert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

bin leider blutiger anfänger und hab mehr als drei Tage gebraucht den 
8928252 per ISP über den parallelen zu programmieren .. nutze dazu sp89, 
was angeblich auch klappt. Zumindest behauptet dies das Programm. Nun 
mein Problem: der Code, den ich hochlade, wird absolut nicht ausgeführt 
... Compiliert wurde er mit ASEM51 1.3! Wer weiß Rat? .. Was mach ich 
falsch? Ich verzweifele! Muss ich nach dem Programmieren noch 
verschiedene Pins umändern?

Danke schonmal ...

 Hermann

PS: Der Code (im Anhang) soll übrigends immer nur P2.6 (da is ne Diode 
mit Vorwiderstand dran) an- und ausschalten! Habe das auch schon an zich 
anderen Ports probiert, aber nichts ging!

von Peter D. (peda)


Lesenswert?

EA, Reset, Quarz überprüfen.

An ALE muß Quarz / 6 rauskommen, PSEN muß konstant high bleiben.


Peter

von hoschi (Gast)


Lesenswert?

Hallo!

Wichtig!: EA an +5V damit er den Code im Flash nimmt.
Wenn du nen Quarzoszillator benutzt, sollte am Oszi-Ausgang ca. 1,8 Volt 
bei einem Digitalmulti rauskommen.
Nimm mal einen Pin von Port1 und häng die LED von +5V über Vorwiderstand 
an den Pin.

Noch nen Tipp für einen Programmer: Ich benutze AEC_ISP mit einem 89S53 
über Parallelport. Funktioniert ohne Probleme.
SP89 habe ich schon von Problemen gehört, getestet hab ich noch nicht.

Gruß,
hoschi

von Hermann Gebert (Gast)


Lesenswert?

Danke erstmal für die Tips ... leider geht es noch immer nicht ... hab 
es jetzt nochmal mit AEC_ISP probiert und jetzt geht garnichts mehr .. 
er behauptet, dass er den flash beschrieben hat und wenn ich ihn wieder 
auslese, ist immernoch alles auf ff ... das nen programm mal 
abgearbeitet wird ist sowieso nicht drinn! Vielleicht nochmal ein paar 
Worte zum Board:

Vcc an +5V
EA an +5V
PSEN an +5V

Quarz 16MHZ an XTAL1 + XTAL2 sowie über 33pF and GND

RESET über 1uF (50V +-20%) an +5V und über 22k0 an GND

SCK über 22pF und 100 Ohm an GND

Der Parallelport wurde je nach Software angeschlossen (MISO, MOSI, SCK, 
RESET, GND)

Den Quarz kann ich leider nicht prüfen, da ich keinen Oszi habe ...

Hermann

von hoschi (Gast)


Lesenswert?

ich nochmal,

>PSEN an +5V
Nein! Könnte eventl. den Kontroller schädigen????? Einfach mal frei 
lassen. Der PSEN-Pin brauchst du nur beim Ausführen von externem Code.

Den Reset würde ich mit 10uF und 10KOhm machen. Ich denke 1uF ist für 
den Reset bei den 89SXX etwas zu klein, dann springt er dir lustig im 
Flash rum.
Sonst: Vcc an +5V, EA an +5V, und auf alle Fälle ein 100nF-Kondensator 
zwischen +5V und GND zum Entstören.

>SCK über 22pF und 100 Ohm an GND
Hä????

Du schreibst du hättest es mit AEC_ISP versucht, kuck dir mal die 
Anleitung (AEC_ISP.PDF) dazu an. Das einzige Problem dabei ist, dass du 
auf alle Fälle zuerst den Controller an Spannung legen musst!!!, dann 
erst PC an, dann Flashen, Reset-Freigabe im Menü auf HIGH (dann müsste 
das Prog laufen). Beim Ausschalten zuerst PC aus, dann Spannung an 
Kontroller weg!!!
Hab mal einen 74HC244 zum Entkoppeln versucht, ging mit AEC_ISP aber 
irgendwie nicht.
Achso: Bei AEC_ISP im Setup-Menü Reset-High setzen!

Mehr fällt mir grad nicht ein, eventl. Steckerbelegung Parallelport 
prüfen, sind bei jedem Programmer anders.
Eventuell mal ein Quarzoszillator (24 Mhz) an Stelle von Quarz + 
Kondensatoren.
Wenn du Pech hast ist der Controller hinüber.

Gruß,
hoschi

von Arne K. (Gast)


Lesenswert?

Hallo,

auch wenn Deine Hardware stimmt, kann Dein Programm nicht laufen! Grund 
ist folgender:
Eine Routine, die mit RETURN endet, kann nur mit einem CALL aufgerufen 
werden, da nur dieser Befehl die Prg-Adresse auf dem Stack hinterlegt, 
von der aus ins Unterprogramm gesprungen wurde und zu der bei einem 
RETURN zurückgesprungen wird. Dein Stack ist aber leer und der MC macht 
bei 'ret' im Unterprogram 'waitmal' alles, nur nichts was er soll... .

Ändere einfach im Hauptprogram die Zeile "jmp waitmal" in ein "call 
waitmal" wobei das eigentliche Mnemonic 'ACALL' für Sprünge innerhalb 
11Bit-Adresse und 'LCALL' für Sprünge innerhalb 16Bit-Adresse ist.
Ansonsten läuft Dein PRG. Ich habe es eben getestet - so ein 
Epromsimulator ist schon eine feine Sache.... grins

Bin mir sich geholfen zu haben... ;-)

Gruß,
Arne

von Hermann Gebert (Gast)


Lesenswert?

Hallo,

habe alle Vorschläge von hoschi umgesetzt! Habe die Parallelport 
anbindung überprüft und alles nochmal versucht! -> NIX! Es geht nix! .. 
aber hier vielleicht noch etwas, was weiterhilft!
Wenn die flash und eprom buffer vom AEC_ISP leer sind (alles ff) dann 
zeigt er mir vortschrittsbalken an .. verifiziert den code und sagt: OK 
.. (ich habe keine ahnung ob sich das programm bei leeren buffern alles 
spart und nur so tut oder ob es wirklich was reinschreibt) wenn ich 
jedoch das led.hex (welches ich mit dem call befehl modifiziert habe 
(thx Arne) in den flash (oder eprom) buffer schreibe und wieder 
programmieren will, bekomme ich die folgenden Meldungen "Error while 
programming flash memory" und beim Verifizieren "Flash byte error in 
address 0000"! Also leider alles so wie vorher ...

Hermann

PS: nochmal ein zwischen-danke für die super schnelle und freundliche 
Hilfe ...

von ERDI - Soft (Gast)


Lesenswert?

Hi,

wie lang ist denn dein Parallelportkabel? Wenns zu lang ist, dann kommen 
die Signale nicht mehr richtig an, und der Controller versteht nichts 
von dem, was dein PC von ihm will.

Ich benutze schon immer die AEC_ISP Software. Ist ein klasse Teil. Nur 
das Interface habe ich ein wenig modifiziert. Hab noch ne 
Signalaufbereitung reingebaut. (Ist, glaube ich, ein 7438. Müsste ich 
allerdings nachschauen.)

Probiers doch einfach mal mit nem ganz kurzen Kabel. (Max. 30cm lang. 
Und häng auf jeden Fall den PSEN von +5V weg. Der hat nichts mit dem 
ISP-programmieren zu tun. Den brauchst du nur, wenn du mit externem 
Speicher arbeiten willst.)

Wie du schon gesagt hast, musst du bei der Software erst den Buffer 
füllen, bevor du programmieren kannst.

Bis denn, ERDI - Soft.

von ERDI - Soft (Gast)


Lesenswert?

Note: At89s8252 SPI needs sharp edges at SCK pin. Some
PC parallel cards has high capacitance at the output
pins requiring a 72HCT14 to rebuild those pulses:

                   .---- 74HCT14 ----.
                   |                 |
      10 ACK -------10  11-----12  13------P1.6 MISO
       8 D6 ---------1  2---@---3  4---@---P1.7 SCK
       7 D5 ---------9  8-------5  6-------P1.5 MOSI

             Connect a 1nF cap from (@) to ground.

OK! So sollte das Programmierkabel auf der µControllerseite aussehen. 
Dann sollte es einwandfrei funktionieren.

von Hermann Gebert (Gast)


Lesenswert?

Hallo,

danke für die Tips .. leider hilft alles nichts ... sobald er anfängt 
was zu schreiben bricht er ab ... d.h. wenn ich die start  adresse auf 
0000h setze bricht er sofort ab ... wenn ich sie auf 1000h setze kommt 
er so bis 50% bei 1b00h bis 80% und bei 1ff0h bis 90% .. also alles was 
nicht ff ist macht ihm Probleme ...
Ich habe mal die Pins vom parallelen gemessen und da ist mir 
aufgefallen, dass sich auch der 5 PIN also D3 immer zwischen high und 
low bewegt ... der ist jedoch bei der Belegung von aec_isp garnicht 
vorgesehen ... warum wird er dann angesteuert? Naja .. die anderen 
werden auch angesteuert also insofern ist das Kabel glaube ich auch OK 
... kann ich den Chip noch anders programmieren? Seriell oder so? 
Langsam verliere ich die Hoffnung ...

Hermann

von Stifflers Mom (Gast)


Lesenswert?

Moin Hermann!

Wenns dich tröstet ich hab das selbe Problem mit den 8252 und bin trotz 
high-tech-oszi noch nicht weiter!

MfG und wenn du den Fehler hast sag bescheid!

von Peter D. (peda)


Lesenswert?

Ich benutze diesen Programmer und hatte noch nie Probleme mit dem 
AT89S8252:

http://www.specs.de/users/danni/tools/isp53/index.htm

Du mußt bloß einmal den benötigten AT89C2051 programmieren lassen, z.B. 
bei Segor.


Peter

von ERDI - Soft (Gast)


Lesenswert?

Was für nen Rechner habt ihr denn? Was für ein Betriebssystem? In 
welchem Modus läuft eure parallele Schnittstelle? Ist das Target-Board 
auch mit Spannung versorgt?

Denkt daran, das Kabel muß kurz sein. (Oder mit ner Signalaufbereitung 
beim µController ausgestattet sein!)

Waren die Controller schon mal programmiert? (Vielleicht sind die 
Schutzbits gesetzt. Dann muß dann den Controller komplett löschen.) Geht 
der Controller überhaupt? Schwingt der Oszillator? Benutzt ihr auch das 
richtige Kabel? (Muß 1:1 durchverbunden sein.)

So, diese Fragen sollten euch mal ne weile beschäftigen. Wenns dann 
immer noch nicht funktioniert, probiert es mal auf nem anderen Rechner.

Bis denn, ERDI - Soft.

von Stifflers Mom (Gast)


Lesenswert?

Kann mir jemand mal ne Funktionierende hex schicken, die einfach einen 
PORT-pin setzt und löscht?
Danke schon mal!

von ERDI - Soft (Gast)


Lesenswert?

Noch mal was:

Welchen Typ benutzt Ihr? S oder LS?
Ich weiß nicht, ob die Programmiersoftware den Typ abfrägt oder nicht. 
Falls ja, kann das der Grund sein, warum der Controller nicht 
programmiert wird.
(Auch mal in der Software den richtigen Typ einstellen.)

von Stifflers Mom (Gast)


Lesenswert?

Ich hab nen 89S8252!

von hoschi (Gast)


Lesenswert?

Hallo!

Also, wie gesagt, pass auf die Reihenfolge beim Anlegen der Spannung 
auf, sonst ist der uC und vielleicht auch die parallele Schnittstelle 
des PC hinüber. Dann bringen hier alle Nachbesserungen nix mehr.
Mein 89S53 tat auch mal kurz nix mehr. Bier getrunken, eine Nacht 
geschlafen, Verbindungen nochmla gecheckt -> er ging wieder.
Ich würde mal beim Quarz anfangen, ob der was tut. Mit digitalmulti zwar 
schwer, wenn am Ausgang des Oszi aber ca. 1,8 bis 2,4 Volt anliegen 
müsste er tun.
Kabel max. 30 cm zwischen PC und Controller, Pins 18-25 an GND.
Was noch ein Versuch Wert wäre: LEDs an Port 1 und ein paar mal den 
Reset durchführen und kucken, ob die LEDs an/aus gehen.
Hast du die Resetbeschaltung auf 10uF und 10K geändert?
Setup-Einstellungen im Menü von AEC_ISP richtig (Reset=High)?
Hast du noch irgendwelche Geräte am Parallelport installiert oder noch 
alte Scannertreiber etc. installiert?
Meiner läuft mit Windows98 und 486 bzw. Pentium 1GHz einwandfrei.
Gruß,
hoschi

von ERDI - Soft (Gast)


Angehängte Dateien:

Lesenswert?

Ok, hier nun ne kleine HEX, die mit dem AT89S8252 funktionieren müsste. 
(Mit dem L-Typ auch. Hab sie allerdings nicht ausprobiert.)

von ERDI - Soft (Gast)


Angehängte Dateien:

Lesenswert?

Dazu noch die passende Beschreibung.

von Stifflers Mom (Gast)


Lesenswert?

Moin!

Danke für die hex, aber kann ich die hex einfach speichern?
Am besten du schickst mir dir hex noch mal per mail.
Ronny.Fritz@sew-eurodrive.de
DANKE!!!
MfG

von ERDI - Soft (Gast)


Lesenswert?

Rechtsklick, "Save Target as.." oder "Ziel speichern unter...", und 
schon hast du die original HEX-Datei bei dir auf der Platte.

von Hermann Gebert (Gast)


Lesenswert?

Hallo,

also nachdem ich nun wirklich alles ausprobiert habe, was Ihr 
vorgeschlagen hattet, und trotzdem nichts funktioniert hat, bin ich 
heute morgen los und hab nen neuen Controller besorgt. Jetzt 
funktioniert alles einwandfrei. Habe den alten anscheinend beim 
rumprobieren zerschossen ;) ... naja ... Vielen Dank nochmal für die 
zahlreichen Tipps .. jetzt kann es endlich los gehen ;))

Hermann

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
Noch kein Account? Hier anmelden.