Problem beim Programmieren des AT89S52 Mikrocontrollers

#4001359
Lesenswert?

Hallo,

ich versuche schon seit langem den Mikrocontroller AT89S52 mit dem 
MiniPro Programmer modell: TL866CS zu programmieren aber es klappt immer 
noch nicht. Ich kann die Hex-Datei problemlos laden aber ich kriege 
immer diesen beigefügten Fehler, wenn ich mit der Programmierung 
anfange.

Hat jemand vielleicht eine Idee, woran das liegen kann?

Gruß

Yann
Angehängte Dateien:
Gast #4001384
Lesenswert?

klicke vielleicht mal "Check Device ID" an um zu prüfen, ob es wirklich 
genau der erwartete Controller ist und ob die Kommunikation mit ihm 
grundsätzlich funktioniert. (Die ChipID FF FF FF sieht nicht so passend 
aus).
Gast #4001530
Lesenswert?

Wird der USB Treiber richtig erkannt? Hast Du mal ein anderes bzw. 
kürzeres USB-Kabel verwendet? Du könntest mal messen, ob der PIN 33 "ALE 
/PROG" ein Rechteck Signal ausgibt. Dieses kannst Du mit dem Oszi 
messen. Falls dieses nicht anliegt, läuft der µC nicht.
Ich programmiere meinen AT89S52 immer mit dem Parallelport, funktioniert 
auch unter Windows 7 64-bit wunderbar.
#4002695
Lesenswert?

Achim S. schrieb:
> Macht der denn (sinngemäß) eine 1 zu 1 Verdrahtung der 44PLCC-pins auf
> die 40 PDIP-pin?

Ich weiss es leider nicht, weil es in der Anleitung nicht steht. Aber 
ich denke schon. Da ich nur einen Multimeter habe, ist es mir schwer 
beim Programmieren zu wissen, ob alle die Pins angesteuert sind. Ich 
habe aber die Spannung bei VCC gemessen und das liegt bei etwa Null, 
wenn ich auf "Program" klicke. Ich bin auch die ganzen Pins des Adapters 
durchgelaufen und habe bei manchen 1,9V und bei den anderen 0V.

Gruß

Yann
#4002722
Lesenswert?

Matze schrieb:
> Wird der USB Treiber richtig erkannt? Hast Du mal ein anderes bzw.
> kürzeres USB-Kabel verwendet?

Ja, der USB Treiber wird richtig erkannt. Nein ich habe kein anderes 
kürzeres USB-Kabel verwendet. Da ich über keinen Oszi zu Hause verfüge, 
habe ich aber die Spg gemessen und das liegt bei 5V auf dem Pin 33 
"ALE/PROG". Verwendest du ein Programmiergerät, um deinen MC zu 
programmieren?
Mein MC ist mit dem Max232 verbunden und dieser hat 2 DB9 Stecker. 
Könnte ich einen davon nutzen um den MC durch den RS232 Kabel direkt am 
PC zu programmieren?

Gruß

Yann
Gast #4002802
Lesenswert?

Yann Bauer schrieb:
> Ich
> habe aber die Spannung bei VCC gemessen und das liegt bei etwa Null

?????
Wenn wirklich VCC bei Null liegt brauchst du wohl nach anderen 
Fehlerquellen nicht mehr zu suchen. Wie soll der µC ohne Versorgung 
irgendwas machen?

>> Macht der denn (sinngemäß) eine 1 zu 1 Verdrahtung der 44PLCC-pins auf
>> die 40 PDIP-pin?
>
> Ich weiss es leider nicht, weil es in der Anleitung nicht steht.

mit dem Multimeter die wichtigsten Leitungen durchklingeln (und als 
erstes VCC)
Gast #4002866
Lesenswert?

Peter Dannegger schrieb:
>> Macht der denn (sinngemäß) eine 1 zu 1 Verdrahtung der 44PLCC-pins auf
>> die 40 PDIP-pin?
>
> Ein 1:1 Adapter geht definitiv nicht. Es müssen genau die richtigen 4
> Pins unbeschaltet sein.

deshalb der Hinweis "sinngemäß" in Klammern. Die 4 NC-pins des PLCC44 
sollten natürlich ausgenommen sein.
#4005751
Lesenswert?

Hallo,

ich habe mir heute einen anderen Mikrocontroller besorgt, weil ich 
dachte, dass der andere vielleicht kaputt war aber ich konnte den immer 
noch nicht programmieren. Also liegt es nicht am Mikrocontroller. An der 
Uni habe ich versucht, mit einem anderen Programmiergerät und zwar 
Batronix und dem gleichen PLCC44-DIP40 Adapter den neuen MC zu 
programmieren und das hat vollkommen funktioniert. Also vermute ich, 
dass es vielleicht am Programmiergerät liegt. Kann sein, dass er den 
Chip AT89S52 nicht erkennt oder an der Software nämlich MiniPro V6.0.

Sonst hat jemand vielleicht eine andere Vermutung?

Gruß

Yann
Gast #4005769
Lesenswert?

Hallo Yann,

ich habe einen eigenen ISP-Programmer gebaut und das Programm dafür 
geschrieben. Ursprünglich ist das Gerät für 89S8252 und 89S8253, damit 
funktioniert es seit Jahren tadellos. Nun versuche ich den 89S52 zu 
integrieren, aber der zickt gewaltig.

Bislang habe ich soviel darüber herausgefunden: Wenn der 89S52 in den 
Programmiermodus geschaltet werden soll, bestätigt er das, laut 
Datenblatt, mit 69h. Ich bekomme meist ein 49h zurück. Ob nun das 
Datenblatt falsch ist, oder mein Timing kann ich noch nicht sagen.

Dein Problem scheint ähnlich zu sein, trotz Paralellmode - der 89S52 
geht nicht in den Programmiermodus. Vielleicht kannst du in deiner 
Software die Kommunikationsbytes einstellen?

Gruß. Tom
Gast #4006037
Lesenswert?

Yann Bauer schrieb:
> ich habe mir heute einen anderen Mikrocontroller besorgt, weil ich
> dachte, dass der andere vielleicht kaputt war aber ich konnte den immer
> noch nicht programmieren. Also liegt es nicht am Mikrocontroller.

Ich hätte mir erst mal einen mit DIP-40 besorgt oder auch nur geborgt.
Da kann man das Programmiergerät testen.
Gast #4006176
Lesenswert?

War wohl nix. Habe das Timing überarbeitet und jetzt antwortet der 89S52 
anständig mit 69h. Programmieren läßt er sich noch immer nicht, aber das 
ist eine andere Baustelle.
Übrigens, in ISP-Betriebsart kennt der Chip zwei verschiedene Modi, 
Byte- und Page-Modus. Vielleicht kennt er in der paralellen Betriebsart 
ähnliches und eine der Beiden funktioniert mit deinem Programmer?

Gruß. Tom
#4006520
Lesenswert?

Probier dochmal nen 8051 mit Bootloader, z.B. AT89C51RB2 (gibts bei 
CSD).
Den kannst Du ohne Programmiergerät in der Schaltung programmieren.
Es muß außer der Grundbeschaltung (Quarz, Reset) nur die UART über 
MAX202 an den PC angeschlossen werden.
Und ein Jumper PSEN nach GND, um in den Bootloader zu gelangen.
Hat der PC keine UART, geht auch jeder USB-RS232 Umsetzer.
Dann von Atmel das Flip laden und ausführen.
Gast #4006895
Lesenswert?

Hallo Yann,

jetzt läßt sich mein 89S52 programmieren, der Knackpunkt war das Timing. 
Für den 89S52 mußte ich das Timing, gegenüber 89S8252/53, stark 
verlangsamen. Vielleicht kann dein Programmer irgendwie verlangsamt 
werden?

Zur Kontrolle habe ich meine Chips in einem Paralell-Programmiergerät 
(GalepIII) überprüft, das hat den Chip sofort richtig bedient.

Ich weiß nicht wofür du den Chip brauchst (beruflich/privat), aber wenn 
es dir weiterhilft kann ich dir mein Programm und einen Plan für das 
Programmiergerät zukommen lassen. Das Programmiergerät wird an die 
Druckerschnittstelle (LPTx) angeschlossen, die muß natürlich vorhanden 
sein. Oder noch besser, besorge es dir gleich bei Atmel. Die haben alles 
schon fertig als ISP-Programmer zum downloaden.

Gruß Tom
#4008072
Lesenswert?

Hallo Tom,

vielen Dank aber ich habe den Chip auch mit GalepIII programmieren 
können. Also mit den Batronix und GalepIII Programmiergeräten wird mein 
Chip sofort erkannt. Ich habe auf dem Chip ein kleines Programm (siehe 
Anhang) für die Ansteuerung der auf meiner Platine liegenden vier grünen 
LEDs. Die Ports P0_0 bist P0_3 sind die Ports, an denen meine 4 LEDs 
angeschloßen sind. Anbei steht auch die Schaltung der LEDs. Leider tun 
die LEDs gar nichts, wenn ich den MC wieder auf der Platine reinstecke. 
Vielleicht könntest du mir sagen, ob das obere C Programm korrekt ist. 
Ansonsten würde ich jetzt mal prüfen, ob mein MC 5V beim Einschalten der 
Platine bekommt.

Gruß

Yann
Angehängte Dateien:
Gast #4008226
Lesenswert?

Hallo Yann,

ich habe mir dein Programm kurz angesehen, es sollte funktionieren. Aber 
so schnell, daß du die einzelnen Zustände nicht erkennen kannst. Du 
brauchst eine Wartezeit, um die Vorgänge langsamer zu machen. Irgendeine 
Warteschleife für ca. 100ms - 1s. damit das blinken sichtbar wird.

Deine Befehle kannst du vereinfachen (sofern der Compiler mitspielt).

Z.B:   P0_0 = !P0_0 bewirkt das gleiche, den invertierten
                    Bitzustand wieder ausgeben (umschalten)

Den Mikrocontroller, zum programmieren, jedesmal aus der Schaltung 
nehmen ist recht umständlich. Dafür hat der Chip doch die 
ISP-Schnittstelle, damit kann man ihn in der Schaltung programmieren. 
Schau dir mal das ISP-Programmiergerät von Atmel an. Das ist einfach zum 
nachbauen und das Programm dazu kann fertig heruntergeladen werden.

Mein Programm ist leider noch nicht fertig, es kann den 89S52 jetzt 
löschen und programmieren. Es fehlt noch lesen, vergleichen, sichern, 
dauert also noch etwas bis es praxistauglich ist. Getestet ist es mit 
WinXP und Win7, braucht aber eine Druckerschnittstelle und einen 
Treiber.

Geplant ist auch ein kleines Experimentierboard mit dem 89S52. Darauf 
verwende ich mal einen 128kByte RAM-Baustein. 64K als (downloadbarer) 
Programmspeicher, 64K als Datenspeicher. Damit kann man Programme durch 
einen Bootloader über Schnittstelle direkt in den RAM-Programmspeicher 
laden. Hätte den Vorteil daß es schneller geht als ins Flash und keine 
Begrenzung der Zyklen besteht. Das Flash hat ja "nur" 10000 garantierte 
Schreib/Löschzyklen. Ein Prototyp mit USB-Schnittstelle existiert schon, 
muß halt noch eine Platine dazu gemacht werden - dauert also noch. 
Beitrag "Re: 8051 - Programm und Daten in einem 128kB Chip ohne Overlap"

Gruß. Tom
Gast #4008256
Lesenswert?

Habe den Text nochmal gelesen, das ließt sich ja wie der Werbetext für 
ein Gerät das man bald kaufen kann. Nein, so ist es nicht. Wenn das Zeug 
funktioniert, werde ich die Pläne, Layouts und Programme hier 
veröffentlichen. So kann sie jeder nachbauen, sofern es überhaupt 
jemanden interessiert.

Gruß. Tom
Gast #4008265
Lesenswert?

Yann Bauer schrieb:
> Die Ports P0_0 bist P0_3 sind die Ports, an denen meine 4 LEDs
> angeschloßen sind.

Dumm gelaufen: beim 8051ern können die IOs ganz allgemein viel mehr 
Strom bei Low-Pegel treiben als bei High-Pegel. Lasten wie eine LED 
werden deshalb immer an der Kathode geschalten, und die Anode kommt über 
den Vorwiderstand auf VCC.

Bei Port 0 ist es gleich nochmal heftiger: der hat reine Open Collector 
Treiber. Bei deiner Beschaltung kann der 89S52 also gar keinen Strom 
treiben.
#4008335
Lesenswert?

@Peter,

dke für deine schnelle Antwort. Wie ich dich verstanden habe muss die 
LED nach oben (Kathode gegen VCC) und ihr Vowiederstand nach unten sein.

Ehrlich habe ich nicht ein einziges Mal daran gedacht, dass es so sein 
könnte. P0 ist open drain!! Was heißt eigentlich? Welcher Einfluss hat 
es auf meine obere gezeigte LED-Schaltung? Tut mir leid aber ich 
verstehe es nicht, obwohl ich das Datenblatt gelesen habe.

Gruß

Yann
Gast #4009837
Lesenswert?

Hallo Yann,

so ist es genau richtig. Der Vorwiderstand kommt mir mit 1k etwas 
hochohmig vor, das hängt aber auch von der LED ab. Einfach mal die LED 
mit ihrem Widerstand zwischen VCC und GND klemmen und prüfen, ob sie dir 
hell genug leuchtet.

Gruß. Tom

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren