Forum: Mikrocontroller und Digitale Elektronik Pins mehrfach belegen


von Gast (Gast)


Lesenswert?

Hallo,

ich hab ein Problem.. Ich muss an einem ATtiny13 Pins mehrfach belegen.
Die Schaltung hab ich hier:
1
                             R1 10k                                 
2
                      +----[____]-----+                             
3
                      |               |           +-----+           
4
        +-------++    |               |           |     |           
5
   LDR [ ]       |    |  +-------+    |           |  +--+--+        
6
       [_]       |    +--|1     8|----+           |  |     |        
7
        +----+   +-------|2     7|----|---[____]--+  \/   /\ Duo-LED
8
R2 10k [_]   +-----------|3     6|----|-+            |     |        
9
        +-------------+--|4     5|    | +---------+  +--+--+        
10
                      |  +-------+    |           |     |           
11
                      |               |           +-----+           
12
                      |               |                             
13
                      |        |      |                             
14
                      +------| |------+                             
15
                           -   | +

Jetzt möchte ich noch an Pin 7 Rx und an Pin 8 Tx unterbringen.
Ich denk mal, dass die LED da stören wird. Ich könnte den LDR-Teil an 
den Pins 2, 3, 4 auch auf die Pins 4, 6, 7 legen und die LED an 2 und 3.
Der LDR zwischen Rx und Tx würde doch sicher stören, oder?

Ist es möglich, dass ich die Bauteile so tauschen kann, dass ich Rx und 
Tx an den Pins 7 und 8 nutzen kann?

Vielen dank und viele Grüße

von Gast (Gast)


Lesenswert?

PS: Ich meinte natürlich Rx an Pin 7 und Tx an Pin 6 statt 8. Tut mir 
leid..

von Ben (Gast)


Lesenswert?

Tx Rx? ich sehe keinen uart beim attiny13.
ansonsten schauts so aus als ob du pin 5 noch frei hast.

scheint so als ob du den uart in software bauen willst, dann kannst du 
pin 5 als Rx nehmen. Rx braucht einen pin einzeln, weil du den zustand 
an diesem pin nicht steuern kannst. das pfuscht dir also ständig 
zwischen wenn du mit dem pin was steuern willst.

pin 6/7 kannst du so wie einen einzelnen pin benutzen, die led leuchtet 
nur wenn einer der beiden pins high ist, der andere low. wenn beide low 
oder beide high sind leuchtet die LED nicht. ich würds mit einem 
UND-gatter an pin 6 und 7 probieren, dann kann das zwischen den beiden 
aus-zuständen unterscheiden und wenn du schnell zwischen beide pins high 
und beide pins low schaltest bekommst du am ausgang des gatters ein 
signal was du für Tx verwenden kannst. du mußt nur darauf achten, daß 
beim LED-betrieb niemals beide high sind, sprich du mußt die LED immer 
mit einem pin sicher low steuern. und während des LED-betriebes ist 
natürlich kein Tx möglich und anders herum genauso kein LED-leuchten bei 
Tx.

von Gast (Gast)


Lesenswert?

Danke für die Antwort.

An ein UND-Gatter hab ich noch garnicht gedacht..
Die LED wird softwareseitig eh nur low/low, high/low und low/high 
geschalten, also kann ich high/high super für tx verwenden..

Wichtig ist nur, dass ich während Rx die LED steuern kann, aber dem 
steht ja in dem Fall nichts im Wege ;)

von Gast (Gast)


Lesenswert?

Ok, ich hab grad nach UND-Gattern bei Reichelt geschaut und dabei den 
MOS 4081 entdeckt.. Würde ja prima passen..

Jedoch sind haben dort alle Gatter-Bausteine 14 Pins.. Da ist der 
Platzvorteil durch den Attiny13 natürlich wieder dahin.. Gibts da nich 
kleinere?

von Route_66 (Gast)


Lesenswert?

> Gibts da nich kleinere?

2 Dioden ?

von Peter (Gast)


Lesenswert?

man könnte die DUO LED an ein Port anschliesen in dem man dem Port als 
TriState nutzt.

von Michael W. (retikulum)


Lesenswert?

Route_66 schrieb:
>> Gibts da nich kleinere?
>
> 2 Dioden ?

Und einen Widerstand.

von Gast (Gast)


Lesenswert?

> 2 Dioden ?
> Und einen Widerstand.

aber dann hab ich ja keine vollen 5V mehr..

> in dem man dem Port als TriState nutzt.
ok ich hab grad nachgelesen, was es mit tri-state aufsich hat..
das wär natürlich auch genial, aber wie setz ich sowas softwareseitig 
um?

von Peter (Gast)


Lesenswert?

> > in dem man dem Port als TriState nutzt.
> ok ich hab grad nachgelesen, was es mit tri-state aufsich hat..
> das wär natürlich auch genial, aber wie setz ich sowas softwareseitig
> um?
als output kannst du ja 0 oder 1 setzen, wenn du ihn als Input (ohne 
Pullup) machst hast du Undefiniert

von Randy N. (huskynet)


Lesenswert?

> wie setz ich sowas softwareseitig um?

Na mit dem Datenrichtungsregister schaltest du die LED ein und aus und 
mit dem Ausgangsregister bestimmst du die Farbe. Also angenommen die LED 
hängt an A0:

DDRA |= 0x01; // LED einschalten (A0 = Ausgang)
DDRA &= ~0x01; // LED ausschalten (A0 = Eingang)

PORTA |= 0x01; // LED rot
PORTA &= ~0x01; // LED grün

Muss dann natürlich eine LED mit 3 Beinchen sein.

Update: Ich glaube zum Ausschalten muss man zusätzlich noch das Bit in 
PORTA auf 0 setzen (also in dem Fall die LED auf grün schalten), da 
ansonsten der Pullup aktiv ist und die LED dann noch schwach leuchten 
könnte.

von Route_66 (Gast)


Lesenswert?

@ (retikulum)
> Und einen Widerstand.

Nicht unbedingt - kommt darauf an, was folgt.

@ Gast (Gast)
> aber dann hab ich ja keine vollen 5V mehr..

Irrtum, Du hast dann keine 0 V mehr...

von Ben (Gast)


Lesenswert?

tristate heißt aber nicht, daß man einen pin tri-mal verwenden kann...

von Gast (Gast)


Lesenswert?

dann bräucht ich ja so eine duo-led.. aber bei reichelt haben die 
entweder 2 pins oder 3 pins mit gemeinsamem minus-pol..

                    VCC
                     |
                     \/
                     |
Pin ----[____]-------+
                     |
                     \/
                     |
                    GND

von Gast (Gast)


Lesenswert?

ah wobei.. das was ich grad gezeichnet hab is ned wirklich ratsam xD

von Randy N. (huskynet)


Lesenswert?

> das was ich grad gezeichnet hab is ned wirklich ratsam xD

Heh, hast recht, so hatte ich mir das vorhin zwar auch vorgestellt, 
jedoch ohne das Ganze zu Ende zu denken...

Hier wurde das schonmal diskutiert und da wird auch ne Lösung 
vorgestellt, wie es doch geht (mit dem Nachteil, dass ständig ein Strom 
fließt): Beitrag "Re: Duo Led mit einem Pin"

Update: Ich glaub die Schaltung dort wird auch nix. Zwar würde sie 
prinzipiell funktionieren, aber bei 2V/20mA-LEDs müsstest du zwei 100 
Ohm-Widerstände verwenden, da wäre mir der Verlust zu groß.

von Peter (Gast)


Lesenswert?

es kommt auf die Betriebsspannung an, wenn sie klein genug ist das die 
beiden LEDs in Reihe nicht leuchten geht es. Sonnst könnte man mit einer 
Z-Diode ein wenig nachhelfen

von Gast (Gast)


Lesenswert?

Als Betriebsspannung werd ich warscheinlich 3V nehmen.. Also eine 
Lithium-Zelle..

von Randy N. (huskynet)


Lesenswert?

> bei 2V/20mA-LEDs müsstest du zwei 100 Ohm-Widerstände verwenden

...bevor sich einer beschwert, dass man durch eine 20mA-LED nicht 
zwangsweise 20mA fließen lassen muss ;) - mir würde dieser Ansatz 
prinzipiell nicht gefallen.

Dann schon lieber mit zwei Transistoren... Hättest du dafür Platz?

von Gast (Gast)


Lesenswert?

ja, 2 Transistoren würden vom Platz her gehen..

von Alexander S. (esko) Benutzerseite


Lesenswert?

Muss der LDR am Pin 2 hängen, oder kannst du den auch auf Vcc legen?

von Anton (Gast)


Lesenswert?

Zum Thema Gatter:
Schau mal bei TI, die haben auch Single-Gate-Bausteine,
EIN Gatter in einem SOT23-ähnlichen Gehäuse!

Schönes Wochenende!
ANton

von Gast (Gast)


Lesenswert?

>Da ist der Platzvorteil durch den Attiny13 natürlich wieder dahin.

Das ist er immer. Der nächstgrößere Controller ATtiny24/44/84 hat 6 Pins 
mehr als der ATtiny13. Es wird schwierig sein, eine pinsparende 
Peripherieschaltung zu ersinnen, die weniger Platz benötigt als diese 6 
zusätzlichen Pins. Der Platz wäre z. B. schon mit nur einem einzigen 
externen UND-Gatter ausgeschöpft, denn das hat ja auch schon mindestens 
6 Pins (VCC, GND, 2 Inputpins, 1 Outputpin plus ein unbenutzter Pin um 
auf gerade Pinzahl zu kommen) und dazu kommen noch die Leiterbahnen. Bei 
irgendwelchem Veranstaltungen mit mehreren Transistoren/Dioden wäre die 
Platzbilanz eher noch negativer. Die beste Lösung für dieses Problem 
besteht praktisch immer darin, schlicht den nächstgrößeren Controller zu 
nehmen - dafür sind sie ja da.

von Peter D. (peda)


Lesenswert?

Gast schrieb:
> Jetzt möchte ich noch an Pin 7 Rx und an Pin 8 Tx unterbringen.

Nimm Pin 1 und 5, die sind doch noch frei.


Peter

von Gast (Gast)


Lesenswert?

> Muss der LDR am Pin 2 hängen, oder kannst du den auch auf Vcc legen?
Pin 2 wird nur für die Messung HIGH geschalten, damit ned die ganze Zeit 
Strom über den LDR und den Widerstand verbraten wird..

> Nimm Pin 1 und 5, die sind doch noch frei.
Pin 1 ist doch der Reset-Pin?

von alexander v (Gast)


Lesenswert?

und?

von Gast (Gast)


Lesenswert?

>Pin 1 ist doch der Reset-Pin?

Man kann bei allen neueren AVRs über die Fuse RSTDISBL die 
Reset-Funktionalität des Reset-Pins deaktivieren und ihn dann als 
zusätzlichen I/O-Pin nutzen (mit gewissen Einschränkungen). Der 
Nachteil: Der µC ist dann nicht mehr per ISP, sondern nur noch per 
HV-Programming programmierbar (es sei denn, Du gönnst dem µC einen 
Bootloader. Das ist die elegante Lösung). Hardware-resetten kann man 
über den Pin dann natürlich auch nicht mehr.

Also VORSICHT, wenn Dein Programmer nur ISP kann, dass Du Dich mit der 
Fuse nicht aus Deinem Controller aussperrst.

Lies mal ein wenig im Datenblatt, da steht ne Menge interessanter Sachen 
drin :-)

von Gast (Gast)


Lesenswert?

> Der µC ist dann nicht mehr per ISP, sondern nur noch per
> HV-Programming programmierbar
>
> Also VORSICHT, wenn Dein Programmer nur ISP kann, dass Du Dich mit der
> Fuse nicht aus Deinem Controller aussperrst.

hm.. ok, dann fällt das weg..

Wie sähe denn die oben angesprochene Transistorlösung zur Ansteuerung 
der Duo-LED mit nur einem Pin aus?

von Ben (Gast)


Lesenswert?

wenn du platz für solche transis hast nimm doch einfach den 
nächstgrößeren controller.

von Ben (Gast)


Lesenswert?

vielleicht sogar einen, der rs-232 in hardware kann. erspart dir ne 
menge programmieraufwand und dürfte vor allem bei Rx wesentlich 
zuverlässiger funktionieren.

von Gast (Gast)


Lesenswert?

>und dürfte vor allem bei Rx wesentlich zuverlässiger funktionieren.

Sogar Tx wird dann zuverlässiger funktionieren :-), nämlich dann, wenn 
er den größeren Controller mit einem Quarz taktet und dadurch die engen 
Timingtoleranzen erfüllt, die RS232 erfordert.

von Gast (Gast)


Lesenswert?

Transistorlösung?

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.