Forum: Mikrocontroller und Digitale Elektronik PORT 6 an einem C535


von Jörg D. (jrg_d)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Jörg D. (jrg_d)


Lesenswert?

Ja das ist richtig das habe ich auch schon gelesen, allerdings nimmt der 
keinerlei Signale an dem Port an.

deswegen die Frage :-)

von Matthias (Gast)


Lesenswert?

Welcher Pegel liegt an?

von Peter D. (peda)


Lesenswert?

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

von Ralf (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

Vielleicht nochmal genau auf den Chip schauen.
Wenn da nicht steht 80C535, sondern 80535, dann fehlt P6.

von Jörg D. (jrg_d)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Jörg D. (jrg_d)


Lesenswert?

wenn ich sage ich frage auf P6&16 ab werde ich wohl Port6.4 abfragen

und nein vorher war keine spannung drauf

von Wilhelm F. (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

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.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

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.

von Wilhelm F. (Gast)


Lesenswert?

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.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

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 ;-)

von Wilhelm F. (Gast)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

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

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

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.

von Wilhelm F. (Gast)


Lesenswert?

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.

von Jörg D. (jrg_d)


Lesenswert?

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

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ganz sicher ;-))
Du hast da richtig Talent.

von Wilhelm F. (Gast)


Lesenswert?

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.

von Wilhelm F. (Gast)


Lesenswert?

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.

von Jörg D. (jrg_d)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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.

von Wilhelm F. (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Wilhelm F. (Gast)


Lesenswert?

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.

von Wilhelm F. (Gast)


Lesenswert?

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

von Wilhelm F. (Gast)


Lesenswert?

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