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
Nur eine Vermutung: Lass den Haken bei Lock-Bit beim Programmieren weg. Wenn du das Bit wirklich brauchst, setze es nach dem Programmieren.
@Georg, Dke für deine schnelle Antwort. Ich habe es schon versucht aber ich kriege immer den gleichen Fehler. Gruß
:
Bearbeitet durch User
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).
@Achim, dke für deine schnelle Antwort. Wenn ich beim "Check device ID" klicke bekomme ich das hier. Laut dieses Fehlers, habe ich noch einmal geprüft, ob der Controller richtig eingesteckt ist. Könnte es vielleicht an dem PLCC-44 Adapter liegen? Gruß
:
Bearbeitet durch User
Yann Bauer schrieb: > Könnte es vielleicht an dem > PLCC-44 Adapter liegen? Vielleicht. Macht der denn (sinngemäß) eine 1 zu 1 Verdrahtung der 44PLCC-pins auf die 40 PDIP-pin? Wenn du Messgeräte dazu hast: schau nach, ob beim Programmieren die richtigen Pins angesteuert werden.
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.
Matze schrieb: > Ich programmiere meinen AT89S52 immer mit dem Parallelport, funktioniert > auch unter Windows 7 64-bit wunderbar. Auch der AVRISP MkII kann die Dinger programmieren, aber es muss ein Quarz am MC sein, der interne Oszillator muss laufen. Stelle also sicher, das, wie oben beschrieben, ALE aktiv ist, bzw. der Oszillator läuft.
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
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
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)
Achim S. 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.
Im Datenblatt sind beide Varianten beschrieben. Da sollte es doch möglich sein, 40 Pins durch zu klingeln.
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.
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
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
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.
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
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.
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
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
:
Bearbeitet durch User
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
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
Yann Bauer schrieb: > Leider tun > die LEDs gar nichts, wenn ich den MC wieder auf der Platine reinstecke. Und damit haben sie recht, P0 ist nämlich open-drain (siehe Datenblatt). Du mußt die LEDs gegen VCC hängen.
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.
@Tom Dke für deine schnelle Antwort. Ich ändere erstmal den Code und melde mich später wieder. Gruß Yann
und beachte bitte was Peter und Achim geschrieben haben, sie haben nämlich absolut recht. Mit den LED's gegen GND wird es nicht gehen.
@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
Anode an VCC. Auch eine LED ist nur eine Diode und leitet nur in einer Richtung. Ob der Widerstand vor, oder hinter der LED liegt ist einerlei. Gruß. Tom
Achim S. schrieb: > 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. Also sollte es so wie die obere Schaltung aussehen?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.