Forum: Mikrocontroller und Digitale Elektronik PIC-I/O als input/tristate für weiteren output nutzen


von Mark K. (mamikoe)


Lesenswert?

Ich habe bei einem PIC-Projekt das Problem, daß ein I/O-Pin zu wenig 
ist. Ein anderer PIC scheidet aus verschiedenen Gründen aus. Bei einem 
der Ports könnte ich aber den hochohmigen tristate-Zustand bei Benutzung 
des I/O als input als "Ersatz" für den fehlenden Ausgang bzw. dessen 
Simulation benutzen - gibt es dafür eine bewährten schaltungstechnischen 
Weg?

Konkret:
Der betreffende I/O schaltet auf H und zwar einen NPN bzw. N-FET, so daß 
nutzbar Masse angeschaltet wird (Zustand "an"). Solange er H ist wird 
die zusätzliche Steuerleitung nicht benötigt bzw. wäre logisch auf L. 
Ist er auf L so müßte die zusätzliche Steuerleitung falls erforderlich 
auf H schaltbar sein.
Die Zusatzbeschaltung des vorhandenen und dafür benutzbaren I/O muß also 
zwei Ausgänge A1 und A2 haben: Bei L ist A1 offen (also "aus") und A2 
offen (also "aus"). Bei H ist A1 Masse (also "an") und A2 offen (also 
"aus"). Bei X ist A1 offen (also "aus") und A2 Masse (also "an").
Also (0 und 1 als "aus" und "an" bezogen auf den Ausgang der 
Beschaltung):
I/O   A1   A2
L     0    0
H     1    0
X     0    1

Der naheliegende Gedanke, an den Ausgang einen Spannungsteiler zwischen 
Plus und Masse zu legen sowie einen N-FET unten (A1) und einen P-FET 
oben (A2) führt leider auch nicht unmittelbar zum Ziel: Bei L wäre A1 
"aus" und A2 "an", bei H wäre A1 "an" und A2 "aus" und bei X wären A1 
"an" und A2 "an".
Also (0 und 1 als "aus" und "an" bezogen auf den Ausgang der 
Beschaltung):
I/O   A1   A2
L     0    1
H     1    0
X     1    1
Wobei natürlich erschwerend hinzu kommt, daß das "1", also "an", des 
P-Transis nicht Masse wäre sondern Plus.

Invertiert würden zumindest die Kombinationen passen:
Also (0 und 1 als "aus" und "an" bezogen auf den Ausgang der 
Beschaltung):
I/O   A1   A2
L     1    0
H     0    1
X     0    0
Die Zuordnung zu L, H und X paßt zwar nicht, wäre aber nicht das Problem 
da "nur" Software, also "einfach" lösbar. Aber die Erforderlichkeit 
zweier Inverter stört, den Gesamtaufwand von 4 Transis plus Peripherie 
würde ich gerne vermeiden.

Durch Herumgesuche habe ich nur Schaltungen gefunden, die den 
hochohmigen tristate-Zustand mittels LEDs anzeigen (z.B. rot = L, grün = 
H und beide LEDs an oder aus = X). Das hilft hier aber nicht weiter.

Gibt es hier keine einfache Lösung?

: Bearbeitet durch User
von Jakob (Gast)


Lesenswert?

Deinen verschwurbelten langatmigen Erklärungen mag ich nicht folgen.

Mit einem Spannungsteiler auf 50% und einem 2 x ON - Taster gegen GND,
oder V+ mit rastender Mittelstellung kann man an einem Analog-Eingang
3 verschiedene Benutzerwünsche ablesen. (Erweiterung auf 1,5 Bits ;-)

Die Taster können durch Open-Collector- / Open-Drain-Transistoren
ersetzt werden, ... der Rest ist Einfallsreichtum.

von Peter D. (peda)


Lesenswert?

Es ist einfacher, mehrere Eingänge auf einen Pin zu legen, als Ausgänge.
Z.B. 2 Tasten über 3 Widerstände an einen Analogeingang.

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Mark K. schrieb:
> Konkret:

neee!
du topst den inhaltslosen mist der sonst hier so rumsteht um längen und 
bist ein wahrer meister in uns zumüllen!

ich kann mir gerade nicht vorstellen, wie du in dem zustand eine strasse 
überqueren kannst und überlebst - pass bloß schön auf.


mt

von Mark K. (mamikoe)


Angehängte Dateien:

Lesenswert?

Bin ich wirklich der erste, der den offen, hochohmigen Zustand eines als 
Input gesetzten PIC-I/O-Ports als zusätzlichen Ausgang (@ Jakob: 
Ausgang! Nicht Eingang!) nutzbar machen muß/möchte? Kann doch nicht sein 
...

Ich habe mir folgende Lösung überlegt und möchte sie zur Diskussion 
stellen. Die Widerstandswerte sind zunächst nur überschlagen.
Die Wahrheitstabelle ist
I/O  A1      A2
L    offen   offen
H    offen   Masse
X    Masse   offen
Ich habe das Schaltungsdesign etwas geändert und möchte über die NPN 
zwei Relais schalten, die nur einzeln oder überhaupt nicht geschaltet 
werden - dies aber über den einzig verfügbaren Ausgang des PIC. Dies 
sollte diese Portbeschaltung ermöglichen: Mit dem I/O als output auf L 
ist kein Relais geschaltet, als output auf H ist nur ein Relais über A2 
und als input im hochohmigen Zustand ist nur das andere Relais über A1 
geschaltet. Ohne dies würde ich zwei I/O benötigen, so genügt ein 
I/O-pin.
Habe ich etwas übersehen?

von c-hater (Gast)


Lesenswert?

Mark K. schrieb:

> Bin ich wirklich der erste, der den offen, hochohmigen Zustand eines als
> Input gesetzten PIC-I/O-Ports als zusätzlichen Ausgang (@ Jakob:
> Ausgang! Nicht Eingang!) nutzbar machen muß/möchte? Kann doch nicht sein

Doch, das kann sehr gut sein. In aller Regel gibt es nämlich mehr als 
einen Pin. Und mit einiger Wahrscheinlichkeit sehr viel einfachere 
Möglichkeiten für eben diese anderen Pins, einen davon einzusparen. Den 
verwendet man dann statt deiner Konstruktion.

Ob die überhaupt funktionieren kann, da bin ich mir noch nicht sicher, 
ich würde nach der ersten Ansicht eher auf "nein" tippen, zumindest ist 
sie aber "wacklig" (im Sinne von: nur unter bestimmten Randbedingungen 
funktionsfähig).

Hast du sie mal simuliert? Falls ja: warum hast du das Ergebnis nicht 
geposted?

von Peter D. (peda)


Lesenswert?

Mark K. schrieb:
> Bin ich wirklich der erste, der den offen, hochohmigen Zustand eines als
> Input gesetzten PIC-I/O-Ports als zusätzlichen Ausgang (@ Jakob:
> Ausgang! Nicht Eingang!) nutzbar machen muß/möchte? Kann doch nicht sein

Doch, Du bist vermutlich der erste, der sich krampfhaft nur auf einen 
Pin versteift.
Der MC wird ja mehr als einen Pin haben. Daher gibt es bestimmt deutlich 
einfachere Möglichkeiten, Pins einzusparen. Nur mußt Du dazu eben die 
Verwendung aller anderen Pins offenlegen. Und natürlich auch den genauen 
Typ des MCs.

In der Regel will man auch nicht, daß während des Power-On oder beim 
Programmieren eine Last angeschaltet wird.

von Mark K. (mamikoe)


Lesenswert?

Peter D. schrieb:
> Mark K. schrieb:
>> Bin ich wirklich der erste, der den offen, hochohmigen Zustand eines als
>> Input gesetzten PIC-I/O-Ports als zusätzlichen Ausgang (@ Jakob:
>> Ausgang! Nicht Eingang!) nutzbar machen muß/möchte? Kann doch nicht sein
> Doch, Du bist vermutlich der erste, der sich krampfhaft nur auf einen
> Pin versteift.

Vielleicht hast Du es nicht gelesen, aber es steht kein weiterer I/O zu 
Verfügung und ein andere PIC mit mehr I/O kommt auch verschiedenen 
Gründen nicht in Betracht.

> Der MC wird ja mehr als einen Pin haben. Daher gibt es bestimmt deutlich
> einfachere Möglichkeiten, Pins einzusparen.

Nein. Gibt es eben nicht.

> Nur mußt Du dazu eben die
> Verwendung aller anderen Pins offenlegen. Und natürlich auch den genauen
> Typ des MCs.

Hör auf! Ich bin seit fast 30 Jahren ins newsgroups und Foren unterwegs 
und weiß genau, was dann passiert. endlose Diskussionen über mein 
Vorhaben, "Verbesserungsvorschläge", die meine Vorgaben und Wünsche 
ignorieren, Vorwürfe, daß ich auf diesen beharre und dann schließlich 
die übliche Meckerei, warum ich frage wenn ich doch "Lösungen" nicht 
akzeptieren. Nein danke kein Bock darauf.
Du kannst ruhig davon ausgehen, daß ich das alles schon so weit 
optimiert habe, daß kein I/O mehr frei ist.

> In der Regel will man auch nicht, daß während des Power-On oder beim
> Programmieren eine Last angeschaltet wird.

Das ist ein Argument. In der Tat ist ein kleiner Schönheitsfehler, daß 
beim Hochfahren für ein paar ms ein Relais anziehen würde. Das schadet 
in diesem Fall zwar nichts, weil nichts weiter passiert, passieren kann, 
aber unschön ist es schon. Daher wäre mir eine Beschaltung willkommen, 
die den X-Zustand mit dem Ausgangszustand A1 und A2 "offen", also beide 
Relais ausgeschaltet, verbindet.

von Mark K. (mamikoe)


Lesenswert?

c-hater schrieb:
> Doch, das kann sehr gut sein. In aller Regel gibt es nämlich mehr als
> einen Pin. Und mit einiger Wahrscheinlichkeit sehr viel einfachere
> Möglichkeiten für eben diese anderen Pins, einen davon einzusparen. Den
> verwendet man dann statt deiner Konstruktion.

Siehe oben. Gibt es nicht ohne eine grundlegende, völlige Änderung der 
Schaltung, des Projekts, die andere Nachteile mit sich bringen würde, 
die ich noch viel weniger haben möchte.
>
> Ob die überhaupt funktionieren kann, da bin ich mir noch nicht sicher,
> ich würde nach der ersten Ansicht eher auf "nein" tippen, zumindest ist
> sie aber "wacklig" (im Sinne von: nur unter bestimmten Randbedingungen
> funktionsfähig).

Aha. Nämlich welche? Was habe ich übersehen?

> Hast du sie mal simuliert? Falls ja: warum hast du das Ergebnis nicht
> geposted?

Wenn ich sie ausprobiert oder simuliert hätte, dann würde ich das 
Ergebnis kennen und nicht fragen müssen. Zum Ausprobieren habe ich 
derzeit keine Möglichkeit und das Simulieren scheitert daran, daß ich 
mit den Simulationsprogrammen nicht umgehen kann. Du magst das 
vielleicht lächerlich finden aber da ist so. Ich habe meine Bastelleben 
lang Ideen mit realen Bauteilen ausprobiert, nur geht das derzeit leider 
nicht. Und die wenigen Male, bei denen parallel ein anderer die 
Schaltungen simuliert hat, haben gezeigt, daß die Simulationen nicht die 
Wirklichkeit abbilden. Das mag Zufall gewesen sein, aber mir genügt es, 
um nicht auch noch darin unendlich viel Zeit zu versenken (denn wie 
alles erfordert auch dies ein umfängliches Einarbeiten und Training).

: Bearbeitet durch User
von Teo D. (teoderix)


Lesenswert?

Natürlich geht das! Es kommt halt drauf an wie sehr, die an diesem Pin 
angeschlossene Schaltung, dadurch gestört wird. Wenn das kein Problem 
ist,  ists kein Problem, den IO-Pin auf input zu schalten und 
nachzusehen ob sich da was tut.
Sows ist Standard, kann also nur an deiner ausufernden Ausdrucksweise 
liegen, das damit keiner was anfangen kann/will....

von Günter Lenz (Gast)


Lesenswert?

Man kann die Bits auch seriell in ein Schiberegister
schieben, seriell parallelwandlung, damit hast du dann
genug Ausgangsports, je länger das Schieberegister um
so mehr Ausgangsports.

von Michael (Gast)


Lesenswert?

Mark K. schrieb:
>> In der Regel will man auch nicht, daß während des Power-On oder beim
>> Programmieren eine Last angeschaltet wird.
>
> Das ist ein Argument. In der Tat ist ein kleiner Schönheitsfehler, daß
> beim Hochfahren für ein paar ms ein Relais anziehen würde.

Dann nimm doch zwei Optokoppler: Einer gegen GND und einer gegen VDD. 
Vorteil: Bei tri-state fließt kein Strom, folglich kein Licht und keine 
Last wird bedient. Bei "low" wird der eine leitend, bei "high" der 
andere.

Vorteil: Du hast mit billigen Mitteln einen stromgesteuerten Schalter - 
wäre jetzt mein Ansatz.

von MaWin (Gast)


Lesenswert?

Mark K. schrieb:
> Gibt es hier keine einfache Lösung

Nein.

Aber du hast sicher ein dutzend andere I/O Pins bei denen sich viel 
leichter ein Pin einsparen lassen würde, aber deren Beschaltung erklärst 
du ja NATÜRLICH nicht, nur die von dem von dir auserkorenen bei dem es 
nicht so einfach geht (kompliziert geht immer, notfalls Anschluss eines 
zweiten uC  der mit dem ersten über ein 1-Wire Protokoll kommuniziert 
und einen Eingang und einen Ausgang zur Verfügung stellt).

von Mark K. (mamikoe)


Lesenswert?

MaWin schrieb:
> Aber du hast sicher ein dutzend andere I/O Pins bei denen sich viel
> leichter ein Pin einsparen lassen würde, aber deren Beschaltung erklärst
> du ja NATÜRLICH nicht, nur die von dem von dir auserkorenen bei dem es
> nicht so einfach geht (kompliziert geht immer, notfalls Anschluss eines
> zweiten uC  der mit dem ersten über ein 1-Wire Protokoll kommuniziert
> und einen Eingang und einen Ausgang zur Verfügung stellt).

ich weiß es zwar besser, aber schön:
Der PIC hat 12 I/O.
Einer dient zum Befehlsempfang, der muß dauernd auf input sein.
Mit 8 I/O werden über eine Matrix von 5 x 5 24 Schaltausgänge bedient 
(und ja, mit zusätzlichen Multiplex_ICs könnte ich das mit 5 I/O 
erledigen, aber abgesehen davon, da ich diese zusätzliche Beschaltung 
plus weitere 14 Transistoren für die Relais nicht haben möchte hätte ich 
so einen 25adrigen Kabelstrang zum Ziel und nicht nur 10).
Ein weitere I/O dient zur Richtungsumschaltung und muß immer entweder L 
oder H sein.
Ein weiterer I/O dient dem Aktivieren eines Zugmagneten und muß 
ebenfalls zu jeder Zeit ohne Einschränkungen möglich sein.
Bleibt also noch ein I/O, mit dem ich zwei Relais wie beschrieben 
schalten muß.
Sicher könnte man mit Schieberegister usw. neue I/O schaffen, aber auch 
das ist mir zu viel Schaltungsgedöns und ich habe softwareseitig so 
etwas noch nie gemacht und nicht die geringste Lust, mich damit auch 
noch zu befassen, wenn ich das einfacher mit einem Schaltungstrick lösen 
kann. Das kann jeder gerne für sich anders entscheiden aber da ich die 
den PCI progammieren und die Schaltung aufbauen und zum Laufen bringen 
muß ist es auch meine Entscheidung, nicht einen derart aufwendigen Weg 
zu gehen sondern nach einer einfacheren Lösung zu suchen.

von Michael (Gast)


Lesenswert?

Mark K. schrieb:
> nicht einen derart aufwendigen Weg
> zu gehen sondern nach einer einfacheren Lösung zu suchen.

Ich habe dir einen Vorschlag gemacht: Vier Widerstände, zwei Optokoppler 
und zwei Transistoren. Ist nicht einfach genug?

von A. S. (Gast)


Lesenswert?

Wenn der IO-Port einen statischen Pegel haben soll (also kein 
Bitmuster), dann kann er zu jedem Zustand nur einen haben:

5V (oder was auch immer) bei HIGH
0V bei LOW
xV bei Tristate


Die ON Schaltschwelle von A1 muss >> xV sein.
Die ON Schaltschwelle von A2 muss << xV sein und invertiert werden.


Nimm Dir einen beliebigen Schalter (Transistor, Gatter, Mosfet-Treiber) 
und entweder einen zweiten mit anderer Schaltschwelle oder manipuliere 
die andere Schaltschwelle mit z.B. Dioden so, dass sie genügend weit 
auseinander liegen.

Dann Spanne den IO-Pin mit einem entsprechenden Spannungsteiler mit xV 
vor. Und xV=die mitte zwischen minimaler Schwelle des einen und 
maximaler des anderen.

von Mark K. (mamikoe)


Lesenswert?

Michael schrieb:
> Dann nimm doch zwei Optokoppler: Einer gegen GND und einer gegen VDD.
> Vorteil: Bei tri-state fließt kein Strom, folglich kein Licht und keine
> Last wird bedient. Bei "low" wird der eine leitend, bei "high" der
> andere.
> Vorteil: Du hast mit billigen Mitteln einen stromgesteuerten Schalter -
> wäre jetzt mein Ansatz.

Danke, das kann eine alternative Lösung sein, vor allem wenn es mit 
meinem Entwurf nicht klappt. Allerdings hatte ich noch nie mit 
Optokopplern umegehen müssen und kenne mich damit nicht aus. Welchen 
würdest Du empfehlen (Schaltpannung der Relais 16V, ca. 40mA)?

Ganz optimal wäre es aber, wenn ich dafür gleich ein Halbleiterrelais 
wie das AQH3223 (bzw, AQH3213 - leider habe ich noch nicht verstanden, 
ob hier ein "zero cross"- oder "non zero-cross"-Modell besser oder 
erforderlich ist) verwenden könnte, denn damit könnte ich (insgesamt) 
auf die elektromechanischen Relais verzichten. Das Problem dabei ist, 
daß bei der Anwendung (Modellbahn-Digitalsteuerung, Steuerung einer 
Drehscheibe mit abschaltbaren Abstellgleisen, auch bei diesen konkreten 
beiden Relais) ständig mit Kurzschlüssen zu rechnen ist, bei denen sehr 
viel mehr als 1,2A fließen (der Booster hat natürlich eine 
Kurzschlußsicherung, aber die begrenzt naturgemäß erst bei deutlich 
größeren Strömen), und die in der erforderlichen Menge erschwinglichen 
Halbleiterrelais wie das AQH eben entsprechend limitert sind. Geschaltet 
wird eine Wechselspannung von +/- 18V (deren "Frequenz" liegt bei 20 bis 
40 kHz). Bei Verwendung etwa der AQH anstelle elektromechanischer 
Relais, die dann auch die aufwendigere Ansteuerung der 24 Relais für die 
Abstellgleise obsolet machen würde, wäre aber eine Überstromsicherung 
erforderlich, die ab etwa 1A entweder den Strom begrenzt oder aber für 
ein paar Sekunden die Spannung unterbricht.
An eine solche Halbleiterlösung hatte ich zu Anfang gedacht bzw damit 
ursprünglich geplant, aber ich bin mit dem Problem der 
schaltungstechnisch einfachen (klar,mit viel Aufwand geht alles) 
Überstromsicherung nicht zu einer Lösung gekommen, so daß ich 
schließlich zu insofern einfacher handhaberen Relais gewechselt bin.

von Peter D. (peda)


Lesenswert?

Schalte doch die beiden Relais mit einem pnp und einem npn. Dann zieht 
eins bei L und das andere bei H. Die Spannungsteiler dimensioniert man 
so, daß sie bei 2,5V (tristate) noch sperren.

von Mark K. (mamikoe)


Lesenswert?

Michael schrieb:
> Mark K. schrieb:
>> nicht einen derart aufwendigen Weg
>> zu gehen sondern nach einer einfacheren Lösung zu suchen.
> Ich habe dir einen Vorschlag gemacht: Vier Widerstände, zwei Optokoppler
> und zwei Transistoren. Ist nicht einfach genug?

Gemach, gemach, ich kann zwar schnell denken aber nicht auch nur 
annähernd so schnell schreiben, zumal auch zunächst in Datenblätter und 
meine alte Planung schauen mußte.
Aber warum zusätzlich 4 R und 2 T? Ich hätte mit 2R und 2 OK gerechnet. 
Schalten die Optokoppler die Relais nicht direkt?

von Mark K. (mamikoe)


Lesenswert?

A. S. schrieb:
> Wenn der IO-Port einen statischen Pegel haben soll (also kein
> Bitmuster), dann kann er zu jedem Zustand nur einen haben:
> ...

Soweit ich Deine Beschreibung verstanden habe entspricht dies doch genau 
meinem zur Diskussuion gestellten Be-/Schaltungsentwurf ....  oder?

von Mark K. (mamikoe)


Lesenswert?

Peter D. schrieb:
> Schalte doch die beiden Relais mit einem pnp und einem npn. Dann zieht
> eins bei L und das andere bei H. Die Spannungsteiler dimensioniert man
> so, daß sie bei 2,5V (tristate) noch sperren.

An so eine schön symmetrische Schaltung hatte ich zunächst auch gedacht, 
es dann aber zugunsten meines Entwurfs verworfen, weil ich (das ist eine 
nicht genannte weitere Rahmenbedingung) nur eine physische Leitung für 
die beiden Relais übrig habe. Diese sitzen mit anderem Kram auf der 
Unterseite der Drehbühne, die mit nur einer sehr begrenzten Zahl von 
Scheifkontakten mit der "Basis" verbunden ist (und nein, die 
PIC-Schaltung kann da nicht hin, denn diese steuert auch 24 
Abstellgleise, die ebenfalls eine Reihe von Verbindungskabeln 
erfordern). Also muß die gesamte Relaisbeschaltung unter die Drehbühne, 
so daß nur die PIC-Ausgänge mit entsprechenden R "abgesichert" über die 
Schleifkontakte geführt werden, und es ist nur noch ein Schleifkontakt 
frei. Die Relais sind aber 12V-Typen (u.a. wegen des Strombedarfs) und 
unter der Brücke gibt es nur die aus der ohnehin zugeführten 
Digitalspannung gewonnenen und für Drehantrieb und Zugmagnet 
erforderlichen ca. 16V. Der PNP erfordert aber am Emitter +5V bzw. die 
Versorgungsspannung des PIC. Was einen weiteren Spannungsregler 5V auf 
der Bühne erfordern würde - nur wegen dieser Relais, die dann 
stromhungrigere 5V-Typen sein müßten ... All das würde ich gerne 
vermeiden.

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

Mark K. schrieb:
> Aber warum zusätzlich 4 R und 2 T? Ich hätte mit 2R und 2 OK gerechnet.
> Schalten die Optokoppler die Relais nicht direkt?

Ein billiger CNY17 hat nur einen Kollektorstrom von 50mA (und dieser ist 
noch in Relation zum Strom der LED.) Es sollte daher ein Transistor 
nachgeschaltet werden (sofern man billige Standardkomponenten einsetzen 
will.)

Sicherlich gibt es deutlich kräftigere (und teurere) Typen, da ich so 
etwas aber noch nicht gebraucht habe, müsste ich auch erst nach 
Datenblättern schauen.

Wenn ein CNY17 nicht schnell genug ist, verwende ich gerne 6N135, die 
haben sogar nur 8mA!

von Mark K. (mamikoe)


Lesenswert?

Michael schrieb:
> Dann nimm doch zwei Optokoppler: Einer gegen GND und einer gegen VDD.
> Vorteil: Bei tri-state fließt kein Strom, folglich kein Licht und keine
> Last wird bedient. Bei "low" wird der eine leitend, bei "high" der
> andere.

Ähhhh - vielleicht ist es schon zu spät für so etwas, aber nach dem 
Aufzeichnen habe ich den Eindruck, daß dies nicht funktioniern kann. Der 
eine OK gegen Masse und der andere OK gegen Plus führt doch dazu, daß 
beide OK in Reihe, in Durchlaßrichtung zwischen Plus und Masse liegen. 
Bei offenen Anschluß zum PIC und Vorwiderständen von 390R fließen immer 
noch etwa 4mA und damit genug, daß beide OK schalten - oder?

von LostInMusic (Gast)


Lesenswert?

So funktioniert es:

----------------------o-----
                      |
                      |
           OK        [R]
       +--->|---+     |
       |        |     |
 µC ---o        o-----o
       |        |     |
       +---|<---+     |
           OK        [R]
                      |
                      |
----------------------o-----

Bei dieser Schaltung sind beide Optokoppler-LEDs aus, wenn der µC-Pin im 
Zustand "Input/hochohmig" ist. Wie Du schon richtig bemerkt hast, fließt 
dann  auch in diesem Zustand durch den Spannungsteiler ein Strom (der 
Stärke 1/2 VCC/R), der Deine Stromrechnung (um einen sehr geringen 
Betrag) erhöhen wird. Das ist der kleine Nachteil dieser Schaltung, den 
Du in Kauf nehmen musst.

von Michael (Gast)


Lesenswert?

Die Optokoppler sind nicht im Reihe, sondern anti-parallel. Sind also 
zwischen den R und dem Portpin angeordnet, wenn der Pin hochohmig ist, 
kann kein Strom fließen.

Der Einwand stimmt, wie bei einer Z-Diode fließt immer Strom, aber ich 
ging davon aus, dass dies hier kein Problem darstellt.

von c-hater (Gast)


Angehängte Dateien:

Lesenswert?

Mark K. schrieb:

> Aha. Nämlich welche? Was habe ich übersehen?

Der wesentliche Punkt ist: du hast keine Lasten vorgesehen. Das 
Verhalten der Schaltung hängt aber sehr stark von den Lasten ab, die du 
dann anschließt. Außerdem auch von der Stromverstärkung der 
Transistoren. Und von der Betriebsspannung.

Wenn man letztere mal als konstant 5V annimmt, bleiben immer noch zwei 
Unbekannte.

Ich hänge mal drei Simulationen an. Die erste sieht zwar noch ziemlich 
schick aus, entspricht aber nicht deinem Anwendungsfall. Es gibt keine 
Relais, die 100kΩ Innenwiderstand haben. Bei einem 5V Kleinrelais ist 
eher irgendwas um die 150Ω zu erwarten. Und dann darfst du dir 
anschauen, was deine Schaltung dann tut, insbesondere I(R6) ist 
interessant, also Ausgang 2. Vollkommen funktionslos...
Und wenn man nun noch die Transistoren durch welche mit geringerer 
Stromverstärkung ersetzt, wird auch noch Ausgang 1 de facto 
funktionslos...

von MaWin (Gast)


Lesenswert?

Mark K. schrieb:
> Mit 8 I/O werden über eine Matrix von 5 x 5 24 Schaltausgänge bedient
> (und ja, mit zusätzlichen Multiplex_ICs könnte ich das mit 5 I/O
> erledigen, aber abgesehen davon, da ich diese zusätzliche Beschaltung
> plus weitere 14 Transistoren für die Relais nicht haben möchte hätte ich
> so einen 25adrigen Kabelstrang zum Ziel und nicht nur 10).

Hmm, 8 I/O machen mit simpler Matrix nicht 25 sondern 16. 10 I/O für 25 
oder Charlyplexing mit zusätzlichem externen Aufwand, z.B. Dioden. Aber 
Charlyplexing braucht nur 6 Pins für 25, da hättest du 2 Pins übrig.

Deine oberflächliche Beschreibung hier klingt also eher wie der Punkt an 
dem man ansetzen sollte.

von Rainer V. (a_zip)


Lesenswert?

Mark K. schrieb:
> weil ich (das ist eine
> nicht genannte weitere Rahmenbedingung) nur eine physische Leitung für
> die beiden Relais übrig habe

Hallo, nicht böse sein, aber der TO scheint auch zu der Fraktion der 
"gemischten Analog-Digital-Anlagen" zu gehören... :-)
Gruß Rainer

von Mark K. (mamikoe)


Lesenswert?

MaWin schrieb:
> Hmm, 8 I/O machen mit simpler Matrix nicht 25 sondern 16. 10 I/O für 25
> oder Charlyplexing mit zusätzlichem externen Aufwand, z.B. Dioden. Aber
> Charlyplexing braucht nur 6 Pins für 25, da hättest du 2 Pins übrig.

Hallo MaWin, gips Dich auch noch ... ;-)
Das ist aber etwas zu kurz gedacht. Da an I/O Mangel ist bzw. sich mit 
zunehmender geplanter Funktionalität immer mehr Bedarf an I/O ergab habe 
ich mir auch da etwas einfallen lassen ...
>
> Deine oberflächliche Beschreibung hier klingt also eher wie der Punkt an
> dem man ansetzen sollte.

... nämlich, daß ich zwar 4+4 I/O nehme und damit in einer Matrix 
entweder Relais (über MOSFET als high- und lowside-Treiber) oder SSR 
ansteuere, aber auch den Zustand "alles aus" der 4er-Gruppe verwende mit 
Ausnahme der Kombination LLLLHHHH (die "oberen" vier I/O sind bei H 
aktiv, die unteren vier I/O bei L), so daß 5*5-1 und damit genau die 24 
vorhandenen/benötigten Gleise an-/ausgeschaltet werden können. Dazu 
führe ich die jeweils 4 I/O über Dioden an die Basis eines PNP (4NOR) 
bzw. NPN (4NAND), der dadurch die als eigenen I/O "fehlende" Matrixlinie 
erzeugt. Dioden und Transis weil es kein IC mit einem 4NAD und einem 
4NOR gibt und weil ich nur mit Transis nahe an Masse bzw. die 
Versorgungsspannung komme.

Ich weiß, daß ich beim Ausweichen auf zwei 4-16-Mulitplexer mit 5 I/O 
auskommen würde, aber zum einen wären das zwei fette IC mehr und zum 
anderen müßte ich dann vom Dekoder aus 14 Leitungen mehr zur Drehscheibe 
legen und das paßt mir bei meiner vorgesehen Art des Aufbaus überhaupt 
nicht.

Den Begriff Charlyplexing kannte ich noch nicht, aber bein ersten 
Überfliegen der Erklärungen im Netz kam mir das so vor oder ähnlich vor 
wie die Matrix, die ich zwischendurch mal entworfen hatte mit 3+4 I/O 
und antiparallel geschalteten SSR, wobei ich bei den ersten 3 I/O deren 
hochohmigen Zustand nutzen wollte. Ich bin davon abgekommen, da ich den 
Eindruck hatte, daß dabei auch immer Serienschaltungen von SSR entstehen 
und so nicht nur das jeweils adressierte SSR aktiviert wird. Aber 
anscheinend habe ich da falsch/zu kurz gedacht, so daß ich mir das 
Charlyplexing genauer anschauen und zu verstehen versuchen werde.

von Mark K. (mamikoe)


Lesenswert?

Rainer V. schrieb:
> Hallo, nicht böse sein, aber der TO scheint auch zu der Fraktion der
> "gemischten Analog-Digital-Anlagen" zu gehören... :-)

Ich bin nicht böse, aber ich verstehe nicht ....

von Mark K. (mamikoe)


Lesenswert?

Michael schrieb:
> Die Optokoppler sind nicht im Reihe, sondern anti-parallel. Sind also
> zwischen den R und dem Portpin angeordnet, wenn der Pin hochohmig ist,
> kann kein Strom fließen.
> Der Einwand stimmt, wie bei einer Z-Diode fließt immer Strom, aber ich
> ging davon aus, dass dies hier kein Problem darstellt.

Ebenso @ Lostinmusic:

mea culpa, es war anscheinend wirklich zu spät, das habe ich völlig 
falsch verstanden. Aber so fließt nicht nur "etwas" mehr Strom ...
Ich habe mal versucht, das durchzurechnen, und dann aus Unglauben eine 
kleine Ecke freigeräumt und improvisiert das Ganze mit zwei LEDs 
nachgebaut.
LED-Strom 8mA, R=330R, Spannung 5V. Einzeln prima.
Dann so wie die Skizze erweitert. Offen alle duster und bei Masse oder 
Plus an die LEDs leuchtete zwar jeweils eine, aber nur eher schwach. 
Weniger als 3mA. Ich habe dann die beiden R sukzessive bis auf 33R (!) 
verringert, aber der Strom durch die noch immer nicht so hell wie zuvor 
leuchtende LED ging nicht über ca. 6mA. Dafür fließen durch die beiden R 
sogar in Ruhe fast 80mA.
Nee, das geht so nicht, weder mit OK noch mit SSR. Ich muß zwar nicht 
mit jedem mA geizen (auch wenn es "teurer" Digitalstrom ist), aber 80mA 
und dann nur etwa die Hälfte von dem Strom, den die OK oder SSR 
benötigen, ist leider keine Lösung.

von Mark K. (mamikoe)


Lesenswert?

c-hater schrieb:
> Der wesentliche Punkt ist: du hast keine Lasten vorgesehen. Das
> Verhalten der Schaltung hängt aber sehr stark von den Lasten ab, die du
> dann anschließt. Außerdem auch von der Stromverstärkung der
> Transistoren. Und von der Betriebsspannung.
....
> Ich hänge mal drei Simulationen an. Die erste sieht zwar noch ziemlich
....

Danke für die Mühe. Nimms mir nicht übel, aber da aus den erwähnten 
Gründen sagen mir die Grafiken nicht viel, jedenfalls vermag ich nicht 
das zu erkennen, was Du schilderst. Das heißt nicht, daß ich Dir nicht 
glaube - ich kann nur mit den Grafiken nichts anfangen.

Ich wage mal die Vermutung, daß die Ursache wohl ist, daß ich bei den 
dahingeworfenen Widerstandswerten allein auf die Schaltschwellen 
geachtet und die Basisströme mißachtet habe. Auch bei ca. 50mA für die 
(noch) vorgesehenen 12V-Relais müßte ich wohl 1mA für den Basisstrom 
vorsehen und das klappt mit den Widerstandwerten in der Tat nicht.
Zwei Alternativen sehe ich: Die Verwendung von MOSFETs mit passenden 
Ugstresh., was möglicherweise aus Selektion hinausläuft. Oder die 
Verwendung von Darlingtons. Bei einer Verstärkung von mehreren tausend 
und somit nur uA als Basistrom sollte das anders aussehen. Außerdem kann 
ich ja auch die Widerstände im den Faktor 10 verkleinern, das kann der 
PIC noch ab, auch wenn ich es "hochohmiger" lieber hätte (da "offen" 
leider nicht mit "alles aus" übereinstimmt).
Vielleicht habe ich die nächsten Tage etwas Zeit dafür, dann baue ich 
das mal in real life auf.

von MaWin (Gast)


Lesenswert?

Mark K. schrieb:
> Dazu führe ich die jeweils 4 I/O über Dioden an die Basis eines PNP

Hmm, also 10 Transistoren und 8 Dioden um aus 8 Leitungen eine 5x5 
Matrix zu bauen, in der zu einer Zeit immer ein Ausgang aktiv ist, dafür 
aber mit signifikantem Strom, sagen wir zumindest 100mA.
Damit eine Matrix von Relais damit schaltbar wird braucht man aber noch 
2 Dioden pro Relais, eine Seriendiode und eine Freilaufdiode, also 48 
weitere.
Schade, dass es dir zu mühsam ist, den Schaltplan zu zeigen..
Charlyplexing hat ein Problem mit Leistungsausgängen, 3-state 
Leistungstreiber aus einem I/O Pin sind bauteilaufwändig, dann käme man 
aber mit 6 Ausgängen aus (für 30 Relais).
Aber dein Bauteilaufwand ist sowieso hoch, mit integrierten 
Leistungstreibern mit Schieberegistern wie MIC5891/5895 high side und 
TPIC6B595 low side bleibt die Ansteuerung eine Matrix (Leitungen zu den 
Verbraucherstellen) aber werden aus 3 I/O Pins gleich 64 Relais 
steuerbar, sogar mit höhrren Spannungen z.B. 12V. Und der ganze 
Transistorhaufen mit ihren Dioden entfällt.
Schon hast du 5 I/O übrig.

von Peter D. (peda)


Lesenswert?

Mark K. schrieb:
> und zum
> anderen müßte ich dann vom Dekoder aus 14 Leitungen mehr zur Drehscheibe
> legen

Ich würde einfach auf der Drehscheibe einen 2. MC vorsehen, der vom 
ersten alle Daten seriell erhält und dann beliebig verteilt. Ich würde 
da auch keine Matrix vorsehen, sondern beliebig viele Treiber seriell 
kaskadieren, z.B. NPIC6C595D.
Dann brauchst Du nur 3 Schleifkontakte (GND, V+, Daten). Man kann auch 
noch die Daten auf die V+ modulieren, dann sinds nur 2 Schleifkontakte.

von Mark K. (mamikoe)


Lesenswert?

Oh, oh, aus euch sprechen die Profis. Für euch mag das eine Fingerübung 
sein ... Nicht für ungut, aber das, was ihr da skizziert, übersteigt 
mein Können bei weitem. Ich bin schon froh, wenn ich dies mit der 
gewünschten Funktionaität zum Laufen bekomme. Außerdem wäre das - ein 
eigener PIC auf der Drehbühne, serielle Datenversorgung - nur um etwas 
Gefummel mit der Tristate-Leitung einzusparen, doch mit sehr großen 
Kanonen auf winzige Spatzen geschossen ...

@ MaWin: Natürlich kommt noch etwas Diodenkram hinzu, das läßt sich bei 
Relais nicht vermeiden. Und auch Treiber, denn auch wenn ich die Relais 
nur beim Einschalten mit den erforderlichen 70mA betreiben würde, die 
die sich dann auf den Haltestrom von ca. 10 bis 20mA reduzieren würden, 
wäre dies dennoch zu viel für den PIC. Allerdings bin ich eigentlich 
schon entschlossen, SSR (AQH3213) zu verwenden. Das erfordert jedoch 
noch eine bei 1A eingreifende Kurzschluß(ab)sicherung des Digitalstroms 
vom Booster, für die ich noch keine wirklich einfache Lösung habe ... 
Und damit, mit den SSR,fallen die Dioden und Transistortreiber weg und 
es bleiben nur 2x4 Dioden und je ein Transi für die jeweils 5.Leitung 
der Matrix ... Man kann nicht alles haben und das ist mir allemal lieber 
als das Herumtreiber mit Schiebregistern und serieller Übertragung, von 
der ich noch nichts verstehe.

Der Schaltplan ist doch ohne Bedeutung, zumal ich noch keinen 
endgültigen Schaltplan habe sondern erst noch am Skizzieren der 
einzelnen Teile bin (und sie, wenn ich wieder fummeln kann, einzeln 
ausprobieren werde). Die Matrix für die 24 "Schaltausgänge" ist ja 
offensichtlich und wie man über einen PIC gesteuert über ein Relais die 
Drehrichtung einer DC-Motors ändert bedarf sich ebenso wenig eines 
Schaltplans wie das An- und Ausschalten eines Zugmagneten. Und der Teil 
der Tristate-Leitung bzw. Auswertung ist Gegenstand dieses Freds.

Charlieplexing habe ich mir angeschaut. Hat wirklich Ähnlichkeit mit 
dem, was ich mir so angedacht hatte, ist aber besser, konsequenter und 
funktioniert -zumindest im Testaufbau mit 6 LEDs. Siehe 
http://elektro.turanis.de/html/prj149/index.html das obere Bild mit den 
3 Ausgängen und 6 LEDs.
Was ich aber nicht verstehe ist, warum bei diesem einfachen Beispiel mit 
3 Ausgängen und 6 LEDs alle LEDs NACH den Widerständen angeschlossen 
werden, bei dem Beispiel mit der Matrix (Abb.: Charlieplexing-Matrix mit 
LEDs), also 5 Ausgänge und 20 LEDs, die Kathoden der LEDs allesamt an 
den Ausgängen VOR den Widerständen liegen. Bei dem einfachen Beispiel 
mit 6 LEDs habe ich mal beide Varianten ausprobiert, es hat zu keinem 
Unterschied geführt.

In der Tat könnte ich mit Charlieplexing - wenn es auch mit den SSR 
funktioniert - drei I/O einsparen (und hätte sogar noch 6 
"Schaltausgänge" über).
Der Nachteil wäre, daß beim Ausfall eines SSR (und das kann schnell 
gehen, sind ja nur SSR und Kurzschlüsse auf dem Gleis sind ja die Regel) 
jedenfalls bei einer komplexen "6er Matrix" wohl nicht mehr anhand des 
"wilden" Ergebnisses gesagt werden kann, welcher SSR hinüber ist.

Aber letztlich stellt sich die Frage des Einsparens weiterer I/O nicht 
wirklich, denn ich brauche diese eine Tristate-Leitung auch aus dem 
simplen Grund, daß ich insgesamt nur drei Schleifkontakte zur Drehbühne 
frei habe, die gegenwärtig (analog) die Drehfunktion steuern. Einer ist 
für die Motorrichtung erforderlich (wahlfrei immer L oder H), einer für 
den Zugmagneten (Motor an/aus und Entriegelung, also wahlfrei L oder H) 
und der dritte für die aktive Seite der Drehbühne (das "warum" zu 
erklären würde hier zu weit und zu end- wie sinnlosen Diskussionen 
führen, warum ich das möchte und ob man es nicht einfacher hat, wenn man 
darauf verzichtet, und überhaupt mein ganzes Konzept mit den 
abschaltbaren Abstellgleisen ....), was entweder mit "Spannung an/aus" 
und diese nach "vorne/hinten", also zwei binären Steuerleitungen 
erledigt werden kann, oder mit zwei alternativ oder überhaupt nicht 
aktivierten "an/aus"-Schaltern, die die Spannung entweder nach vorne 
oder nach hinten oder überhaupt nicht schicken, was eben mit einer 
Tristate-Leitung und damit einer einzigen Leitung möglich ist.
Auch wenn ich durch Charlieplexing oder wie auch immer noch zwei I/O 
oder mehr übrig hätte, würde dies also nichts daran ändern, daß doch nur 
noch eine Leitung zur Drehbrücke übrig ist. Also entweder ein PIC oder 
Schieberegister oder was auch immer an Elektronik auf der Brücke mit 
serieller Datenübertragung, was für mich mangels Können (und auch 
Wollen, mir zu allem auch noch diesen Brocken am Anfang aufzuladen) 
ausscheidet, oder eben diese eine freie Leitung zur Brücke als Tristate 
ausführen und darüber die beiden Relais (oder SSR) für "Spannung nach 
hinten/vorne" anzusteuern. An einem "tristate-2-binär-Dekoder" führt 
also für mich kein Weg vorbei.

Der oben diskutierte Weg mit den antiparallel geschaltete OK oder SSR 
scheidet aus den genannten Gründen leider aus, obwohl es prima wäre, 
wenn ich auf diese Weise zwei SSR ohne weiteres Gedöns (von der 
erforderlichen 5V-Spannung auf der Drehbühne abgesehen) ansteuern 
könnte. Bleibt also noch mein Entwurf, der anscheinend jedenfalls 
grundsätzlich funktioniert und vielleicht mit anderen Bauteilen 
(Darlingtons/FETs) auch tatsächlich das tut, was er soll, oder die oben 
erwähnte Lösung mit einer symmetrischen NPN/PNP-Kombi und vier R, die 
aber auch den Nachteil hat, daß ich auf der Drehbrücke noch für eine 
5V-Spannung sorgen muß. Oder es gibt noch eine weitere (einfache) 
Lösung, die noch der Offenbarung harrt ....

: Bearbeitet durch User
von Mark K. (mamikoe)


Lesenswert?

c-hater schrieb:
> Mark K. schrieb:
> Der wesentliche Punkt ist: du hast keine Lasten vorgesehen. Das
> Verhalten der Schaltung hängt aber sehr stark von den Lasten ab, die du
> dann anschließt. Außerdem auch von der Stromverstärkung der
> Transistoren. Und von der Betriebsspannung.

Könntest Du die Simulation mal dahingehend ändern, da die Transis FETs 
BSS123 (oder BSS138) sind und der Spannungsteile von oben nach unten 
22k, 15k und 15k und der Widerstand zum Gate des oberen FET 100k 
(alternativ 22k/12k/12k und 220k). Das sollte zu ausreichend niedrigen 
und hohen Spannungen am Gate des unteren FET sorgen (laut Datenblatt 
liegt die Grenze bei etwa 2,1/2,2V, hier fließen nur 10 bis 40mA). Wenn 
Du meinst, daß die 100k/220k vor dem oberen FET zu groß seien, können 
die R auch um den Faktor 10 kleiner werden, mit 2mA Strom für den Port 
kann der PIC und auch ich leben ;-).

An sich wollte ich den Kram unter der Brücke der Einfachheit halber mit 
bedrahteten Bauteilen fliegend zusammenlöten. Aber wenn ich schon zu SMD 
greifen muß .... dann kann ich auch gleich die Diode durch einen 
weiteren FET, der wie der untere FET angesteuert wird, ersetzen, und 
damit den oberen FET bei H "sauber" ausschalten. SOT23 ist SOT23 ....

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Mark K. schrieb:

> Könntest Du die Simulation mal dahingehend ändern

Mach's selbst.

Irgendwann musst du es doch lernen, mit Spice umzugehen, wenn du 
Schaltungen selber entwerfen willst. Die einzige Alternative ist: selbst 
zu rechnen. Das kostet allerdings ein ganzes Studium.

Halbwegs treffsichere Spice-Benutzung ist hingegen mit einem gewissen 
Satz an Grundkenntnissen der Elektronik in deutlich kürzerer Zeit zu 
schaffen...

von Peter D. (peda)


Lesenswert?

Mark K. schrieb:
> denn ich brauche diese eine Tristate-Leitung auch aus dem
> simplen Grund, daß ich insgesamt nur drei Schleifkontakte zur Drehbühne
> frei habe

Zu beachten ist auch, daß Schleifkontakte verschmutzen können, d.h. sie 
können zeitweilig unterbrechen. Unterbricht der GND, dann feuerts Dir 
die 16V+ über den IO-Pin zurück in dem PIC und der entläßt seinen 
magischen Rauch. Ich würde daher die IO-Pins über Optokoppler oder 
andere Schutzschaltungen schützen.
Bei mir verläßt kein Pin des MCs ungeschützt die Platine.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mark K. schrieb:
> Bin ich wirklich der erste, der den offen, hochohmigen Zustand eines als
> Input gesetzten PIC-I/O-Ports als zusätzlichen Ausgang (@ Jakob:
> Ausgang! Nicht Eingang!) nutzbar machen muß/möchte? Kann doch nicht sein...
Du bist der erste, der sich mit dieser Idee, die sich im echten Leben 
als Schuss ins Knie herausstellen wird, an die Öffentlichkeit trauen... 
;-)

Mark K. schrieb:
> ich weiß es zwar besser, aber schön:
> Der PIC hat 12 I/O.
Nimm einen Größeren, du bist ja immer noch am Konzeptionieren. Und wenn 
schon das Konzept derabartig auf die Kante genäht ist, dass du solche 
Handstände machen musst, dann platzt eh' gleich nach Projektbeginn der 
Knopf.

> Mit 8 I/O werden über eine Matrix von 5 x 5 24 Schaltausgänge bedient
> (und ja, mit zusätzlichen Multiplex_ICs könnte ich das mit 5 I/O
> erledigen
Mit Schieberegistern sogar mit nur 3 Pins. Beliebig nach oben 
skalierbar. Und beliebig viele Eingänge könntest du mit diesen 3 
Leitungen und einem zusätzlichen Pin gleich auch noch einlesen....

Mark K. schrieb:
> Aber letztlich stellt sich die Frage des Einsparens weiterer I/O nicht
> wirklich, denn ich brauche diese eine Tristate-Leitung auch aus dem
> simplen Grund, daß ich insgesamt nur drei Schleifkontakte zur Drehbühne
> frei habe, die gegenwärtig (analog) die Drehfunktion steuern.
Das schreit ja förmlich ganz laut nach einer seriellen Verbindung. Wenn 
du da Platz für diese Transistormegatrickschaltung hast, dann auch für 
einen SO8 oder SSOP16 µC. Und in das serielle Protokoll kannst du dann 
Fehlerbehandlungsgeschichten einbauen, die für einen halbwegs 
fehlerfreien Betrieb sorgen.

von Rainer V. (a_zip)


Lesenswert?

Mark K. schrieb:
> Ich bin nicht böse, aber ich verstehe nicht ....

Na ja, vor kurzem gab es hier (mindestens) 2 Fäden, wo der TO "abstruse" 
Lösungen für die Ansteuerung einer Drehscheibe und dann noch was 
anderes...immer mit hoher Not und völliger Beratungsresitenz angefragt 
hat. Deine Frage und deine Reaktion auf Vorschläge hat mich halt schwer 
daran erinnert. Bitte verzeih', wenn ich da falsch liege...und viel 
Spass beim Basteln!
Rainer

von Mark K. (mamikoe)


Lesenswert?

c-hater schrieb:
> Mark K. schrieb:
>> Könntest Du die Simulation mal dahingehend ändern
> Mach's selbst.

Danke, sehr freundlich. Du hast den Sinn eines solchen Forums noch nicht 
ganz verstanden, nicht? Da war doch was mit gegenseitiger Hilfe ....
>
> Irgendwann musst du es doch lernen, mit Spice umzugehen, wenn du
> Schaltungen selber entwerfen willst. Die einzige Alternative ist: selbst
> zu rechnen. Das kostet allerdings ein ganzes Studium.

Ich HABE selbst gerechnet und für dieses braucht es kein Studium.
Davon abgesehen bin ich den letzten fast 50 Jahren Hobbyelektronik 
durchaus gut ohne eine Simulationssoftware zurecht gekommen. Was nicht 
bedeutet, daß ich sie als unnütz ansehen würde. Das kann ich nicht 
beurteilen. Nur für mich ist es zuviel Aufwand gemessen an dem für mich 
erkennbaren Wert. Aber ich verdiene damit ja auch kein Geld ...

von Mark K. (mamikoe)


Lesenswert?

Rainer V. schrieb:
> Mark K. schrieb:
>> Ich bin nicht böse, aber ich verstehe nicht ....
>
> Na ja, vor kurzem gab es hier (mindestens) 2 Fäden, wo der TO "abstruse"
> Lösungen für die Ansteuerung einer Drehscheibe und dann noch was
> anderes...immer mit hoher Not und völliger Beratungsresitenz angefragt
> hat. Deine Frage und deine Reaktion auf Vorschläge hat mich halt schwer
> daran erinnert. Bitte verzeih', wenn ich da falsch liege...und viel

"Abstrus" und "breratungsresistet" liegt in Auge des Betrachters. Beides 
ist eine Frage der Ziele und vor allem "beratungsresistent" ist ein 
hartes Wort, wenn z.B. ich eine serielle Kommunikation mit einem 
Tochter-PIC ablehne, weil dies zu programmieren meinen 
PIC-Anfängerhorizont weit übersteigt und ich mich daher auf das 
beschränke, was ich kann und einigermaßen verstehe. In anderem 
Zusammenhang nennt man das "weise Selbstbeschränkung" und nicht nur in 
diesem Forum sondenr auch darüber hinaus liest man immer wieder bei 
Hilfeersuchen zu Projekten (egal worum es geht), die das Können des 
Fragenden ersichtlich übersteigen, daß er doch lieber erst mal kleine 
Brötchen backen soll.

von Rainer V. (a_zip)


Lesenswert?

hi, deine Selbstbeschränkung in allen Ehren, aber du hast ja schon einen 
gewissen "Horizont"...also spring mal etwas über deinen Schatten und 
überlege z.B. ob die hartnäckige Festlegung auf genau diesen Pic 
wirklich sein muß! Wenn mir ein Portpin fehlt, und ich das in SW nicht 
glattgebügelt bekomme, dann muß halt ein Controller mit mehr Ports her. 
Von so einem Hardwaregebastel habe ich mich schon seit meinen 
"Kindertagen" verabschiedet! Hardware, klar, da wo es nötig ist!!
Gruß Rainer

von Mark K. (mamikoe)


Lesenswert?

Peter D. schrieb:
> Zu beachten ist auch, daß Schleifkontakte verschmutzen können, d.h. sie
> können zeitweilig unterbrechen. Unterbricht der GND, dann feuerts Dir
> die 16V+ über den IO-Pin zurück in dem PIC und der entläßt seinen
> magischen Rauch.

Mhm. Mit der Beschreibung stehe ich etwas auf dem Schlauch. Wie sollen 
da 16V an den PIC gelangen?
Übrigens gibt es keine Masseverbindung (keine Kontakte frei). Unter der 
Bühne wird vielmehr aus der Digitalspannung in gleicher Weise wie auf 
der Dekoder-Platine Masse mit einem Gleichrichter bzw. zwei Dioden 
gewonnen.
De Alternative wäre wie bei manchen Weichendekodern mit "simpler" 
Spannungsversorgung deren Masse an die Digitalspannungsmasse zu legen.

> Ich würde daher die IO-Pins über Optokoppler oder
> andere Schutzschaltungen schützen.

Daran hatte ich auch schon gedacht, aber wegen der Gefahr von 
Kurzschlüssen. Ich wollte bei direkt herausgeführten I/O R von 1k in die 
Leitung hängen. Das paßt natürlich nicht zu der Variante des eher 
niederohmigen Spannungsteilers beim tristate-Ausgang, aber bislang bin 
ich noch von einer hochohmigeren Ausführung ausgegangen.

von Rainer V. (a_zip)


Lesenswert?

Mark K. schrieb:
> Mhm. Mit der Beschreibung stehe ich etwas auf dem Schlauch. Wie sollen
> da 16V an den PIC gelangen?
> Übrigens gibt es keine Masseverbindung (keine Kontakte frei). Unter der
> Bühne wird vielmehr aus der Digitalspannung in gleicher Weise wie auf
> der Dekoder-Platine Masse mit einem Gleichrichter bzw. zwei Dioden
> gewonnen.
> De Alternative wäre wie bei manchen Weichendekodern mit "simpler"
> Spannungsversorgung deren Masse an die Digitalspannungsmasse zu legen.

Hi...und genau diese Antwort passt leider in meinen Vorbehalt...
Aber mach mal...
Gruß Rainer

von c-hater (Gast)


Lesenswert?

Mark K. schrieb:

> Ich HABE selbst gerechnet und für dieses braucht es kein Studium.

Na dann sollte es ja kein Problem sein, auch deine neue Idee zu 
rechnen...

Also: Mach' es doch einfach.

von Rainer V. (a_zip)


Lesenswert?

Mark K. schrieb:
> aber wegen der Gefahr von
> Kurzschlüssen

...passt auch...

von Mark K. (mamikoe)


Lesenswert?

Rainer V. schrieb:
> hi, deine Selbstbeschränkung in allen Ehren, aber du hast ja schon einen
> gewissen "Horizont"...

Aber nicht was PIC-Programmieren angeht.

> also spring mal etwas über deinen Schatten und

Wenn Du die PIC-Programmierung übernimmst ....

> überlege z.B. ob die hartnäckige Festlegung auf genau diesen Pic
> wirklich sein muß! Wenn mir ein Portpin fehlt, und ich das in SW nicht

Natürlich ist es kein Dogma. Würde es hardwaremäßig unter keinen 
Umständen gehen ... aber selbst wenn es mit dem tristate überhaupt nicht 
funktionieren sollte, dann würde ich erst mit Charlieplexing für mehr 
I/O sorgen.

> glattgebügelt bekomme, dann muß halt ein Controller mit mehr Ports her.
> Von so einem Hardwaregebastel habe ich mich schon seit meinen
> "Kindertagen" verabschiedet! Hardware, klar, da wo es nötig ist!!

Siehste, und ich bin eben mehr der Hardwarefruckler. Ich habe früher 
zwar viel und auch recht gut in 8088-Assembler und anderen 
Programmiersprachen programmiert, aber die uC-Programmierung ist schon 
etwas anderes, geht nicht so an mich. Was ich mit Hardware erschlagen 
kann mache ich damit, PIC/Software nur dort, wo es nicht anders geht 
:-).

Aber wenn ich unter der Bühne einen zweiten PIC verwenden würde, dann 
nicht mit serieller Anbindung an den vom Dekoder sondern parallel dazu, 
also die Zuständigkeiten aufteilen. Dann würde der unter der Bühne alles 
erledigen, was die Bühne selbst betrifft, und der "draußen" praktisch 
nur das An- und Abschalten der Abstellgleise (was auch zugleich der 
Adressierung des anzufahrenden Gleises dient). Ich werde mal darüber 
nachdenken, aber primär versuchen, mit einem PIC und Hardware 
hinzukommen.

von Mark K. (mamikoe)


Lesenswert?

c-hater schrieb:
> Mark K. schrieb:
>> Ich HABE selbst gerechnet und für dieses braucht es kein Studium.
> Na dann sollte es ja kein Problem sein, auch deine neue Idee zu
> rechnen...
> Also: Mach' es doch einfach.

Hast Du nicht gelesen? Ich HABE es gerechnet. Fragt sich nur ob das auch 
wirklich so geht.

von c-hater (Gast)


Lesenswert?

Mark K. schrieb:

> Hast Du nicht gelesen? Ich HABE es gerechnet. Fragt sich nur ob das auch
> wirklich so geht.

Wenn du richtig gerechnet hast: ja. Ansonsten nicht. Wissen kann das 
niemand. Du hast ja weder die Schaltung deiner neuen Idee veröffentlicht 
noch deine Berechnung dazu.

Ein Schelm, wer Arges dabei denkt...

von Rainer V. (a_zip)


Lesenswert?

Mark K. schrieb:
> dann
> nicht mit serieller Anbindung an den vom Dekoder sondern parallel

...und wie bitte sollte das gehen??? Wenn du im 8080 oder so mal fit 
warst, dann  hast du doch damals schon Power ohne Ende gehabt! Klar 
unter einem Betriebssystem...aber 10 Controller parallel verwursten kann 
selbst ein "Master" nicht ernst meinen...also ich empfehle dir, noch mal 
auf "Los" zu gehen!
Gruß Rainer

von Mark K. (mamikoe)


Lesenswert?

Lothar M. schrieb:
> Du bist der erste, der sich mit dieser Idee, die sich im echten Leben
> als Schuss ins Knie herausstellen wird, an die Öffentlichkeit trauen...
> ;-)
>
Abwarten.

> Mit Schieberegistern sogar mit nur 3 Pins. Beliebig nach oben
> skalierbar. Und beliebig viele Eingänge könntest du mit diesen 3
> Leitungen und einem zusätzlichen Pin gleich auch noch einlesen....
> ....
> Das schreit ja förmlich ganz laut nach einer seriellen Verbindung. Wenn
> du da Platz für diese Transistormegatrickschaltung hast, dann auch für
> einen SO8 oder SSOP16 µC. Und in das serielle Protokoll kannst du dann
> Fehlerbehandlungsgeschichten einbauen, die für einen halbwegs
> fehlerfreien Betrieb sorgen.

Auch wenn ich Fragestelle und Du Moderator und anscheinend Profi bist: 
Irgendwie scheint es mit dem Lesen und Verstehe schwieriger zu sein als 
es meiner Erfahrung entspricht. Was ist so schwer daran zu verstehen, 
daß ich davon (der serielle Kram) keine Ahnung habe und mit der 
PIC-Programmierung am Anfang stehe und schon froh bin, wenn ich die 
Programmierung auch ohne diese höheren Weihen schaffe? Wieso eigentlich 
könnt ihr euch nicht in die Situation eines insofern Anfängers 
versetzen, euch vorstellen, da nicht jeder eure Kenntnisse und Können 
hat? Könnte ich dies alles würde ich hier keine Fragen stellen!

von Mark K. (mamikoe)


Lesenswert?

Rainer V. schrieb:
> Mark K. schrieb:
>> dann
>> nicht mit serieller Anbindung an den vom Dekoder sondern parallel
>
> ...und wie bitte sollte das gehen??? .....aber 10 Controller parallel verwursten 
kann
> selbst ein "Master" nicht ernst meinen...

Ich sehe da kein Problem. Die PICs empfangen und verarbeiten in gleicher 
Weise die Befehle, die sie aus der Digitalspannung extrahieren. Der 
"draußen" schaltet das Ziel-Abstellgleis an bzw. aus, wenn er den 
entsprechenden Befehl erhält, und enthält sich im übrigen allem anderen. 
Der unter der Bühne tut bei diesen Kommandos nichts, wird dann aber aber 
aktiv, wenn die Bühne zu drehen ist oder was auch immer er tun soll, die 
entsprechenden Befehle kommen. Beides sind zwei paar Schuh, unabhängig 
von einander, auch wenn sie einem gemeinsamen Zweck/Ziel dienen.
Natürlich könnte ich für eine Art Snychronisierung sorgen, indem ich 
einen der freien Schleiferkontakte für ein "o.k." Signal des PICs 
"draußen", daß er das Ziel-Gleis angeschaltet hat, nutze, und der PIC 
unter der Bühne erst dann mit seinem Geschäft des Drehens beginnt. Da 
aber die PICs fest verdrahtet an der Digitalspannung liegen und nicht 
über den elektrisch eher unsichere Schienen-Mitteilter-Verbindung ist 
das Risiko, daß einer der PICs etwas nicht mitbekommt, eigentlich gleich 
Null, dieser Aufwand also nicht erforderlich.
Übrigens: Ich steuere hier kein AKW, das ist eine simple manuelle 
Drehscheibensteuerung.

Aber das wird jetzt völlig OT, da können wir gerne einen eigenen Fred 
aufmachen. Können wir zum Thema zurückkommen?

: Bearbeitet durch User
Beitrag #6022042 wurde von einem Moderator gelöscht.
von Rainer V. (a_zip)


Lesenswert?

Mark K. schrieb:
> die sie aus der Digitalspannung extrahieren. Der
> "draußen" schaltet das Ziel-Abstellgleis an bzw. aus, wenn er den
> entsprechenden Befehl erhält, und enthält sich im übrigen allem anderen.
> Der unter der Bühne tut bei diesen Kommandos nichts, wird dann aber aber
> aktiv, wenn die Bühne zu drehen ist oder was auch immer er tun soll, die
> entsprechenden Befehle kommen. Beides sind zwei paar Schuh, unabhängig
> von einander, auch wenn sie einem gemeinsamen Zweck/Ziel dienen.

Also sorry, mit oder ohne Proz., das wird sein Lebtach nix...
Wenn du schon aus der sicher überschaubaren Welt in die Microprozessor 
getriebene umsteigst, dann mach einfach noch mal die Augen zu und denk 
nach...
Gruß Rainer

von Mark K. (mamikoe)


Lesenswert?

Leider kann ich Deinen Worten keine spezifischen Einwände entnehmen. Mit 
"das wird sein Lebtach nix" kann ich leider nichts anfangen und daher 
auch nicht erkennen, aus welchem Grund es nicht funktionieren soll, daß 
der PIC nur die für ihn bestimmten Funktionen ausführt.
Aber egal, darum geht es hier auch nicht und so wie es aussieht werde 
ich auf diese Lösung nicht ausweichen müssen.

von Mark K. (mamikoe)


Lesenswert?

Lothar M. schrieb:
> Mark K. schrieb:
>> Bin ich wirklich der erste, der den offen, hochohmigen Zustand eines als
>> Input gesetzten PIC-I/O-Ports als zusätzlichen Ausgang (@ Jakob:
>> Ausgang! Nicht Eingang!) nutzbar machen muß/möchte? Kann doch nicht sein...
> Du bist der erste, der sich mit dieser Idee, die sich im echten Leben
> als Schuss ins Knie herausstellen wird, an die Öffentlichkeit trauen...
> ;-)

Sodele, es wird denen einen oder anderen überraschen, vielleicht auch 
ärgern, aber ich habe meinen Entwurf von oben (25.10.2019 18:33) mal im 
real life, dem "echten Leben" ausprobiert, und zwar einmal mit FETs und 
einmal mit Darlingtons. Da die Fächer der passenden bedrahteten Typen 
leider leer sind mußte ich mit SMD arbeiten - BSS123 und BCV27 - aber 
das ist ja nur für meine Fummelei auf dem Steckbrett erschwerend. Als 
Last habe ich erst LEDs mit 8mA verwendet und danach zusätzlich die in 
Aussicht genommenen 12V-Relais über 1k/22u an 16V mit 40mA 
Einschaltstrom (der sich dann dank der RC-Kombi auf den Haltestromvon 
ca. 10mA reduziert). Als Schutz für den PCI-I/O habe ich einen R 1k in 
Serie vor dem Eingangsanschluß eingefügt.
Das Ergebnis ist: Es funktioniert.

FET: Verwendet wie gesagt BSS123 (der BSS138 wird sicher auch 
funktionieren). Der Spannungsteiler besteht aus 22k, 10k und 10k, der R 
vor dem oberen FET hat 220k (weniger geht auch). Die Diode ist eine 
normale DUS.
Abgesehen davon, daß die verwendeten BSS123 schon seit 15 Jahren in der 
Koste liegen und anscheinend "schlecht" geworden sind (;-) - sie sterben 
schon beim scharfen Anblicken) funktioniert das ganze wie es soll.
Die Diode läßt sich auch durch einen mit G/S parallel zum unteren BSS123 
geschalteten dritten BSS123 ersetzen.

Darlington: Verwendet wie gesagt BCV27 als "Ersatz" für den bedrahteten 
BC517. Die Diode mußte ich durch eine BAT42 (oder in SMD BAT85) 
ersetzen. Der Spannungsteiler ist 22k/22k/10k, der R vor den oberen 
BCV27 hat 22k (auch 220k geht noch).

Der eine oder andere mag es als "Murks" bezeichnen, aber ich bin sehr 
sicher, daß sich künftig genügend Bastler über diese Lösung freuen 
werden, sofern sie nicht selbst darauf gekommen sind.

Ich danke allen, die sich konstruktiv beteiligt haben, erkläre damit die 
Frage für erledigt und gelöst und verspreche, daß ich mich gleich mit 
der letzten aktuell verbliebenen Problemfrage (im allgemeinen Teil) an 
die Gemeinschaft wenden werde.

von LostInMusic (Gast)


Lesenswert?

>und improvisiert das Ganze mit zwei LEDs nachgebaut.
>LED-Strom 8mA, R=330R, Spannung 5V. Einzeln prima.
>Dann so wie die Skizze erweitert. Offen alle duster und bei Masse oder
>Plus an die LEDs leuchtete zwar jeweils eine, aber nur eher schwach.

Das ist klar: Die Vorwärtsspannung etwa einer grünen LED liegt ja über 2 
V und damit sehr nahe an 2.5 V = der Hälfte Deiner Betriebsspannung. 
Diese 2.5 V kann der Spannungsteiler ja überhaupt maximal abliefern 
(nämlich im unbelasteten Fall, der bei Dir nicht vorliegt).

In Optokopplern stecken aber gemeinhin IR-LEDs, die eine deutlich 
geringere Vorwärtsspannung haben, z. B. nur 1.05 V bei I = 3 mA. Dadurch 
tritt das von Dir beschriebene Problem nicht auf und die Schaltung 
funktioniert mit z. B. zweimal 330 Ohm für den Spannungsteiler tadellos. 
Die dann fließenden 7.6 mA Dauerstrom kann man verschmerzen.

Optokoppler-Datenblatt:
https://www.vishay.com/docs/83725/4n25.pdf
Siehe Diagramm "Forward Voltage vs. Forward Current"

von Mark K. (mamikoe)


Lesenswert?

Habe leider weder OK noch die in Aussicht genommenen SSR, für die dies 
wohl auch gilt, da. Aber wenn sie da sind werde ich es mal ausprobieren.

von Peter D. (peda)


Lesenswert?

Mark K. schrieb:
> Oh, oh, aus euch sprechen die Profis. Für euch mag das eine Fingerübung
> sein ... Nicht für ungut, aber das, was ihr da skizziert, übersteigt
> mein Können bei weitem.

Das ist hauptsächlich ein Problem der falschen Herangehensweise. Gerade 
Anfänger versuchen immer, ein Programm in einem Stück zu schreiben, 
quasi aus einem riesen Mamorblock heraus zu meißeln. Und das geht eben 
sehr schnell schief.
Programmieren geht erheblich leichter, wenn man einzelne Aufgaben für 
sich löst und danach das Programm daraus zusammen setzt. Z.B. kann man 
sehr schön das UART-Senden, UART-Empfangen, SPI-Register beschreiben für 
sich lösen und testen.
Man kann so die Funktionalität schrittweise erweitern und muß nicht, wie 
bei HW-Lösungen jedesmal eine neue Platine routen und bestücken.
Z.B. ist dann das Stromsparen ein Klacks. Die Schieberegister haben 
einen /OE-Pin, mit dem man die Ausgänge disablen kann. Diesen kann man 
mit einem PWM-Ausgang des MC verbinden. Soll ein Relais ziehen, setzt 
man die PWM auf 100% und nach einiger Zeit (100ms) setzt man sie auf 20% 
runter.

Für 24 Relais kaskadiert man 3 Schieberegister an dem MC, fertig ist die 
ganze Hardware. Die genannten NPIC6C595D können je 8 Relais 24V/100mA 
direkt treiben.

von Mark K. (mamikoe)


Lesenswert?

was Du skizzierst ist sicher richtig, aber das trifft hier nicht zu. Ich 
baue auf einem bereits bestehenden Programm, in dem die gesamte 
Befehldekodierung bereits vorhanden ist, auf. Der noch offene 
Programmierteil ist sowohl relativ als auch absolut eher übersichtlich - 
andernfalls würde ich es nicht machen.
Eigentlich wollte ich nur auf die Schnelle eine einfache 
Drehscheibensteuerung hinklatschen, kein allzugroßer, mich monatelang 
blockierender Aufwand. Dazu hatte ich hatte zunächst - wie geschrieben 
bin ich eher Hardwarfruckler als uC-/PIC-Eleve - ein Konzept ohne PIC 
mit einem MC145027 als Dekodierer und (wirklich nur) etwas diskreter 
Logik entwickelt, das aber letztlich von der Bedienung her zu zuviel 
Umständlichkeiten gezwungen und einiges, was ich dann zusätzlich wollte, 
nicht ermöglicht hätte. Als ich mich dieser Einsicht nicht weiter 
verweigern konnte habe ich mich mit dem Gedanken angefreundet, das 
vorhandene Lokdekoderprogramm umzustricken und um den PIC herum zu 
planen, was von der Bedienung her erfreuliche Möglichkeiten und auch 
weitere Funktionen eröffnete.
Was aber alles nichts daran ändert: Es soll kein großes Projekt werden, 
ich will mich damit nur so weit aufhalten wie nötig (das ist nur Mittel 
zum Zweck, kein Selbstzweck, die Zeiten, daß ich um den Bastelns und 
Lötens und Programmierens Willen so etwas mache sind schon zig Jahre 
vorüber) und vor allem in die Programmiererei will ich nicht mehr Zeit 
investieren als unbedingt nötig.
Mag durchaus sein, daß die Schieberegister und Tochter-PIC-Lösung 
technisch besser, fortschrittlicher usw. ist - das ist für mich aber 
kein Kriterium, da ich dafür mit dem, was ich kann, nicht hinkomme und 
ich habe nicht die geringste Lust, für eine Lösung, die mir im Ergebnis 
keinen Vorteil bringt, mich in die entsprechende PIC-Programmierung 
einzuarbeiten. Es interessiert mich einfach nicht, ich verdiene damit 
nicht meine Brötchen, MoBa und Elektronik sind nur wenige meiner vielen 
Interessen und vor allem Elektronik ist nur Mittel zum Zweck. Ist das 
denn wirklich so schwer zu verstehen?
Ihr hättet ja mit dem Insistieren auf die Schieberegisterei recht, wenn 
ich mit meinen Vorstellungen nicht weiterkommen würde, das nur auf diese 
Art zu realisieren sei - aber dann würde ich das ja auch einsehen und 
mich zähneknirschend damit befassen. Aber so ist es ja nicht (zumindest 
sieht es derzeit so aus).
Und noch einmal: Vor allem die PIC-Pogrammiererei macht mir keinen Spaß, 
auch wenn ich einsehe, daß dies für manche Probleme die beste und 
sinnvollste Lösung ist. Daher habe ich mich nach 10, 15 Jahren 
Verweigerung auch endlich damit befaßt.

von Peter D. (peda)


Lesenswert?

Mark K. schrieb:
> Und noch einmal: Vor allem die PIC-Pogrammiererei macht mir keinen Spaß,

Ich will es Dir auch nicht aufzwingen, war ja nur ein Vorschlag.
Ich kann nur aus meiner Erfahrung sagen, der Appetit kommt beim Essen. 
Man muß nur einmal damit anfangen, dann kann man sich nichts anderes 
mehr vorstellen.
Natürlich darf man den PIC nicht in Assembler programmieren, das ist 
Quälerei pur. Ich benutze AVRs und programmiere sie in C (AVR-GCC).

von Teo D. (teoderix)


Lesenswert?

Peter D. schrieb:
> Natürlich darf man den PIC nicht in Assembler programmieren, das ist
> Quälerei pur.

https://10fastfingers.com/typing-test/german ;D

von Mark K. (mamikoe)


Lesenswert?

Peter D. schrieb:
> Ich will es Dir auch nicht aufzwingen, war ja nur ein Vorschlag.

Ist klar. Ich weiß, daß ihr es nur gut meint. ;-)

> Ich kann nur aus meiner Erfahrung sagen, der Appetit kommt beim Essen.

Ich habe mich vielleicht etwas unklar ausgedrückt. Ich habe schon einige 
Monate in PIC-Assembler programmiert.
Im Gegensatz zu früher habe ich heute aber nicht die Zeit, mich so weit 
reinzuknien. Vor 20, 30 Jahren habe ich 8088-Assembler gelernt und hatte 
warum auch immer (obwohl ich damals beruflich eigentlich eingespannter 
war als heute) so viel Muße dafür, daß ich begeistert jedes "Problem" 
aufgegriffen habe, um es in Assembler zu lösen.

> Man muß nur einmal damit anfangen, dann kann man sich nichts anderes
> mehr vorstellen.

So ging es mir früher mit 8088-Assembler. Heute ist das anders. Ich habe 
zu viele andere Dinge zu tun. Elektronik und hierbei PICs sind nur ein 
kleiner Bereich meiner Interessen und Dinge, die ich tun will oder muß. 
Ist halt so ....

> Natürlich darf man den PIC nicht in Assembler programmieren, das ist
> Quälerei pur. Ich benutze AVRs und programmiere sie in C (AVR-GCC).

:-)) Da ich nie C gelernt habe (und ich übe auch keinen auch nur 
ansatzweise technischen Beruf aus) und die Dinge, weswegen ich einen PIC 
einsetze bzw. einsetzen muß/würde, zeitkritisch sind, ein Ersatz für 
diskrete Logik, kommt mir gar nicht in den Sinn, anders als in Assembler 
zu programmieren. Vor mehr als 30 Jahren habe ich ein paar Z80-Programme 
mangels Assembler sogar direkt in Hex geschrieben. Und nein, bitte, kein 
Loblied auf C oder so, daß ich das unbedingt lernen müsse. Nein, das muß 
ich nicht, wenn ich mit PICs hantiere dann pfriemele ich lieber auf 
Bit-Ebene, da sehe und weiß ich wenigstens, was wirklich Sache ist.

von Peter D. (peda)


Lesenswert?

Mark K. schrieb:
> wenn ich mit PICs hantiere dann pfriemele ich lieber auf
> Bit-Ebene, da sehe und weiß ich wenigstens, was wirklich Sache ist.

Assembler auf dem PIC ist mit Abstand das Umständlichste, was ich bisher 
gesehen hab. Wenn es unbedingt Assembler sein muß, dann geht das auf dem 
8051 deutlich komfortabler.

von MaWin (Gast)


Lesenswert?

Peter D. schrieb:
> Assembler auf dem PIC ist mit Abstand das Umständlichste, was ich bisher
> gesehen hab.

Für den C Compiler ist der PIC aber auch das schdusslichste für das der 
je code generieren musste.

von Edson (Gast)


Lesenswert?

Peter D. schrieb:
> Mark K. schrieb:
> wenn ich mit PICs hantiere dann pfriemele ich lieber auf
> Bit-Ebene, da sehe und weiß ich wenigstens, was wirklich Sache ist.
>
> Assembler auf dem PIC ist mit Abstand das Umständlichste, was ich bisher
> gesehen hab. Wenn es unbedingt Assembler sein muß, dann geht das auf dem
> 8051 deutlich komfortabler.

Peda, du schreibst das seit Jahren. Meine Erfahrung ist diametral dazu - 
ich habe auf allen PIC-größen in Assembler gewerkt und ich mag ihn.

von Edson (Gast)


Lesenswert?

@MaWin

Dem kann ich schon eher zustimmen?

Sorry für OT

von Teo D. (teoderix)


Lesenswert?

Edson schrieb:
> Peda, du schreibst das seit Jahren. Meine Erfahrung ist diametral dazu -
> ich habe auf allen PIC-größen in Assembler gewerkt und ich mag ihn.

Ja, AVR ist der Teufel, und PIC der Beelzebub. :D

Egal mir legt nach 3W Assembler so o. so, die Hirnrinde in Rechtewinkel. 
;)

von Peter D. (peda)


Lesenswert?

Teo D. schrieb:
> Ja, AVR ist der Teufel

Der WINAVR war der ultimative Startschuß, wo ich richtig mit MC 
angefangen habe.
Vorher in Assembler waren das alles nur sehr kleine Projekte und recht 
langwierig. Das richtige strukturierte Programmieren lernt man doch erst 
mit C.
Und der verdongelte Keil C51 war zwar in der Firma ganz brauchbar, aber 
nichts für private Basteleien.

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.