Kann man Ausgänge am ATtiny2313 als TriState oder OpenDrain definieren?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 11 2024  03:44:58      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Kann man Ausgänge am ATtiny2313 als TriState oder OpenDrain definieren?

    







BID = 473126

cosmoxx

Gerade angekommen


Beiträge: 13
Wohnort: Oberhausen
 

  


Hallo zusammen!

Eine Frage an die Atmel-AVR Experten:

Beim tiny2313 möchte ich Port B und D als Ausgänge, aber mit open drain (open collector) benutzen. geht das?
Wenn ja, mit welchen Registern definiere ich das?!

Die Ausgänge sollen also bei Logisch 0 auf GND gezogen werden und bei logisch 1 offen sein und keinen Pegel haben.
Einen zusätzlichen Treiber zu benutzen fällt leider komplett raus. Ich hoffe der Tiny kann das

MfG
Cosmoxx

BID = 473127

Benedikt

Inventar

Beiträge: 6241

 

  

PORTx Register auf 0, dann
DDRx Register auf 1: Ausgang wird auf Low gezogen
DDRx Register auf 0: Ausgang ist tristate

[ Diese Nachricht wurde geändert von: Benedikt am 17 Nov 2007 16:45 ]

BID = 473131

cosmoxx

Gerade angekommen


Beiträge: 13
Wohnort: Oberhausen

Ja, dachte ich auch, aber funktioniert nicht. Kann es sein, dass die internen PullUp Widerstände den Tristate verhindern???

BID = 473133

Benedikt

Inventar

Beiträge: 6241

Wenn du es so machst wie ich es geschrieben habe: Nein.

BID = 473134

Ltof

Inventar



Beiträge: 9334
Wohnort: Hommingberg

Bei einem PIC würde die von Benedikt beschreibene Vorgehensweise nicht funktionieren. Die in PORTx geschriebene 0 würde ignoriert werden, falls am als Input konfigurierten Port von außen eine 1 anliegt. Beim Umschalten auf Ausgang behält er die 1. Es müsste also erst auf Ausgang geschaltet werden und danach der Wert 0 in das Register geschrieben werden.

Vielleicht ist das beim Atmel ähnlich?

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 473139

cosmoxx

Gerade angekommen


Beiträge: 13
Wohnort: Oberhausen

Also ich habe von +10V eine LED mit Vorwiderstand an jedem Portpin von Port B und D.
Wenn ich das so definiere wie Du beschrieben hast, fliessen im Low-Pegel 25mA (das ist OK) und im "Tristate" 7µA (das ist nicht OK) in den Pin rein. Könnte das vielleich mit den internen Schutzdioden zusammenhängen?
Am Pin liegt ja mehr Spannung an als An Vcc des Controllers...

BID = 473158

Benedikt

Inventar

Beiträge: 6241


Zitat :
Ltof hat am 17 Nov 2007 17:16 geschrieben :


Vielleicht ist das beim Atmel ähnlich?

Nein, zum Glück nicht. Die PORT Geschichte bei einem PIC ist ja nur ein einziger Bug (Port wird von extern auf Low gezogen, und wenn man dann den Port ausliest, liefert er logischerweise eine 0, obwohl von der Software her der Ausgang auf 1 ist).


Zitat :
cosmoxx hat am 17 Nov 2007 17:30 geschrieben :

Könnte das vielleich mit den internen Schutzdioden zusammenhängen?
Am Pin liegt ja mehr Spannung an als An Vcc des Controllers...

Ja.

BID = 473608

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

Die angegebenen 7µA entstehen durch die interne Beschaltung des Pin als Eingang.
Ein Ausgang ("PORT") kann beim Atmel nur High oder Low sein - nie Tristate (="open Drain / open Collector") - dies erreicht man nur durch den "Umschalttrick" mittels dem Data-Direction-Register (DDRx) - wobei dann aber tatsächlich nur die Ausgangstreiber im Chip abgeschaltet sind - die vorhandene Eingangsbeschaltung bleibt aber elektrisch angeschlossen...

BID = 473634

Ltof

Inventar



Beiträge: 9334
Wohnort: Hommingberg


Zitat :
Benedikt hat am 17 Nov 2007 18:08 geschrieben :

Die PORT Geschichte bei einem PIC ist ja nur ein einziger Bug (Port wird von extern auf Low gezogen, und wenn man dann den Port ausliest, liefert er logischerweise eine 0, obwohl von der Software her der Ausgang auf 1 ist).

Als Bug würde ich das nicht bezeichen. Für normale Anwendungen muss man das beim Programmieren einfach wissen und berücksichtigen. Diese Eigenschaft ließe sich daneben sogar dazu verwenden, einen überlasteten/kurzgeschlossenen Port softwaremäßig zu erkennen.

Wie ist denn das beim AVR gemacht? Hat der zwei verschiedene Port-Register für Eingabe und Ausgabe?

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 473663

Benedikt

Inventar

Beiträge: 6241


Zitat :
Ltof hat am 19 Nov 2007 09:56 geschrieben :


Wie ist denn das beim AVR gemacht? Hat der zwei verschiedene Port-Register für Eingabe und Ausgabe?

Ja, mit der Richtungsumschaltung eigentlich sogar 3. Ich finde das ganz hilfreich. Klar, es ist gewöhnungssache, aber ich halte das für eine böse Fehlerquelle.

BID = 473671

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Ja, mit der Richtungsumschaltung eigentlich sogar 3. Ich finde das ganz hilfreich. Klar, es ist gewöhnungssache, aber ich halte das für eine böse Fehlerquelle.
Falscher Relativsatz. Du meinst mit Fehlerquelle wohl den PIC.

Der Assemblerprogrammierer muss aber sowieso aufpassen, was er tut. Dafür bekommt er aber auch das, was er bestellt hat.
Die Basic- und C-Leute wundern sich nur über rätselhafte Resultate.

Die Read-Modify-Write-Problematik findet sich aber schon in den ältesten Single Chips von Intel wie 8048 & Co.
Hier gilt also wirklich "It's not a bug, it's a feature"


_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 473673

Benedikt

Inventar

Beiträge: 6241


Zitat :
perl hat am 19 Nov 2007 14:18 geschrieben :

Die Read-Modify-Write-Problematik findet sich aber schon in den ältesten Single Chips von Intel wie 8048 & Co.
Hier gilt also wirklich "It's not a bug, it's a feature"

Wobei das bei denen aber wieder anderst war, denn diese Controller hatten garkeine Richtungsumschaltung, denn alle Ports waren gleichzeitig Ein und Ausgang. Ein starker P Kanal Fet über einen Takt an, nachdem man einen Pin auf High schaltet, um die Anstiegszeit ordentlich hinzubekommen, danach nur noch einen Pullup. Das fand ich bei den 8051er echt genial.

BID = 473709

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

[OT]

Zitat :

Die Basic- und C-Leute wundern sich nur über rätselhafte Resultate.


Moin perl,
Zumindest was Basic betrifft stimme ich dir voll und ganz zu, das ist meiner Meinung nach das reinste Gekrüppel...
Was C betrifft jedoch nicht, denn der Maschienenkode ist schon sehr krass; das bekommt man kaum besser hin. Die Optimierung des avr-gcc' macht das schon sehr gut.

Zumal man über den Präprozessor und das Einbinden externer Programme, z.b. nen Treiber für ein LCD, sein Programm sehr gut und überschaulich gestalten kann. Weiterhin lassen sich Mnemonics per Inline-Assembler einbauen oder ganze Maschienenkode-Teile einbinden.

Also, so genialen Asm-Kode bekommt man kaum selbst hin - Es sei denn, man will das Programm nie portieren o.ä. Da bekomme ich dann auch wesentlich besseren Asm-Kode als avr-gcc es könnte.
[/OT]

_________________


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 182421339   Heute : 378    Gestern : 5459    Online : 493        29.11.2024    3:44
1 Besucher in den letzten 60 Sekunden        alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.06418800354