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
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.
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 ;)
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?
> 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?
> > 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
> 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.
@ (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...
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
> 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ß.
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
> 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?
>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.
> 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?
>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 :-)
> 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?
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.
>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.