Forum: Mikrocontroller und Digitale Elektronik [newbie] blowIt programmer für 2051 ok?


von Karl W. (karlweber)


Lesenswert?

Hallo,

gestern kam die Ladung mit Elektronikteilen an und ganz stolz baute ich
mir die BlowIt-Schaltung (http://www.geocities.com/dinceraydin/8051/)
sowie eine kleine Testschaltung für den 89c2051
(http://www.iguanalabs.com/1st2051.htm) zusammen...

Naja, langer Rede kurzer Sinn:
Die LED blinkte nicht sondern leuchtete andauernd.

Die Spannungsversorgung ist stabil, ich habe die Schaltungen mehrfach
auf fehlende Verbindungen und ähnliches geprüft. Auch gehe ich davon
aus, dass ich den Qellcode, den es auf der Seite zum Download gab
richtig in intel hex code compiliert habe. Absolute "DAU"-Fehler
schließe ich also aus.

Mögliche Fehler sind wohl:
1. Quarz schwingt nicht (kann ich so nicht nachprüfen)
2. die Brennerschaltung zusammen mit dem BlowIt Programm tut nicht ganz
das, was sie soll.

Deshalb einfach mal die Frage in die Runde: Wer hat bereits erfolgreich
mit BlowIt einen 2051 beschrieben?

Mussten dafür irgendwelche Manipulationen an der Hardware vorgenommen
werden? (ich meine mich zu erinnern, dass ich dies bereits in einem
Forum gelesen hätte, kann den Beitrag jedoch nicht mehr finden)

Seltsam finde ich, dass ich beim ersten mal Beschreiben  die Meldung
des Programmes bekommen habe, dass alles wunderbar funktioniert hat.

Als ich dies (nachdem der uC nicht das machte, was er soltle) ein
zweites Mal tat, kam die Fehlermeldung:
 "Never Ready ? Programming aborted."

Naja, vielleicht kann mir ja irgendeiner aus Erfahrung ja einen Tipp
geben, in welche Richtung ich mich mal schlau machen könnte.

Für BlowIt entschied ich mich in erster Linie, da ich keinen
programmierten Chip benötig und mit relativ wenig Löten  einen
einfachen Programmer habe, allerdings weiß ich mangels Erfahrung nicht,
ob er überhaupt etwas taugt...


Mein erster Ansatz jetzt ist erst mal, mit Hilfe des Datenblattes des
89c2051, dem Pythonprogramm und der BlowIt-Schaltung zu schauen, was
dort genau beim Programmieren vor sich geht.

Gruß und danke, Karl

von Karl W. (karlweber)


Lesenswert?

Habe gerade, wie es in
http://www.mikrocontroller.net/forum/read-1-76195.html#76358
 beschrieben wurde pin 4 und pin 5 gegen GND gemessen.

Habe jeweils ca. die hälfte von vdd drauf. Anscheinend scheint der
Quarz also irgendwie zu schwingen.

Ich suche dann mal weiter...

von jack (Gast)


Lesenswert?

Hallo Karl,

ich würde versuchen, den LPT mit einem langsameren Modus zu betreiben.
(kann man im Bios einstellen). Zum Programmieren des 2051 braucht man
genaue Timings. Soweit ich gesehen habe, hat der Bursche aus Izmir
einen Uraltrechner mit 485 MHz. Kann sein, daß es bei ihm gutgeht.
Ich hätte aber einen anderen Vorschlag für Dich:
Nimm einen 89S52 von Atmel, den kannst Du über SPI programmieren.
Das geht auch über die Parallelschnittstelle, man braucht aber keine
12V Programmierspannung und der Adapter ist supereinfach. Außerdem
kann man den µ in der Anwendungsschaltung lassen.
Er kostet auch nicht mehr als der 2051, hat schön viele Ports
(ist bei der Programmentwicklung hilfreich) und einen Timer mehr.

Gruß
Jack

von Karl W. (karlweber)


Lesenswert?

Danke Jack, ich werde deine Tipps heute mal ausprobieren. Vielleicht
bekommme ich es ja damit irgendwie hin.

Allerdings frage ich mich, inwiefern der langsamere Modus etwas bringt.
Das Pythonprogramm gibt die Signale auf ms genau an die Schnittstelle
weiter. In diesem Fall ist ein schneller LPT, der verzögerungsfrei
reagiert, doch eher sinnvoll(?)... Wenn Probleme mit dem Timing
auftreten, dann doch eher auf Betriebsystemebene, oder?

kurzer Ausschnitt aus Quellprogramm:
Code_begin-
out(port+2,erase_mode ^ prog_bit)  # P3.2 = 0
  delay(0.012)      # wait 12ms
  #This is ERASE PULSE!
  out(port+2,erase_mode)  # P3.2 = 1
-Code_end

Mit einem (leider nicht vorhandenen ;) digitalen Oszi müsste ich doch
Klarheit bezüglich des Timings bekommen... Vielleicht frag ich da mal
im Bekanntenkreis rum.

Ausserdem werde ich mir das Datenblatt vom 89S52 mal anschauen. Vielen
Dank für den Tipp mit SPI. In diese Richtung hatte ich mich bisher noch
überhaupt nicht umgeschaut. Du hast es schon richtig gesehen, dass ich
für meine einfachen Experimente nicht allzuviel Geld ausgeben möchte
;)
Gruß und Danke Karl

von Karl W. (karlweber)


Lesenswert?

Hallo nochmals eine dumme Frage:

Eventuell liegt hierin die Ursache meines Problems...

wierum zeichnet man eigentlich standartmäßig die Pinbelegungen des
Parallelports?

\ -------------------------- /
 \ 1 2               12  13 /
  \ 14                 25  /
    -----------------------
(dies ist die Sichtweise auf der
[URL]http://www.geocities.com/dinceraydin/8051/[/URL] Homepage von
BlowIt

oder
\ -------------------------- /
 \ 13 12               2  1 /
  \ 25                 14  /
    -----------------------
Diese Darstellung fand ich auf einem weiterführenden Link von
Wikipedia.

und welche Sicht ist denn nun von vorne und welche von hinten???
wo könnte ich dies nachschauen?

Konkreter: Wenn ich vom PC auf das Kabel Parallelport kabel schaue,
befindet sich Pin 1 dann links oder rechts?

Gruß und Danke Karl

von Karl W. (karlweber)


Lesenswert?

Habs mir gerade hiermit selbst beantwortet:
http://www.dotnet-magazin.de/itr/online_artikel/psecom,id,397,nodeid,31.html
Ich habe den Brenner wohl spiegelverkehrt angelötet...

Nehmt mir meine uC-Lizenz wieder ab, bevor ich sie mir verdient habe!

von jack (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist mal das Schaltbild für den SPI-Adapter.
Die Widerstände sollten besser 220R betragen.
Die Pins auf dem Sub-D25 sind eigentlich immer beschriftet, aber
manchmal nur mit der Lupe zu erkennen.

Viel Spaß beim programmieren
Jack

von Karl W. (karlweber)


Lesenswert?

danke für die Schaltung des Adapters, hast du mir vielleicht noch den
einen oder anderen Link für den Anfang mit dem 89S52? (tuts etc...)
(natürlich werde ich heute abend auch googlen, aber wenn du bereits
etwas  in deinen Bookmarks gespeichert hast, sind  es für dich ja nur
ein paar Mausklicks ;)

Die Pins auf dem Sub-d25 mögen beschriftet sein, ich nahm jedoch ein
altes Druckerkabel und ließ die dem PC zugewannte Seite geschlossen um
lediglich durch Nachmessen die Verbindung zu finden. Aussen ist er
leider nicht beschriftet...
Egal. Ich drehe es erst einmal rum und hoffe, dass ich durch den
falschen Anschluss nichts in die Luft gejagt habe.

Genießt das schöne Wetter...
und tschüß

von Karl W. (karlweber)


Lesenswert?

Bevor ich mich aufmachte, das schöne Wetter zu genießen, habe ich noch
schnell den Stecker geöffnet und stellte fest, dass ich es tatsächlich
richtig angeschlossen habe(bschriftung der pins...danke @jack). Jetzt
bin ich wieder bei meinem Anfangsproblem...

von jack (Gast)


Lesenswert?

Natürlich brauchst Du erst mal ein Programm, das Deinen Code in den
µ lädt:

http://www.geocities.com/asim1108/projects.html

Ansonsten brauchst Du für den 89S52 kein besonderes Tutorial, die all-
gemeinen 8051-Seiten reichen dafür aus. Der 89S52 ist praktisch ein
89C52, nur daß er eben SPI hat. Wenn Du wirklich in die 8051-Assembler
Programmierung einsteigen willst, dann würde ich das
"Mikrocontroller-
Applikations-Kochbuch" von Andreas Roth empfehlen. Hier werden grund-
legende Routinen für das Rechnen mit Binärzahlen beschrieben, die
Ansteuerung von LCD's, die serielle Schnittstelle usw., das Buch ist
wirklich ausgezeichnet (IWT-Verlag).

Gruß
Jack

von Karl W. (karlweber)


Lesenswert?

Vielen Dank für deine konstruktiven Vorschläge, Jack. Das einzige, was
ich zusätzlich zum uC 89s52 benötige ist dann also ein 40 pin Sockel,
sowie eine 5polige Steckverbindung für den von dir vorgestellten
Adapter.

Den 12 Mhz-Quarz + Kondensatoren kann ich von meiner alten Schaltung
verwenden.

Mit 220 R meinst du sicherlich 220 Ohm?

Bleibt die Frage, was ich mit meinen beiden (hoffentlich noch
funktionierenden 2051) mache und an was es schließlich scheiterte...

Viele Grüße Karl

Ps: wie schreibst du eigentlich dein \mu in diesem Forum?

von jack (Gast)


Lesenswert?

Das µ ist auf meiner Tastatur (IBM) mit M + AltGR zu erreichen.
Die Schutzwiderstände in der Adapterschaltung habe ich verkleinert,
weil die Parallel-Schnittstelle mit 3,3 anstatt 5V arbeitet.
@2051... vielleicht probierst Du einfach mal einen anderen Programmer
aus z.B.

http://www.pjrc.com/tech/8051

Auf dieser Seite gibt's auch jede Menge Code-Beispiele.

Gruß
Jack

von Karl W. (karlweber)


Lesenswert?

Hallo Jack und alle anderen, habe mir nun 2 mal den 89s52 gekauft:

Leider geht bei beiden nichts, bereits das Beschreiben schlug fehl.

Den SPI Adapter baute ich nach Jacks Bild auf. (
http://www.mikrocontroller.net/attachment.php/344331/avr-parallel.gif
)
Wozu sind eigentlich die Verbindungen von Pin 2 nach 12 und 3 nach 11
?

Zusätzlich zog ich noch ein dickes Masse kabel zwischen Rechner Masse
und GND.

ich nutze hier den von Jack vorgeschlagen spi-flash programmer.
http://www.geocities.com/asim1108/spipgm/spipgm.html

Dort wählte ich8 9s52 als Controller aus und überprüfte, dass die
Pinbelegung mit der im Schaltbild für den SPI Adapter übereinstimmte
(was auch stimmt bis auf BEN und SS, die ja gar nicht auf dem Adapter
eingebaut sind.)

Port LPT1 adresse 378 scheint zu stimmen.
Present data Port(88) und present control Port(04) habe ich nicht
verändert, das wird schon stimmen...
Ansonsten ist noch ein Haken bei "Auto Verify"

Ich habe
-5V stabile Spannung an VCC und GND anliegen,
-einen Oszilator bestehend aus Quarz 12Mhz Grundton, 2 x 33p gegen
Masse an XTAL1 und XTAL2 nahe am µC.
- Reset folgendermaßen beschalten 10 µF nach VDD und 8kOhm nach GND

Als Fehler meldung im SPIPGM bekomme ich stets:
Device Signature did not match
Continue?

falls ich fortsetze kommt:
No Response of the µC


Sind die vielleicht die Widerstände im SPIAdapter noch zu groß?

Im Gegensatz zum 89c2051 habe ich 0 V zwischen XTAL1/2 und GND
gemessen. D.h. der Quarz schwingt nicht... Liegt das lediglich daran,
dass er nicht beschrieben ist, oder ist da jetzt irgendetwas kaputt?

Vielen Dank für eure Hilfe.

von Karl W. (karlweber)


Lesenswert?

Nachtrag:
EA habe ich mit VCC verbunden, da im Datenblatt steht, dass er für
internal program execution auf high gesetzt sein soll.

von daniel (Gast)


Lesenswert?

Hallo,
@ Karl We
ich habe zwei Frage zu deinem damaligen Problem.

Hattest du dennoch den Fehler mit dem Brennen von Blow It erfolgreich 
loesen koennen?

Koenntest du mir das BlowIt Programm schicken?

Vielen Dank
Daniel

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.