Hey Leute! Ich benutze den Atmel AT89C51ED2, programmiere ihn mit Flip. Ich kann ihn ohne Probleme programmieren und dann mit Start Application einwandfrei starten, allerdings sind alle Ports High, obwohl ich sie auf low ziehe (die Controllerplatine wird unbeschaltet getestet)! Er regiert auf keine Änderung.... ich weiß nicht woran es liegen könnte, evtl. an den Keil Compilereinstellungen... das Programm beginnt laut Flip Buffer bei 800h.... Danke im Voraus
vielleicht hift Dir das Weiter. Ist vom Batronix Forum Zitatvon "Raptor": "meine heruntergeladene version von flip 2.2.4 scheint fehlerhaft zu sein.dort war es mir nicht möglich das SBV zu ändern, da der button "set"fehlte und auch die option "set spezial bit" jetzt habe ich die version 1.8.8 gefunden...da läuft`s ich bentutze einen 89c51ed2 und nach auslesen des SBV erscheint dort adresse 0xfc00 laut monitor programm muss der bootvektor auf 0xe000 eingestellt werden. habs geändert und siehe da .............. vieleicht hat jemand ein ähnliches problem...hier die lösung " Vielleicht hifts ja. Bei Keil war auch mal was mit Monitor und Bootlader im Download für die 89C51 ISP MCU´s. Weis aber nicht was genau es war. ...... Ich mache Assembler mit Batronix Progstudio. Stephan
Hi Michael, meine ED2 prog ich aus der IDE rein seriell. Hast Du mal versicht den ED2 per Terminal anzusprechen? (die Controllerplatine wird unbeschaltet getestet)! Na aber Quarz + Reset sind doch drann, oder? Mit Gruß Pieter
Warum muss der Bootvektor auf 0xe000 gestellt werden? Und warum startet das Programm ausgerechnet bei 0x800? Habe jetzt ein kleines Assembler Testprogramm geschrieben, dass ab 0x0000 beginnt und trotzdem geht nix!!! Mit Bootvektor meinst du aber nicht das SBV sondern die Bootloader Bootadresse?!?! Also was ich sonst noch probiert hab.... Im Flip habe ich anfangs immer den Bootload-Entry erzwungen und bin somit NICHT in die User Application gekommen.... jetzt gehts umständlich mit Flip 2.4.4.... dann hab ich zuerst aber das BSB von 0x00 auf 0xFF gestellt, um auch in den UserApp Zweig kommen zu können, allerdings -> Full Chip Erase!!! Hab dann im Datenblatt das entdeckt und nochmal nachgeforscht... BSB = 0x01 dürfte kein Problem sein, allerdings funktionierts dann immer noch nicht! Ich kann nicht einmal sagen, ob der µC korrekt programmiert wurde, was ich weiß ist, dass der "Verify Memory" Vorgang funktioniert und somit eine fehlerfreie Datenübertragung stattgefunden hat! Eine Frage noch: Wenn ich den µC zurücksetze (Spannung wegnehme und wieder einschalte) müsste eigentlich automatische die User Application gestartet werden?!? Power Down und Idle Mode sind nach dem Reset eh alle 0, oder???? Lade grad den Flip 1.8.8 runter (von irgendeiner russischen Seite gg) Ich benutze den Keil Compiler, mit dem kann ich beide Programme fehlerfrei debuggen, also kanns eigentlich kaum mehr an der Software liegen! MfG Mike
@ Pieter..... hey is doch klar, des wär ja wirklich peinlich, außerdem würde dann die serielle Kommunikation mit dem Flip nicht funktionieren..... Ich meinte bloß unbeschaltete I/O Ports!!!! Quarz wird ein 24MHz mit 2x 33pF verwendet.... am Reset hängt ein 10µ Elko gegen +5V.... das muss passen, schließlich funkt die ISP.... Welches Terminal meinst du??? Das einzige (meiner meinung nach mächtigste) Terminalprogramm ist doch Atmel Flip.... Wie hast du den AT89C51ED2 dann beschaltet? Ich habe eine RS 238 Schnittstelle mit MAX 238 aufgebaut, das sollte funken... MfG mike
Hallo Mike, warum der Bootsektor so sein muß ?? .. wie ich schon geschrieben habe, ist vom Batronix Forum. Da hatte jemand auch solche Sorgen. Dachte das kann dir helfen. Kann Dir leider nicht mehr dazu sagen, mein ED2 Board ist zwar fertig aber die MCU noch unterwegs. DIP 40 ist sehr rar !!!!! Also noch keine Erfahrungen. Frage mal den Peter Danneger. Der ist da etwas fitter. Habe bisher nur non ISP MCU´s mit Eprom EMU gehabt. Wird dann auch mein erster Anlauf. Gruß Stephan
Hi Mike, sorry, mein Mittagschlaf hat etwas länger gedauert;-) Mit HyperTerm sende ich nach der Umschaltung in Progmodus (zur Sicherheit RST auf H, dann PSEN auf L, RST auf H, PSEN auf H) und Eingabe U (wegen AutoBaud am ED2) die Textdatei INTL_HEX.TXT. Im Hyperterminal unter ASCII-Einstellungen die Zeilenverzögerung auf 1000ms (wegen löschen) setzen. :020000030100FA (lösche 16K Block 0..3FFF) :10000000759000B29080FCFFFFFFFFFFFFFFFFFF36 (loop:CPL P1.0) :0000800080 (Prog fertig) :03000003060000F4 (Fuse setzen) :020000030300F8 (Reset) Danach liegen bei mir an P1.0 2,5V an. MfG Pieter
moin moin, @Stephan sag doch mal EINEN Grund warum man ISP mit irgendeinem Programm machen soll, wenn es seriell "erschreckend" einfach geht. Gruß Pieter
Hallo! Also erstens kenn ich mich mit dem Hex-Dateiformat absolut NICHT aus, für mich sind das nur viele Zahlen.... Was Hyper Terminal betrifft: Wir programmieren damit unsere Schulexperimentierplatine (8032), ich weiß aber nicht, wie ich damit den Atmel 89C51ED2 proggen soll! Ich habe mir meine eigene Controllerplatine gemacht und diese laut Atmel Flip Hilfedatei verdrahtet! Da die Kommunikation ja einwandfrei funktioniert (beschreiben, löschen, testen), sehe ich keine Notwendigkeit, an der Hardware herumzubasteln, ich würde nur gerne wissen, warum sich keine der Ports ansprechen lässt und diese ständig "High" sind! Könnte es an der Bootvektor Adresse liegen??? Wie muss ich die einstellen, dass das Programm richtig abläuft? Hab nämlich das Gefühl, als ob das Programm richtig in den Flash übernommen wurde, aber nicht richtig starten kann!!! MfG, Mike
@ Pieter,, wo schrieb ich denn was von einem Programm ???? Ich kopierte nur einen Beitrag aus einem anderen Forum und nannte es Zitat !!! Mir fehlt ISP Erfahrung, das schrieb ich auch. Aber wenns soooooo einfach ist dann erkläre es ihm doch so das er es versteht und alles völlig ohne Programm !!! Ich bin auch lernwillig und neugierig wie die Bits seriell mit Drähten angelegt werden.!!!! Viel Spaß. PS. Ist Hyperterminal ein Programm ?????
@Stephan: also das mit den Drähten war natürlich anders gemeint, ich hab die Beschaltung so entworfen, dass die ISP mit Flip funktioniert, hab statt dem MAX232er sogar den MAX238 nehmen müssen, weil Flip zur Kommunikation den RESET, PSEN, RxD und TxD benötigt.... aber jetzt funkt die Programmiererei, deshalb kanns wohl nicht an der Hardware liegen, sondern wird ein Softwareproblem sein.... Meiner Meinung ist die ISP mit Flip viel einfacher - nur sollts halt funktionieren.... Kannst du mir den Thread aus dem Batronix Forum nennen???? Hab nämlich schon nach dem Beitrag gesucht und bisher nix gefunden.... thx.... ciao mike
moin moin, die serielle Programmierung eines ED2 ist im Datenblatt sehr schön auch mit Ablaufplänen erläutert. Ausgangspunkt der Programmierung ist die Umschaltung in diesen Modus. Dazu nutzen Programme wie Flip (kenne ich nicht) Steuersignale des COM-Ports. Kommen diese Steuersignalspiele auch im normalen Betrieb des COM-Ports vor, schaltet der ED2 in den Prog-Modus. Zur Sicherheit benutzt Stephan 2 COM-Port. Das ist mir zu platzaufwändig. Mike braucht gleich einen größeren MAX, find ich auch nicht gut. Ob es bei den Steuersignalen eine Kombination gibt, die im normalen Betrieb nicht vorkommt, habe ich noch nicht geprüft. Den Automatikmodus halte ich daher nicht für ganz sicher, also manuelle Umschaltung. Auf meinem Board ein Taster für Reset und einer für Prog-Modus. Der PC-COM ist einfach per MAX202 an P3(Rx/Tx) angeschlossen. Zwischenstand: Es gibt mehrere Möglichkeiten den ED2 in den Programmiermodus zu schalten und der ED2 ist mit dem PC über Rx/Tx verbunden. Soweit alles richtig? MfG Pieter Frage: Wofür steht das Kürzel "IBM"?
@ Mike, was Pieter sagt. Den Chip in den Reset bringen. Dann PSEN auf low ziehen und Reset loslassen und er geht in den Prog Modus. Im Notfall einfach 2 Taster nehmen. Der Peter Danneger hatte hier mal ne kleine Schaltung. Lochraster reicht dafür. Vielleicht solltest Du es mal damit probieren. Meine MCU ( ED2) ist gestern gekommen. Habe ich aber gestern nicht mehr anfangen können, da ich noch ein USB Interface für meine MC15 Fernsteuerung fertig machen mußte. Komme heute Abend erst dazu. Kann Dir ja Bescheid geben. @ Pieter.... Flip ist die org. Atmel ISP Software !!!! zum beschreiben. Meine 2. serielle ist nicht zur Sicherheit sondern meiner Faulheit geschuldet. Ich muß dann nicht zum proggen oder Daten auslesen die Kabel tauschen. Also schön weitermachen. Und laßt die Bits heile. Stephan
@michael, poste mal das File von Dir . Vielleicht stimmt was nicht. Stephan
moin moin, @Stephan, das Flip von Atmel habe ich gesehen. In meiner IDE hatte ich schon so etwas ähnliches drin, das umstellen nach Datenblat hat ca. 1Stunde gedauert. Von daher brauche ich Flip nicht. Ich nutze auch die 2 Taster - getreu IBM - Ist Besser Manuell! @Mike, ein Prog, welches auf 8032 läuft, sollte auch auf ED2 laufen. MfG Pieter
Mhhhh Freunde.... ich glaub ich habs´noch nicht auf den Punkt gebracht! Die Programmierung des Atmels funktioniert ja einwandfrei, ich kann auch nachträglich den Inhalt des µC´s auslesen, es ist alles so wie es sein sollte.... das seltsame ist bloß, dass das Programm nicht startet, obwohls im Keil Debugger problemlos funktioniert hat! Dort ist auf der Adresse 0x0000 ein LJMP auf 0x0829 und von dort gehts dann weiter.... Hier mal mein kleines Testprogramm in C: #include "at89c51xd2.h" /* for the intended 8051 derivative */ /*void init (void);*/ void main(void) { /* init(); */ P0 = 0xFF; P1 = 0x66; P2 = 0x66; while(1) { } } und nochwas.... EA ist natürlich auf +5V.... sonst könnte ich den Atmel ja kein 2. Mal programmieren, da sich dann der Bootloader vom Flip aus nicht mehr starten lässt!!! übrigens: Ich hab mir das Daten"blatt" bereits mit meinem Diplomarbeitsbetreuer und mit meinem Dad, der in solchen Fragen immer ein kompetenter Fachmann ist, mehrmals reingezogen und kann einfach keinen Fehler finden.... wenn notwendig kann ich gerne noch den Eagle-Schematic File reinstellen, damit ihr seht wie er wirklich angeschlossen wurde - achja: da ich nirgends eine Eagle Library mit dem 89C51ED2 im PLCC68 Package gefunden habe, musste ich natürlich im Eagle eine erstellen..... mfg, mike
moin moin, das Prog ist so richtig, wenn der ED2 denn bis dahin kommt. Eventuell wird nur das Flag BSB nicht auf 0 gesetzt, dann wird auch nach einem Reset nicht ins Prog gesprungen. Kannst Du am ED2 MISO&MOSI auf Rx&Tx "umbiegen"? MfG Pieter
Hallo! Also das BSB wird beim Programmieren auf jedenfall auf 0x00 zurückgesetzt, selbst, wenn ich es auf einen anderen Wert setze! Ich verstehe allerdings nicht genau, wie du das mit MISO/MOSI meinst, das sind ja die Ports 1.5 & 1.7.... soll ich die versuchshalber auf TxD & RxD hängen??? Was bringt das? Eine andere Möglichkeit, die ich noch gesehen hätte ist, den Controller mal zu tauschen! Ich hab nämlich die ersten Controller, die ich programmieren wollte, verkehrt rum gepolt (Versorgungsspannung).... Ich dachte mir jedoch, dass es sie es überlebt haben müssten, da ja trotzdem noch die ISP funktioniert.... Aber selbst nach einem Tausch gegen einen nagelneuen 89C51ED2 gehts nicht.....selbes Problem! thx, mike
@Michael, sooooo habe gerade meinen ED2 in mein Board rein und ne Testroutine ( txt über RS232 ausgeben" reingeladen. Den reset Taster betätigt und... It Works !!!! So wie soll. Allerdings fangen alle meine Rogramnme bei 00 Hex an. Ich nehme normalen Assembler. Schau bitte nochmal bei Atmel auf die Seite mit den Datenblättern. Unter dem eigentlichen Datenblattdownload. Da sind 2 PDF Datein für Keil u Vision. Irgendein "C" Kram steht da drin. Ich denke da liegt Deine Lösung. Ich kann damit nichts anfangen. Mache kein C. Übrigens... wie bekomme ich Flip dazu die MCU neu zu starten und die Aplli aufzurufen ?? Muß noch Reset von and machen. Stephan
PS.: aber geil is schon ... auf COM2 wird Flip gemacht und bei reset kommen über die COM 1 die Daten rein. Ohne ein Kabel anzufassen. Sooooo wollte ich das. Gruß Stephan
moin moin, @Mike C kann ich schon, mache aber lieber Assembler, da C bei mir für "Chaos" steht. Bin nun mal mit Assembler "großgeworden". Schon richtig, auf 0 steht der LJMP nach 829 und da der Rest. Und dann die Frage: Ja wo laufen Sie denn? Versuche doch mal das C-Prog nicht im Debugmodus, sondern im Normalmodus rüberzuschieben. @Stephan Eventuell sendet Flip nicht das Resetkommando, bei mir :020000030300F8 (Reset) und dann muss auch noch gewartet werden bis alles gesendet ist. Wird die COM zu früh geschlossen, kommt es nicht mehr an. --- Einen echten Sinn kann ich in den 2 COMs immer noch nicht erkennen. Ist wohl Geschmacksache. Nicht das es an COMs mangelt, mein PC hat derzeit 6 reale COMs. --- Wie bist Du nun zu der Leiterplatte gekommen? MfG Pieter
Moin, jo die Leiterplatte......ja doch selfmade. Hat viel Stimmung in der Familie gebracht. Naja will eben jeder seinen Spaß. Stephan
Da ich ja sowieso nur den HEX File mittels Flip sende, spielt es doch gar keine Rolle, in welchem Modus ich im Keil grad bin, oder??? Solange compiliert und der HEX File gespeichert is, müssts doch passen... Richtig, hab auf der Atmel HP noch einige PDFs gefunden, bin grad beim durchstöbern.... Danke jedenfalls für den Tipp!!!! ciao, mike
@Michael, kann Dir gern mal nen Testfile senden. Gibt nen Text über UART aus. Also weitermachen, und Bits heile lassen. Stephan @Pieter "C" heist beei mir "Clammerorgien" und kryptische Schreibweisen.
Ja bitte, das wär toll....allerdings hab ich kein Display als Anzeige (müsste dann wahrscheinlich HyperTerminal zum Testen verwenden.... außer man kann es schnell umschreiben, sodass es MIDI Befehle über den UART sendet, dann kann ichs auch testen (@31250 Baud, 24MHz) greetz, mike
@michael, wer lesen kann ist klar im Vorteil !!! Was soll die UART mit neem Display ?? Klar kommt der Text über ein Terninal Proggi rein.. Gib mir Deine Quarz Frequenz. Und dann schicke ich was. Ist nen Hex File. Einfach reinschieben und Reset. Weis nicht ob heute noch. Muß gerade ne abgekochte Festplatte retten. Also dann Stephan
moin moin, @Mike, wo frägest Du noch ausser in: http://www.progforum.com/showthread.php?s=ed55c962db09837769e08cb264fd9a71&t=6164 Da Du 5 hast, würde ich fast sagen: Schick mal einen mit dem Du nicht klarkommst zu mir. Wird Dir aber wohl zu lange dauern. Welches OS arbeitest Du? MfG Pieter
Hey ich hab gute neuigkeiten..... ich bin auf den Fehler draufgekommen... es lag an der Resetbeschaltung, der Elko war verkehrt gepolt!!! Echt doof... das mit dem Verschicken hat sich wohl auch erledigt... wär auch unwahrscheinlich, dass ein nagelneuer, unberührter µC hin ist.... aber Danke fürs Angebot!!!! Also die Quarzfrequenz hab ich bereits oben geschrieben: 24MHz!!!! Ich programmier im Keil µVision3.... ciao, mfg mike
moin moin, wie sagte der Buchhalter: ich glaube nur der Bilanz die ich selber gefälscht habe... dann leg mal los. Ich versuche grade den AT89C5131A (5V Version) per USB zu erreichen... will noch nicht so recht.. MfG Pieter
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.