Forum: Mikrocontroller und Digitale Elektronik Schaltung von AT89C51ID2


von Ampfing (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

einige werden jetzt wahrscheinlich die Hände über dem Kopf zusammen 
schlagen...
Ich habe das Problem, dass ich die im Anhang befindliche Schaltung mit 
einem AT89C51ID2 habe (parallel zum Reset-Taster ist mittlerweile ein 
Kondensator gelötet). Leider will diese Schaltung aber so rein gar 
nichts tun. Nichtmal ein ganz einfaches Programm, mit dem nur Ports auf 
high geschaltet werden (was ich per angeschlossenen LEDs überprüfen 
wollte) funktioniert (das Thema hatten wir auch schon in einem extra 
Thread).
Jetzt habe ich noch einiges ausprobiert und bin jetzt so weit, dass ich 
den Controller nichtmal mehr programmieren kann, weil FLIP keine 
Verbindung per RS232 herstellen kann...
Das Einzige, was mir als Grund einfallen würde ist, dass ich beim 
letzten Programmieren den Haken in FLIP für "X2" gesetzt habe. Laut 
Manual zum Controller soll dadurch der Eingangstakt nicht mehr durch 2 
geteilt werden, was bedeuten würde, dass mein Controller mit 40 MHz 
arbeiten würde - was er laut Datenblatt auch kann. Seitdem erhalte ich 
immer TimeOuts, wenn ich versuche mich mit FLIP mit dem Controller zu 
verbinden. Ein Anschluss eines Oszilloskopes hat mir gezeigt, dass der 
Controller zwar das RS232-Signal empfängt, darauf aber nicht antwortet.
Und jetzt meine Fragen:
1. Wie kriege ich den Controller wieder dazu mit mir zu reden?
2. Fällt irgendjemandem noch was ein, was an der Schaltung sein könnte, 
dass diese nicht funktioniert? Ich habe meine Schaltung auch mal mit der 
eines StarterKits von Atmel verglichen und dabei sind mir folgende 
Punkte aufgefallen:
- Atmel hängt den ALE-Pin per PullUp auf VCC, bei mir ist der Pin offen
- Atmel hat zwischen den Pins XTAL1 und XTAL2 einen Quarz hängen, ich 
habe einen Oszillator am Eingang XTAL1. Passt das, oder hätte ich auch 
einen Quarz verwenden sollen/müssen? Das Datenblatt zu dem Controller 
findet Ihr unter 
http://www.atmel.com/dyn/products/product_card.asp?part_id=3237 (falls 
da jemand reinschauen möchte).

Gerade beim zweiten Punkt würde ich Euch bitten mir auch zu schreiben, 
wenn Ihr der Meinung seid, dass es eigentlich funktionieren 
sollte/müsste, da ich ehrlich gesagt nicht besonders viel (um nicht zu 
sagen fast keine) Erfahrung mit dem selber bauen von 
Controllerschaltungen habe und deswegen gar nicht weiß, ob das so 
funktionieren kann oder nicht (im letzten Post habe ich eine Antwort 
erhalten, mit der ich nichts anfangen konnte und auf Nachfrage leider 
nichts mehr, das wäre dann unter 
Beitrag "Programm funktioniert im Simulator, aber nicht auf Controlle" zu finden, aber bitte 
hier antworten).

Danke fürs lesen meines ziemlich langen Posts und viele Grüße

von Joe (Gast)


Lesenswert?

Sehe ich das richtig das da ein 40 MHz Oscillator verwendet wird ?

Das geht nicht wenn X2 Mode gewählt ist, löte mal nen 22,118 Mhz ein.

von Ampfing (Gast)


Lesenswert?

Ja, da ist ein 40 MHz Oszillator drauf. Wieso geht das nicht? Laut 
Datenblatt kann der Controller doch an Osc.A bis 40 MHz.?
Heißt also, wenn ich nen anderen Oszillator einlöte - und mir wohl oder 
übel den alten damit kaputt mache, weil ich mir relativ sicher bin, dass 
ich den nicht in einem Stück heil rausbekomme 'spricht' der Controller 
wenigstens wieder mit mir?
Und könnte das dann auch das Problem mit dem Programm gewesen sein?
Habe gerade auch mal bei einem großen Elektronikverkauf mit C geschaut, 
der hat nur Oszillatoren mit 20 bzw. 24 MHz, keine 22,118 MHz. Also 
bräuchte ich dann wohl die 20 MHz-Variante, oder?
Gäbe es auch ne andere Möglichkeit den Controller wieder zum Leben zu 
erwecken und anschließend halt ohne X2-Mode mit dem 40 MHz-Oszillator zu 
arbeiten?

Danke für die Antwort und viele Grüße

von Joe (Gast)


Lesenswert?

Also, schau mal ins Datenblatt, das käme auf 80 MHz raus. X2 verdoppelt 
deinen Takt und das geht nicht mit 40 MHz.

Ich verwende immer einen Quarz anstelle eines Osci. Bausteins, 22,118 
bietet sich wegen der Baudraten an.

Also, wenn du einen Quarz z.B. 20 MHz anlötest sollte der Baustein 
wieder mit dir reden.

von Ampfing (Gast)


Lesenswert?

Sorry, wenn ich nochmal frage, aber ich würde es gerne verstehen und 
nicht nur machen...
Auf der Seite 17 des Datenblattes sieht man ja die funktionelle 
Beschreibung für den Quarzeingang. Dort sieht es für mich so aus, als ob 
der Eingangstakt (bei mir die 40 MHz) normalerweise - also ohne X2 - 
halbiert wird. Das ergäbe dann 20 MHz CPU Frequenz. Wenn ich jetzt den 
X2-Mode einschalte wird durch den MUX doch das Teilen durch 2 umgangen. 
Somit sollte doch dann die CPU Frequenz (wenn CKRL = 0xff ist) 40 MHz 
betragen, oder? Von einer Verdopplung der Eingangsfrequenz sehe ich in 
dem Bild nichts - oder 'lese' ich das Bild falsch?

Wie gesagt, is ned bös gemeint, aber verstanden möchte ich das ganze 
schon haben für die Zukunft.
Werd mal sehen, ob ich hier was mit ca. 20 MHz-Frequenz finde.

Viele Grüße

von Joe (Gast)


Lesenswert?

Ich habs auch nicht richtig erklärt, sorry.

Les mal X2 Mode, da wirds erklärt. Da steht auch ein klarer Hinweis zu 
dem Thema.

... Ich suchs mal, habe das Datenblatt nicht hier.

von Peter D. (peda)


Lesenswert?

Datenblatt 1.Seite:

– In Standard Mode:
40 MHz (Vcc 2.7V to 5.5V, Both Internal and External Code Execution)
60 MHz (Vcc 4.5V to 5.5V and Internal Code Execution Only)
– In X2 Mode (6 Clocks/Machine Cycle)
20 MHz (Vcc 2.7V to 5.5V, Both Internal and External Code Execution)
30 MHz (Vcc 4.5V to 5.5V and Internal Code Execution Only)


Also 40MHz sind meiner bescheidenen Meinung nach über 30MHz.


Peter

von Joe (Gast)


Lesenswert?

Danke Peter, dann brauch ich es nicht suchen ;-))

von Ampfing (Gast)


Lesenswert?

Hm, okay.
Was lernen wir daraus: auch die 1. Seite des Datenblattes sollte man 
lesen...
Dachte mir vermutlich damals so nach dem Motto: Da werben sie ja sowieso 
nur, was das Ding alles kann, das werden sie später schon auch nochmal 
hinschreiben...

Danke für die Hilfe!
Aber nochmal kurz: Könnte das dann auch das Problem mit dem Programm 
gewesen sein? Werd gleich mal nen Rechtecksgenerator dranhängen und 
schauen, ob ich das einfache Programm dann auch zum Laufen bringe - hab 
den 40 MHz-Oszillator jetzt kaputt gemacht beim Auslöten, deswegen gehts 
jetzt daweil mal nur extern...

Viele Grüße

von Joe (Gast)


Lesenswert?

Versuch macht Klug ;-)) probiers halt mal.

von Ampfing (Gast)


Lesenswert?

Tja, kaum macht mans richtig, schon funktionierts auch!
Jetzt geht auch mein einfaches Programm zum anschalten der LEDs...

Vielen Dank Euch beiden für die Hilfe und viele Grüße

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.