Moinsen leute, Wir sind in der Schule mit einer Experimaentiert Platine zu Gange auf der ein C535 hängt. Wir müssten nun den Port 6 als Eingänge nutzen. Kan nes sein das man dem MC irgendwie sagen muss das man den Port als digitaleingang nutzen will ? und wenn ja wie ? LG Jörg
Musst du nicht. Aus dem User Manual: In the ACMOS versions these lines may also be used as digital inputs. In this case they are addressed as an additional input port (port 6) via special function register P6 (0DBH). Since port 6 has no internal latch, the contents of SFR P6 only depends on the levels applied to the input lines
Ja das ist richtig das habe ich auch schon gelesen, allerdings nimmt der keinerlei Signale an dem Port an. deswegen die Frage :-)
Jörg D. schrieb: > allerdings nimmt der > keinerlei Signale an dem Port an. Immer wieder ein Erlebnis, diese nichtssagenden Fehlerbeschreibungen. Was konkret legst Du an (xxV) und was liest Du dann aus (0/1)?
>> allerdings nimmt der keinerlei Signale an dem Port an. > Immer wieder ein Erlebnis, diese nichtssagenden Fehlerbeschreibungen. Stimmt. Ich hoffe er meint nicht, dass er auf den Port schreiben will und nix ankommt ;) Ralf
Vielleicht nochmal genau auf den Chip schauen. Wenn da nicht steht 80C535, sondern 80535, dann fehlt P6.
Also ich lege 5V an den Eingang. und frage so ab z.b. E1=((P6&16)>>1) und trotz anliegender 5V keine Änderung im Bit. Deswegen die Frage ob man dem erst "sagen" muss das er anstatt analog digital einlesen soll.
Jörg D. schrieb: > Also ich lege 5V an den Eingang. Welchen? Jörg D. schrieb: > und trotz anliegender 5V keine Änderung im Bit. Vielleicht war er schon beim Einschalten auf high aufgeladen, dann ändert sich natürlich nichts.
wenn ich sage ich frage auf P6&16 ab werde ich wohl Port6.4 abfragen und nein vorher war keine spannung drauf
Jörg D. schrieb: > C535 Wohl ein 80C535, oder? Port 6 kann ganz normal wie alle anderen Ports gelesen werden. Die Pegel an den Pins müssen dabei ungefähr TTL-Spezifikationen entsprechen. Exakte Werte: Siehe Datenblatt.
Jörg D. schrieb: > und nein vorher war keine spannung drauf Also war der Pin vorher mit GND verbunden? Laß Dir doch nicht jede Einzelheit mühsam aus der Nase ziehen! Was ist denn so schwer daran, sich klar auszudrücken: Pin x auf GND: Byte xyz gelesen Pin x auf VCC: Byte uvw gelesen
Eventuell mußt du die Referenspannung an diesem Port anschließen. Mir schwirrt da was im Kopf rum. Ist halt schon sehr lange her. Ich glaub, ich hatte damals auch mal so ein Problem. Versuchs halt mal.
Abdul K. schrieb: > Eventuell mußt du die Referenspannung an diesem Port anschließen. Sagt das Handbuch nicht. Port 6 ist nur in der C535 Version digital lesbar. Leider hat der TO uns noch nicht verraten. welche Version er genau hat. Port 6 hat kein Out-Latch wie die anderen Ports. Es werden daher immer die Pins gelesen, unabhängig von der Vorgeschichte. Noch ein Caveat: Das Pinning ist unterschiedlich bei 535 und C535. Also nicht einfach den Protz tauschen. Sonst entweicht nach kurzer Zeit der magische elektronische Rauch.
Ich kenne die Handbücher zu 535 und Kosorten in und auswendig. Mußte mich den ganzen Tag mit den Varianten rumschlagen. Und ich kenne auch ne Unmenge von Maskenversionen. Kurioserweise kann ich mich nach 20 Jahren sogar noch an Einzelmasken-Bezeichner erinnern. Siemens hatte damals zig Nachbesserungen durchgeführt. Für NMOS/CMOS hatten wir ne Lötbrücke. Probiers einfach mal aus, die Referenzspannung für die Portversorgung anzulegen. Wenn das nicht geht, dann wars entweder eine der allerersten Engineering-Samples oder du machst schlicht einen groben Fehler wie falsche Adresse. Ein Scan der Aufschrift wäre sicherlich hilfreich.
Georg G. schrieb: > Port 6 ist nur in der C535 Version digital lesbar. Beim anderen liest man die Pins dann eben analog. Ich machte beides schon. So kam ich nämlich mal haarfeinenen Brücken und Lotspritzern auf die Schliche, als an P6 angeschlossene Taster nicht machten, was sie sollten. Der ADC sagte mir: Halbe Spannung. Also ein Kurzer zwischen zwei Pegeln. Den Digitalpegel analog lesen, geht also genau so gut. Man kann dann sogar ein Fenster mit selbst definierten Pegeln bilden: High, Low, und ungültig. Es bedarf allerdings etwas Code und Rechenzeit. > Das Pinning ist unterschiedlich bei 535 und C535. Also > nicht einfach den Protz tauschen. Sonst entweicht nach kurzer Zeit der > magische elektronische Rauch. 80535 kann man noch gegen 80C535 tauschen, umgekehrt nicht. 80C535 kann man wiederum gegen 80C515A tauschen, umgekehrt wiederum auch nicht. Ersteres machte ich kürzlich, den NMOS-Stromfresser 80535 gegen die CMOS-Variante tauschen. Man muß auf jeden Fall mal alle Pins sorgfältig kontrollieren. Ich verheize ja nicht leichtfertig meine Bausteine, für die es keinen Ersatz mehr gibt, und ich auch keinen Ersatz mehr kaufen würde. Billig waren die Bausteine ja nicht: Der 80C517A-Chip alleine kostete mich Ende der 1990-er 47DM, also das wären fast 24€. Für 4 Stück 80C515A zahlte ich 1993 schlaffe 200DM bei einem Distributor für Siemens-Halbleiter. Die üblichen Versandhändler für Privatleute hatten diese Sonderausführung des 80C535 überhaupt gar nicht. Das war damals so. Wenn der TO noch mal auf taucht, könnte ich mich ja mal dazu durch ringen, sein Problem mit P6 nachzuvollziehen. Anderenfalls habe ich keine Lust dazu. Denn ich habe hier gerade einen 80C517A in Betrieb, der zum 80C515A und 80C535 aufwärtskompatibel ist. Erst kürzlich half ich hier noch jemandem, der am C515 die PWM nicht richtig zum Laufen bekam. Sein Board hatte dummerweise die LED an P1.0. An diesem Pin kann man jedoch die vollautomatische PWM ohne weiteres nicht verwenden, nur an P1.1, P1.2, und P1.3. Man muß einen Interrupt mit Timernachladung installieren, für PWM an den anderen 3 Pins nicht. Der Thread wurde sogar noch sehr lang, der User meldete sich dazu am Ende nicht wieder, aber wenigstens zwischendurch, er löste seine Sache sicher anders. Abdul K. schrieb: > Probiers einfach mal aus, die Referenzspannung für die Portversorgung > anzulegen. Normalerweise müssen die Referenzspannungspins sowieso beschaltet werden, und man sollte bei einem gekauften Board davon aus gehen, daß dies auch so ist. Die Spezifikationen für diese Pins stehen ja im Datenblatt.
Die Chips laufen was die digitale Seite angeht, auch ohne der Referenzspannung. Definitiv! Haben wir oft so betrieben und die Kunden - naja - da könnte ich Geschichten erzählen. Am besten waren die Metallwerker... Hach war das ein Müll. Ein wirres Konstrukt von Spezialerweiterungen des 8051. Aber es gab die Brötchen ;-)
Abdul K. schrieb: > Die Chips laufen was die digitale Seite angeht, auch ohne der > Referenzspannung. Definitiv! Na, dann müßte das Problem des TO doch schon behoben sein. Wenn man die Referenzspannungspins denn beschaltet, dann dürfen die Pegel auch nur maximal 0,2V von GND bzw. VCC abweichen, laut Datenblatt. An meinen Boards waren diese Pins immer an GND bzw. VCC. Teils haben sie aber Jumper, falls man VAgnd und VAref mal von woanders her nehmen will, z.B. einem selbst gebauten Interface. > Hach war das ein Müll. Ein wirres Konstrukt von Spezialerweiterungen des > 8051. Aber es gab die Brötchen ;-) Inzwischen freundete ich mich gut mit den Bausteinen an, und kenne sie auch fast in- und auswendig. Manches ist heute in moderneren Bausteinen praktikabler gelöst. In ihrer Hoch-Zeit waren sie aber der King. Für mich zum Bastelbedarf reicht es auch noch für massig Beschäftigung. Nicht nur die Bausteine, auch die Freeware-Tools wie SDCC. Da muß man viel mehr ran, als an einen fix- und fertigen gekauften Keil-Compiler, der Ready-to-Start ist. Man sieht aber hier im Forum, daß gelegentlich immer wieder bzw. noch Lösungsbedarf besteht. Für eine Schule oder fürs Studium und Einstieg in µC generell sind diese µC bzw. Boards auf jeden Fall hervorragend geeignet. Man kann sie nämlich auch wie einen stinknormalen 8051 oder 8052 betreiben, ohne die ganzen weiteren Features zu beachten. Und ein 8051 ist doch einigermaßen leicht verständlich. Was las ich hier kürzlich für einen Spruch? Wer erstmals ein Haus bauen möchte, der versucht es am besten zuerst mit einem Haus aus Lego-Steinen, und nicht mit einem echten Hochhaus.
Wilhelm Ferkes schrieb: > 80535 kann man noch gegen 80C535 tauschen Du musst ein Genie sein :-) Pin 37 in der CMOS Version muss an VCC. In der NMOS Version soll er über einen Kondensator an GND (Substrat Anschluss).
Das ist der Anschluß für die interne Ladungspumpe. Kann man messen. > Abdul K. schrieb: > >> Die Chips laufen was die digitale Seite angeht, auch ohne der >> Referenzspannung. Definitiv! > > Na, dann müßte das Problem des TO doch schon behoben sein. Wenn man die > Referenzspannungspins denn beschaltet, dann dürfen die Pegel auch nur > maximal 0,2V von GND bzw. VCC abweichen, laut Datenblatt. An meinen > Boards waren diese Pins immer an GND bzw. VCC. Teils haben sie aber > Jumper, falls man VAgnd und VAref mal von woanders her nehmen will, z.B. > einem selbst gebauten Interface. Da haben wir uns mißverstanden. Dieser Port brauch vermutlich zur Versorgung der internen Buffer die Referenzspannungs-Pins. Ich meine mich zu erinnern, daß ich auch mal über dieses Problem stolperte (Was ja nach deiner Aussage gar keines ist, denn du schriebest, man muß nach DB die Pins versorgen!). Ich habe sogar noch ein C535 Modul von Phytec da. Aber keine Lust dieses Vitrinenstück nur für diese schnöde Frage anzuwerfen. Da ist ein Nachmittag vorbei ;-) Die Antwort ist ja leicht durch den TO verifizierbar.
Georg G. schrieb: > Pin 37 in der CMOS Version muss an VCC. In der NMOS Version soll er über > einen Kondensator an GND (Substrat Anschluss). Genau das war der Punkt. In meinem Handbuch (ein altes von Siemens) steht ein Kapitel über Austauschbarkeit, daß es dem 80C535 nichts aus macht, wenn Pin 37 über 100nF am Substrat liegt, statt fest an Vcc. Wenn auch es nicht sehr schön wäre. Das Ding läuft aber, völlig problemlos, ich hab darauf inzwischen Programme geschrieben, es gab keinen Knall mit Rauch. Einen 80C515A darf ich in das Board für den NMOS 80535 allerdings nicht mehr einsetzen, da kracht es wirklich, weil einmal ein Versorgungspin richtig fest (ohne einen Kondensator dazwischen) GND ist, und einmal VCC. Jedoch verwenden meine Anwendungen den ADC nicht, darüber kann ich nichts sagen. Abdul K. schrieb: > Die Antwort ist ja leicht durch den TO verifizierbar. Ohne den können wir hier ohnehin nur spekulieren, und ein wenig am Rande diskutieren.
So jetzt melde ich mich dann doch noch mal zu Wort. Also Ich finde es lustig wie so Diskussionen immer abgleiten und ausarten. Finde es ja nett das man hier versucht alle Eventualitäten abzugrasen, aber leider kann ich diese vielen Fragen gar nicht beantworten weil ich die Platine nicht vor Augen habe. Zur Erklärung: Es ist eine Schulplatine wo der MC auf einer Platine sitzt die Wiederum die Pins nach aussen führt. Heisst soviel wie das z.b. der P1 mit zwei anschlüssen versehen ist. einer für den eingang einer für den Ausgang und mit einem wahlschalter kann ich vorwählen ob der pin ein Eingang oder ausgang ist. Schalte ich den Schalter ein so ist der Pin auf Eigang = 1 oder auf ausgang geschaltet. heisst lese ich ihn ein bekomme ich eine 1 nutze ich Ihn als Ausgang müsste die dort verbaute LED beim einspielen des Programms ausgehen und erst durch das setzen des Pins wieder angehen. dies ist auch beim P6 der fall. dort sind , 3 pins rausgeführt ( .4 . 5. 6 ) So wenn ich nun dort den schalter einschalte um dort eine 1 oder besser 5V auf den eingang zu schalten, leuchtet die LED nicht und ich bekomme auch keine 1 im MC angezeigt. Deswegen die eingangsfrage ob ich da was anschalten muss wer programm oder sonst was. hoffe jetzt herscht etwas klarheit
Jörg D. schrieb: > Deswegen die eingangsfrage ob ich da was anschalten muss wer programm > oder sonst was. > > hoffe jetzt herscht etwas klarheit Kannst du denn mal ein Foto von der Platine oder dem Aufbau machen? Oder gibt es einen Schaltplan zur Platine? Das Problem sollte man hier auf jeden Fall behoben bekommen, weil Leute sich damit aus kennen.
Jörg D. schrieb: > So wenn ich nun dort den schalter einschalte um dort eine 1 oder besser > 5V auf den eingang zu schalten, leuchtet die LED nicht und ich bekomme > auch keine 1 im MC angezeigt. Hast du mal den Code, wie du den Pinzustand an die LED überträgst? Und wie ist die LED an den µC angeschaltet? Hoffentlich nicht vom Pin mit Vorwiderstand an Masse!!! Aber wir brauchen etwas Info, um zu helfen.
@ Abdul K. : Das war jetzt hilfreich , danke Also wenn ich ne ganz einfache verknüpfung mache sieht das etwa so aus A1=1; P1_B0=A1; wie gesagt ich habe die Platine nicht vorliegen leider auch keinen schaltplan, aber die ausgänge liegen hinter TTL bausteinen. obs jetzt treiber sind oder nicht kann ich leider nicht sagen ich versuch heute abend mal in der schule fotos zu machen.
Jörg D. schrieb: > So wenn ich nun dort den schalter einschalte um dort eine 1 oder besser > 5V auf den eingang zu schalten, leuchtet die LED nicht und ich bekomme > auch keine 1 im MC angezeigt. Vergiß mal die 5V. Du mußt erst 0V und dann 5V anlegen, damit Du einen Unterschied siehst. Offenen Pins haben keinen definierten Pegel! LEDs (Verbraucher) sind beim 8051 üblicher Weise low-aktiv, da die Ports beim Reset auf high gehen. Und das wäre nicht so der Bringer, wenn beim Einschalten immer gleich alles an geht.
Peter Dannegger schrieb: > da die Ports > beim Reset auf high gehen. Der Port 6 aber nicht. Der kann nur lesen, und hat auch keine internen Pullups. In meinem Handbuch steht zum P6, Portregister, für alle Halbleitertechnologien der 80535, 80C535 und 80C515A mit digitaler Portfunktion: Reset-Wert: XXH. Wobei X bedeutet: Undefined. Man liest also nur ein, was wirklich gerade aktuell am Pin an liegt, und es soll ungefähr der TTL-Spezifikation entsprechen. Eine 0 oder 1 gibts also immer, auch im TTL-Totband.
Wilhelm Ferkes schrieb: > Der Port 6 aber nicht. Ich gehe mal davon aus, daß man bei gesundem Menschenverstand die Lasten nur an solche Ports anschließt, die auch Ausgänge sind. Daß P6 keine Lasten schalten kann, sollte inzwischen durch mehrfache Posts klar geworden sein. Da die Posts des OP weiterhin sehr nebulös sind, hatte ich angenommen, daß die LED an einem anderen Port hängt, auf den er den von P6 eingelesenen Zustand ausgibt. Alles andere ergäbe einfach keinen Sinn.
Peter Dannegger schrieb: > Wilhelm Ferkes schrieb: >> Der Port 6 aber nicht. > > Ich gehe mal davon aus, daß man bei gesundem Menschenverstand die Lasten > nur an solche Ports anschließt, die auch Ausgänge sind. An P6 gehören nur Inputs, die man in etwa so betrachten kann, wie Inputs an einem CMOS-Gatterbaustein. Mehr nicht. > Daß P6 keine Lasten schalten kann, sollte inzwischen durch mehrfache > Posts klar geworden sein. Der kann nur lesen, hat keine Porttreiber. > Da die Posts des OP weiterhin sehr nebulös sind, hatte ich angenommen, > daß die LED an einem anderen Port hängt, auf den er den von P6 > eingelesenen Zustand ausgibt. Alles andere ergäbe einfach keinen Sinn. Also ich könnte das Lesen von P6 hier sofort als Programmschnipsel posten, denn meine im Jahr 1994 gebaute DCF77-Uhr liest Schalter von P6 ein. Wenn es hier hart kommt, suche ich diesen alten Codeschnipsel, ist allerdings Assembler. Im Prinzip braucht man doch nur ein Programmstückchen, was zum Test den P6.4 ins Carry-Flag lädt, und das Carry-Flag an den Pin überträgt, wo eine LED dran ist. Das braucht man noch nicht mal zu entprellen.
So, ich hab jetzt meinen um Watchdogfähigkeit erweiterten Bootloader für das EPROM des 80C517A fertig. Es kann wieder los gehen. Jetzt könnte ich auf einfache Weise mit einem Stück Draht an einem Pin von P6 über ein Testprogrämmchen eine LED an einem anderen Pin schalten. Allerdings muß ich noch ein kleines Projektchen dafür auf setzen, was auch compiliert und linkt, und das Hex-File macht. P6 am 80C535 ist bei mir beim 80C517A allerdings P7 und P8, der µC hat 12 digitale und ADC-Inputs verteilt auf zwei Ports. Sie verhalten sich aber genau wie beim 80C535. Also: Wenn es noch jemanden interessiert, bleibe ich hier am Thread noch etwas dran...
Test fertig! Es funktioniert ausgezeichnet. Ich gehe mit einem höherohmigen Widerstand ein paar kOhm an einem analog-digitalen Port abwechselnd an GND und VCC, die LED leuchtet demnach.
1 | /*******************************************************************************
|
2 | Main.c
|
3 | Testprogramm analoger digitaler Port mit Controller SAB80C517A
|
4 | *******************************************************************************/
|
5 | |
6 | /*******************************************************************************
|
7 | Includes und Defines
|
8 | *******************************************************************************/
|
9 | |
10 | #include "sab80c517.h" // Header-File lokal |
11 | |
12 | /*******************************************************************************
|
13 | Variablen
|
14 | *******************************************************************************/
|
15 | |
16 | unsigned char __data i; |
17 | |
18 | /*******************************************************************************
|
19 | Funktionen
|
20 | *******************************************************************************/
|
21 | |
22 | /*******************************************************************************
|
23 | Hauptprogramm mit while(1)-Endlosschleife
|
24 | *******************************************************************************/
|
25 | int main ( |
26 | void
|
27 | )
|
28 | {
|
29 | i = 0; |
30 | |
31 | while(1) // Endlosschleife |
32 | {
|
33 | i = P7; // lese digital P7 ein |
34 | if (i & 0x01) |
35 | {
|
36 | P1_0 = 1; // LED an P1.0 |
37 | }
|
38 | else
|
39 | {
|
40 | P1_0 = 0; |
41 | }
|
42 | } // while(1) |
43 | } // main() |
44 | /******************************************************************************/
|
45 | // End of File
|
P7 ist für den 80C535 aber gegen P6 zu tauschen, und das entsprechende Include-File mit den Registerdefinitionen auch.
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.