Hallo, ich habe ein kleines Problem. Ich habe ein Board gebastelt mit einem AT89C51ed2, welches im Anhang beiliegt. Das Schmatic ist leider nicht komplett aktuell: Die UART Schnittstelle, PSEN und RST haben mittlerwele eine etwas andere Beschaltung. Sind aber im Betrieb (nicht Programmierung) korrekt beschaltet. Ich habe getestet, ob ich verschiedene I/O-Pins setzen kann. Dies klappt bei fast allen: Bei allen außer bei Port 0. Diese geben immer 0 aus. Egal was ich ausgebe. Das Merkwürdige ist, dass wenn ich Spannung daran messe (zu Masse hin), dann verändert ishc die Spannung von >0V bis <5V je nachdem wie ich die Spannung, wenn ich die + und - Messstrippen anfasse! Wenn ich die Minus-Strippe mit der Hand anfasse, geht die Spannung runter. Wenn ich die Plus-Strippe anfasse geht die Spannung hoch. Das ist das gleiche Verhalten, wie wenn ich die Messstrippen garnicht anschließe und nur anfasse. Andere Pins kann ich Prima messen .. warum? Kann es sein, dass der Controller glaubt, dass P0.0 - P0.7 Eingänge und keine Ausgänge sind?
hat keine internen pullup-Widerstände, und aktiv H kann sowieso kein 8051 ausgeben. Hänge an die benutzten Ports einen Widerstand (4k7) nach Vcc, gut ist.
Oh, .. ich dachte bei Ausgängen braucht man keine Pull-Ups? Das verstehe ich nicht.
lies dir mal das Datenblatt über die Ports durch - da wird dir einiges klar.... Prinzipiell haben die Ports nur einen FET am Pin nach Masse, dazu normalerweise einen pullup nach Vcc. Am Port0 fehlen die Widerstände aber, hat was mit dem Interface für ext. Speicher zu tun.
Dann muss ich ja die Optokopller Widerstände neu berechnen. Ich verstehe nicht, wie das funktionieren soll. Ich habe einen rangebastelt und es liegen dort jetzt ~300mA bei: setb P0.7 ~300mA bei: clr P0.7 Das kann doch nciht stimmen?!
300mA, sofort abschalten, da ist was oberfaul ! Oder warscheinlich schon kaputt. Peter
Oh, .. mein Fehler .. ich meinte mV .. :D Jetzt hab ich mir selber einen mächtigen Schreck eingejagt :P Ich hab das nochmal mit den Widerständen überprüft. In der Manual war nichts vorgeschlagen, habe es also nochmal genau nachgeguckt und einen 4.7k nach +5V an P0.7 angeschlossen. Kein Resultat. Hab dann mal an P0.7 eine 1 ausgegeben und extern den Pin P0.7 mit P1.0 verbunden. Da P1 interne Pull-Ups hat, müsste das dann doch gehen, oder?! Geht aber nicht. An P0.7 bzw. P1.0 sind immer noch ein wechselnder Wert ohne und mit Pull-Up (4.7k) an P0.7 zu messen. Kann es vielleicht sein, dass der P0 irgendwie in einem Modus ist, der ihm einen Eingang oder irgendetwas anderes zuschreibt? Ich meine, z.B. dass durch die Beschaltung oder Softwareeinstellung (SFR?) des Controllers P0 als Eingang zählt, obwohl ich doch mit "setb P0.7" eine 1 ausgebe? Die Verknüpfung von P0.7 mit der SFR Adresse #87h habe ich überprüft. Daran liegts also nicht. ich hoffe, euch fällt etwas ein! Sebastian
Schliesse Deine Optokoppler anders an: Port -|\/\/|---- Optokoppler --- VCC (Vorwiderstand) Die Ports der MCS-51 können nur nach Masse ziehen, die Pull-Ups liegen im K-Ohm -Bereich, da kannst Du keinen Optokoppler mit treiben.
und dann dran denken: der OK ist eingeschaltet, wenn der Port0 ist (und umgekehrt) :-)
Hallo! Schließe an Port 0 die Pull_Up_Widerstände 4,7kohm nach High! Ich empfehle dir danach einen Inverter z.b. 7404 an zuschliessen damit wird der Port nicht so belastet. Was wichtig ist wenn Du ne "1" einschreibst wird der Transistor am Port z.b. P0.0 abgeschaltet so bekommst Du nur noch über den Pull-Up-Wiederstand ein Signal-High der wiederum durch den Inverter negiert wird. Somit brauchst Du deine Optokoppler-Schaltung nicht zu ändern. Gruß Klaus
Hi, ich muss mich entschuldigen. :/ Die Widerstände habe doch gewirkt, .. habe nur in der Hektig den Unterschied zwischen V-AC und V-DC auf dem Messgerät nicht beachtet oO .. Man hab ich mich geärgert! Optokoppler funktionieren genauso, wie die Schaltung auf dem Plan ist. Ich habe lediglich die Pull-Ups hinzugefügt. Inverter oder anderen Schnickschnack habe ich nicht genommen. Der Optokoppler muss auch nur einmal kurz auf allen 4 Transistoren schalten. Maximal 1sec in Betrieb. Und nur einer zur selben Zeit. Wenn ich jetzt den Optokoppler durchschalten lassen will, muss ich lediglich eine logische 0 am Port Pin ausgeben! Vielen Danke für eure Hilfe!!! Sebastian
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.