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