Forum: Mikrocontroller und Digitale Elektronik Verhalten eines Portpins nach Reset


von Ralf G. (dl5eu)


Lesenswert?

Hallo zusammen,

ich wüsste gerne, welche Polarität ein Portpin eines ATmega annimmt, 
wenn er gleich nach dem Reset als Output konfiguriert wird bzw. wovon 
die Polarität abhängt.

Laut Datenblatt sind nach einem Reset die Ports als Eingang mit 
deaktivierten Pull-Up-Widerständen konfiguriert, d.h. der Pin hat kein 
definiertes Potenzial.

Was passiert nun, wenn ich gleich nach dem Reset einen Portpin als 
Ausgang konfiguriere? Wird er dann 0 oder 1? Oder hängt es davon ab, was 
im PORT-Register steht? Dann müsste er logischerweise 0 werden, da die 
Pull-Up-Widerstände ja deaktiviert sind (PORTx = 0).

Danke für Eure Hilfe!

Grüße,

Ralf

von Stefan P. (form)


Lesenswert?

Ralf G. schrieb:
> Oder hängt es davon ab, was
> im PORT-Register steht? Dann müsste er logischerweise 0 werden, da die
> Pull-Up-Widerstände ja deaktiviert sind (PORTx = 0).

So ist es.

von Karl B. (gustav)


Lesenswert?

Hi,
erst wird das Datenrichtungsregister auf Eingang oder Ausgang definiert, 
dann müssen die Pullups in einem hier zulässigen Befehl "out" auch 
gesetzt werden.
Dann erst erscheint die logische 1 am Ausgang.

Codeschnipsel:

portinit:
ldi  temp, 0xFF  ;PortB Ausgang
out  ddrb, temp   ;
out  portb, temp  ;Pullups aktivieren
ret

ciao
gustav

von Cyblord -. (cyblord)


Lesenswert?

Ralf G. schrieb:
> Oder hängt es davon ab, was
> im PORT-Register steht?

Wovon soll es denn sonst abhängen? Das sind schon merkwürdige Fragen. 
Das PORT Register steuert den Zustand eines Ausgangs. Und du fragst 
jetzt ob das immer so ist? Soll es nur manchmal so sein? Erst 10 Minuten 
nach dem Reset? Oh maaa!

: Bearbeitet durch User
von Karl B. (gustav)


Lesenswert?

Hi,
für den RXD und TXD ist das ganz wichtig, wenn einzelne Portbits noch 
anderweitig "gepollt" werden:
....
ldi  temp, 0b00111010 ;PortD RS232 I/O, DCF77 input
out  ddrd, temp  ;PD0=RXD;PD1=TXD;PD6=DCF77 input(low active)
ldi  temp, 0xFF  ;Pullups auch fuer RXD
out  portd, temp
...
(Je nach MCU sind die RXD und TXD Ports anders definiert.
Hier für die ATtiny4313-MCU.)

ciao
gustav

von Ralf G. (dl5eu)


Lesenswert?

Hallo zusammen,

Danke für Eure Hilfe.

Und bevor noch mehr Leute die Gesichtsfarbe wechseln wie Cyblord, bitte 
nicht mehr antworten.

Ralf

von Michael U. (amiga)


Lesenswert?

Hallo,

Karl B. schrieb:
> portinit:
> ldi  temp, 0xFF  ;PortB Ausgang
> out  ddrb, temp   ;
> out  portb, temp  ;Pullups aktivieren
> ret

der Kommentar ;Pullups aktivieren ist Unfug.
Als Ausgang setzt der AVR den Pin auf High und zwar direkt weil er eine 
Push/Pull-Endstufe hat.
Ansonsten ist er Low, auch aktiv, weil das Portregister eben nach Reset 
0 enthält.
Ob der interne PullUp dabei am Oin dran bleibt oder nicht macht als 
Ausgang letztlich nur den Unterschied, ob einige µA mehr oder weniger 
bei Low durch den unteren MosFET fließen.

Gruß aus Berlin
Michael

von Wolfgang (Gast)


Lesenswert?

Ralf G. schrieb:
> Was passiert nun, wenn ich gleich nach dem Reset einen Portpin als
> Ausgang konfiguriere? Wird er dann 0 oder 1? Oder hängt es davon ab, was
> im PORT-Register steht?

Bei einem Reset wird das PORT-Register auch gelöscht. Damit steht der 
Zustand des Ausgangs beim Umschalten vom Datenrichtungsregister fest.
(s. Prinzipschaltbild im Datenblatt im Kap. "Ports as General Digital 
I/O")

von Einer K. (Gast)


Lesenswert?

Ralf G. schrieb:
> Was passiert nun, wenn ich gleich nach dem Reset einen Portpin als
> Ausgang konfiguriere?
So wie ich das sehe, hast du das alles richtig erkannt.

Tipp:
Im Datenblatt sind sämtliche Defaultwerten, nach einem Reset, angegeben.
Es gibt keinen Grund an den dortigen Angaben zu zweifeln.

von Karl B. (gustav)


Lesenswert?

Michael U. schrieb:
> Ob der interne PullUp dabei am Oin dran bleibt oder nicht macht als
> Ausgang letztlich nur den Unterschied, ob einige µA mehr oder weniger
> bei Low durch den unteren MosFET fließen.

Hi,
bei einigen Anwendungen brauch er's eben. Nicht immer. Nur da, wo der 
interne Pullup nicht mehr ausreicht (als Quasi-Busabschluss.. und das 
ist bei USART/RS232 meistens der Fall.)

App Note:
2512K-AVR-01/10
Seite 60f Atmega8515

ciao
gustav

von HildeK (Gast)


Lesenswert?

Michael U. schrieb:
> der Kommentar ;Pullups aktivieren ist Unfug.

Ja, und zwar deshalb, weil der Port vorher schon auf Ausgang definiert 
wurde. Beim Ausgang gibt es keine Pullup-Widerstände sondern stattdessen 
wird HIGH angelegt.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Karl B. schrieb:
> Hi,
> bei einigen Anwendungen brauch er's eben. Nicht immer. Nur da, wo der
> interne Pullup nicht mehr ausreicht (als Quasi-Busabschluss.. und das
> ist bei USART/RS232 meistens der Fall.)

 Nein, natürlich ist das Unfug.
 Pullup bei einem Pin der als Ausgang definiert ist kann nur
 negative Auswirkungen haben, deswegen ist bei AVR so etwas auch
 nicht vorgesehen, vielmehr wird der Pullup bei Ausgang ausgeschaltet.

 ATMEL:
1
If PORTxn is written a logic one when the pin is configured as an input pin, the pull-up
2
resistor is activated. To switch the pull-up resistor off, PORTxn has to be written a logic
3
zero or the pin has to be configured as an output pin. The port pins are tri-stated when a
4
reset condition becomes active, even if no clocks are running.

von Framulestigo (Gast)


Angehängte Dateien:

Lesenswert?

Arduino Fanboy D. schrieb:
> Im Datenblatt sind sämtliche Defaultwerten, nach einem Reset, angegeben.
> Es gibt keinen Grund an den dortigen Angaben zu zweifeln.

Mal visualisiert.

von Cyblord -. (cyblord)


Lesenswert?

Framulestigo schrieb:
> Arduino Fanboy D. schrieb:
>> Im Datenblatt sind sämtliche Defaultwerten, nach einem Reset, angegeben.
>> Es gibt keinen Grund an den dortigen Angaben zu zweifeln.
>
> Mal visualisiert.

Jetzt könntest du es ihm noch vortanzen und dabei singen. Aber mehr geht 
dann bald auch nicht mehr.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Ralf G. schrieb:
> einen Portpin als
> Ausgang konfiguriere

OK,ok,
es ging um Ausgang nicht Eingang.
Hatte mich mehr auf Eingang kapriziert.
Beispiel:
Beim DCF77-Empfänger kann es passieren, dass er nicht läuft, weil ein 
Pullup nicht eingebaut war. In diesem Falle reicht unter Umständen der 
Pullup vom Port (Eingang) aus, um den Empfängerbaustein zum Leben zu 
erwecken. Da muss man ihn also setzen.

In der Simu ist es auch klar.
Ohne extra nochmal Pullups zu aktivieren.
Bei Ausgang.
Nächster Step (F10) wäre gewesen, dann etwas in den Port 
reinzuschreiben.

ciao
gustav

: Bearbeitet durch User
von Ralf G. (dl5eu)


Lesenswert?

Cyblord -. schrieb:

> Jetzt könntest du es ihm noch vortanzen und dabei singen. Aber mehr geht
> dann bald auch nicht mehr.

@Cyblord: Einer meiner Chefs hat mir vor vielen Jahren gesagt: es gibt 
keine dummen Fragen, es gibt nur dumme Antworten. Wie man hier sieht hat 
sich daran bis heute nichts geändert.

Als das Wissen verteilt wurde hast Du vielleicht mehr abbekommen als 
andere, sei dankbar dafür. Dafür mangelt es Dir erheblich an guten 
Manieren. Du kennst mich überhaupt nicht aber machst mich dumm an nur 
weil ich eine Deiner Meinung nach "dumme" Frage gestellt habe.

von Einer K. (Gast)


Lesenswert?

Ralf G. schrieb:
> es gibt keine dummen Fragen, es gibt nur
> dumme Antworten.

Ach...

Das ist doch einfach nur eine Durchhalteparole für DAUs und 
Dokuleseverweigerer

von Cyblord -. (cyblord)


Lesenswert?

Ralf G. schrieb:
> @Cyblord: Einer meiner Chefs hat mir vor vielen Jahren gesagt: es gibt
> keine dummen Fragen, es gibt nur dumme Antworten.

Da hatte dein Chef eben unrecht. Ich lese hier täglich dumme und 
saudumme Fragen.

> Du kennst mich überhaupt nicht aber machst mich dumm an nur
> weil ich eine Deiner Meinung nach "dumme" Frage gestellt habe.

Ich lese deine Beiträge und weiß somit dass du dumme Fragen stellst. 
Reicht mir.

von Thomas W. (diddl)


Lesenswert?

Ob eine Frage dumm ist oder nicht, das ist nur eine subjektive 
Erfahrung.

Aus Sicht des Wissenden ist die Frage dumm, aus Sicht des Unwissenden 
nicht.



Die Bezeichnung "dumm" jedoch ist negativ wertend.

Es zeigt den Mangel an Toleranz und Einfühlvermögen ...

von Cyblord -. (cyblord)


Lesenswert?

Thomas W. schrieb:
> Die Bezeichnung "dumm" jedoch ist negativ wertend.

Oh nein, wenn ich das nur gewusst hätte. Also wie soll man das Waldorf 
konform ausdrücken? "Sub-Intelligent"?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Thomas W. schrieb:
> Aus Sicht des Wissenden ist die Frage dumm, aus Sicht des Unwissenden
> nicht.

 Das hat mit Wissen oder Unwissen nichts zu tun. Unwissende können
 schlaue Fragen stellen und Wissende stellen sehr oft dumme.
 Dumm oder nicht dumm hat sehr wenig mit Wissen zu tun, aber sehr viel
 mit IQ, das versuche ich vergeblich diesen Wikipedia-Experten
 klarzumachen die hier endlos ihr Google-Wissen verbreiten.

Ralf G. schrieb:
> @Cyblord: Einer meiner Chefs hat mir vor vielen Jahren gesagt: es gibt
> keine dummen Fragen, es gibt nur dumme Antworten. Wie man hier sieht hat
> sich daran bis heute nichts geändert.

 Doch, es gibt schon dumme Fragen.
 Aber deine Frage war keinesfalls dumm, du hast schon richtig
 getippt, wolltest nur sicher sein - sofern war es für mich eine
 durchaus normale Frage.

: Bearbeitet durch User
von Eugen T. (weaver)


Angehängte Dateien:

Lesenswert?

Ich habe ein Problem mit der AVR ATTiny13A.

Ich versuche auch den Port PB5 als Ausgang verwenden. Ein n-Kanal FET 
soll eine LED schalten. Im Simulator der Port PB5 funktioniert normal, 
auf dem Board der Ausgang ist ständig hoch und die LED leuchtet. Alle 
andere Ports funktionieren normal.
Der Ausgangschaltung ist auf dem Bild, anstelle von R2 ist ein 5mA LED. 
Direkt auf dem PB5 ist ein Kondensator zum Grund für RESET beim 
Einschalten.

Irgendeine Idee was soll ich noch probieren? Eine NPN Stufe wirkt als 
RESET also funktioniert der Chip nicht. ( 10 kOhm Basiswiderstand).

Danke!

von EMV (Gast)


Lesenswert?

PB5 ist beim ATTiny 13 und ähnlichen ein Eingang für RESET.

Soll er als normaler Eingang/Ausgang genutzt werden, so muss RSTDISBL 
fuse bit geändert werden.  Dann ist aber eine Programmierung nur noch 
miteinem HV-Programmer möglich.

Gruß  EMV

von Eugen T. (weaver)


Lesenswert?

Danke, das wusste ich nicht.

von Joachim B. (jar)


Lesenswert?

Eugen T. schrieb:
> Irgendeine Idee was soll ich noch probieren? Eine NPN Stufe wirkt als
> RESET also funktioniert der Chip nicht. ( 10 kOhm Basiswiderstand).

anderen PIN nehmen

Reset als Port bedeutet in der Fuse umprogrammieren und das war die 
letzte Programmierung -> ISP geht dann nicht mehr, ausser man hat einen 
HV Prommer!

von Eugen T. (weaver)


Lesenswert?

Alles klar, ich brauche aber all Ports, deswegen muss ich den Fuse bit 
umschreiben.
Hoffentlich brauche ich diese Chip nicht mehr programmieren. Ich habe 
zwar auch HW Programmer, aber noch nie verwendet...:-)

von Peter D. (peda)


Lesenswert?

Eugen T. schrieb:
> ich brauche aber all Ports

Dann würde ich zum ATtiny24 raten.

von Joachim B. (jar)


Lesenswert?

Eugen T. schrieb:
> Alles klar, ich brauche aber all Ports

dann benutze Porterweiterung, ticker dir Bits in ein Schiebergister

von EMV (Gast)


Lesenswert?

Wenn PB5 ein analoger Eingang sein kann (Umbelegen der Ports), lässt 
sich der PB5 (bis zur Hälfte der Betriebsspannung)analog abfragen...
Beitrag "Attiny13, PB5 (Reset-Pin) als ADC zur messung von VCC nutzen"

Gruß EMV

von Eugen T. (weaver)


Lesenswert?

Blöd das ich das nicht wusste, jetzt sind schon alle Platinen fertig und 
kann ich nichts mehr ändern. Ich wollte nicht die größere Chips 
verwenden. Dazu ist die Aufgabe relativ einfach.

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.