Forum: Mikrocontroller und Digitale Elektronik AT89C51ED2 Ports ständig High


von Michael Schlackl (Gast)


Angehängte Dateien:

Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

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

von Pieter (Gast)


Lesenswert?

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

von Michael Schlackl (Gast)


Lesenswert?

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

von Michael Schlackl (Gast)


Lesenswert?

@ 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

von Stephan H. (stephan-)


Lesenswert?

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

von Pieter (Gast)


Angehängte Dateien:

Lesenswert?

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

von Pieter (Gast)


Lesenswert?

moin moin,

@Stephan

sag doch mal EINEN Grund warum man ISP mit irgendeinem Programm machen
soll, wenn es seriell "erschreckend" einfach geht.

Gruß Pieter

von Michael Schlackl (Gast)


Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

@ 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 ?????

von Michael Schlackl (Gast)


Lesenswert?

@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

von Stephan H. (stephan-)


Lesenswert?


von Pieter (Gast)


Lesenswert?

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"?

von Stephan H. (stephan-)


Lesenswert?

@ 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

von Stephan H. (stephan-)


Lesenswert?

@michael,
poste mal das File von Dir .
Vielleicht stimmt was nicht.

Stephan

von Pieter (Gast)


Lesenswert?

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

von Michael Schlackl (Gast)


Lesenswert?

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

von Pieter (Gast)


Lesenswert?

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

von Michael Schlackl (Gast)


Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

@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

von Stephan H. (stephan-)


Lesenswert?

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

von Pieter (Gast)


Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

Moin,
jo die Leiterplatte......ja doch selfmade. Hat viel Stimmung in der
Familie gebracht. Naja will eben jeder seinen Spaß.

Stephan

von Michael Schlackl (Gast)


Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

@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.

von Michael Schlackl (Gast)


Lesenswert?

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

von Stephan H. (stephan-)


Lesenswert?

@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

von Pieter (Gast)


Lesenswert?

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

von Michael Schlackl (Gast)


Lesenswert?

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

von Pieter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.