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!
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
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
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
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
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 ...
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.
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.
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
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!
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
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.
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.)
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
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
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