www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pins mehrfach belegen


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

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

Autor: Gast (Gast)
Datum:

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

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Gibts da nich kleinere?

2 Dioden ?

Autor: Peter (Gast)
Datum:

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

Autor: Michael W. (retikulum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Route_66 schrieb:
>> Gibts da nich kleinere?
>
> 2 Dioden ?

Und einen Widerstand.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Randy N. (huskynet)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ben (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah wobei.. das was ich grad gezeichnet hab is ned wirklich ratsam xD

Autor: Randy N. (huskynet)
Datum:

Bewertung
0 lesenswert
nicht 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ß.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Betriebsspannung werd ich warscheinlich 3V nehmen.. Also eine 
Lithium-Zelle..

Autor: Randy N. (huskynet)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, 2 Transistoren würden vom Platz her gehen..

Autor: Alexander Schmidt (esko) Benutzerseite
Datum:

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

Autor: Anton (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: alexander v (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ben (Gast)
Datum:

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

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Transistorlösung?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.