Hi, wie kann ich z.b. PORTD bei einem Atmega16 Bi-Direktional deklarieren? Wenn ich PortD als Ausgang setzte muss ich PORTD = 0x00 DDRD = 0x00 schreiben. Aber bei Bi-Direktional?
Heiko Heik schrieb: > DDRD = 0x00 Das ist Eingang. Bidirektional geht nicht. Du kannst höchstens bei Eingang einen Pullup setzen. mfg.
Gar nicht
Gast
#2036346
Der Port ist immer bidirektional. Wenn du ihn als Ausgang konfigurierst und einschaltest:
1 | |
2 | |
Und dann den ganzen Port nach Masse kurzschließt, dann wirst du PORTA als 0xFF und PINA als 0x00 lesen. Zumindest suggeriert das das Schaltbild im Datenblatt...
Sven P. schrieb: > dann wirst du PORTA als 0xFF und PINA als 0x00 lesen. > Zumindest suggeriert das das Schaltbild im Datenblatt... Das ist auch so. Nur sollte das mit dem Auslesen passieren, vor der Porttreiber abraucht... :-o
Sven P. schrieb: > Masse kurzschließt, Das ist das Problem. Da wird nicht nur einfach ein 10K Pullup reingehängt. mfg.
Gast
#2036401
>Hi, wie kann ich z.b. PORTD bei einem Atmega16 Bi-Direktional >deklarieren? Sag einfach mal was du machen möchtest. Wenn man den Portd als quasi OpenCollector betreibt geht da schon was. Was hängt am Port?
Gast
#2036435
Ich möchte PD5 als Ausgang, PD6 und PD7 als Eingang nutzen.
heiko_h schrieb: > Ich möchte PD5 als Ausgang, PD6 und PD7 als Eingang nutzen. Und? Was hindert dich daran? Die einzelnen Pins kannst du beliebig entweder Ein- oder Ausgang zuordnen. Aber hier dachten alle, du willst EINEN Pin bidirektional betreiben.
Gast
#2036442
>Ich möchte PD5 als Ausgang, PD6 und PD7 als Eingang nutzen.
Was hat das jetzt mit bidirektional zu tun?
DDRD |= 1<<PD5;
Fertig.
Gast
#2036443
An den Port habe ich davor noch eine Transistorpegel wandlung dranhängen mit PullUp auf 5V.
Gast
#2036445
holger schrieb: >>Ich möchte PD5 als Ausgang, PD6 und PD7 als Eingang nutzen. > > Was hat das jetzt mit bidirektional zu tun? > > DDRD |= 1<<PD5; > > Fertig. Mit dieser Deklaration ist der PD5 nun Bidirektional oder als Ausgang deklariert?
heiko_h schrieb: > Ich möchte PD5 als Ausgang, PD6 und PD7 als Eingang nutzen. Das ist natürlich ganz was anderes. Jeder Portpin kann einzeln als Ein- oder Ausgang betrieben werden. Nicht der ganze PortD wird umgeschaltet. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports mfg.
Gast
#2036450
>An den Port habe ich davor noch eine Transistorpegel wandlung dranhängen >mit PullUp auf 5V. Wie schön für dich. Schaltplan?
heiko_h schrieb: > holger schrieb: >>>Ich möchte PD5 als Ausgang, PD6 und PD7 als Eingang nutzen. >> >> Was hat das jetzt mit bidirektional zu tun? >> >> DDRD |= 1<<PD5; >> >> Fertig. > > Mit dieser Deklaration ist der PD5 nun Bidirektional oder als Ausgang > deklariert? Tu dir selbst einen Gefallen und schau in die Tutorien rein! AVR-GCC-Tutorial AVR-Tutorial
Gast
#2036498
Also ich habe mich jetzt mal nen bischen in das Tutorial reingelesen. Alle Ports ains Standartgemäß Eingänge: Habe nun folgendes deklariert: //Port D deklarieren (PD5 als Ausgang gesetzt) DDRD = (1<<PD5); damit ist nun PD5 als Ausgang deklariert und alle anderen bleiben als Eingang bestehen. Ist das so richtig?
heiko_h schrieb: > damit ist nun PD5 als Ausgang deklariert und alle anderen bleiben als > > Eingang bestehen. Ist das so richtig? Ja mfg.
Gast
#2036522
Okay danke euch für die Hilfe.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.