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
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.
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
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
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
Hallo zusammen, Danke für Eure Hilfe. Und bevor noch mehr Leute die Gesichtsfarbe wechseln wie Cyblord, bitte nicht mehr antworten. Ralf
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
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")
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.
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
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.
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. |
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.
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.
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
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.
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
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.
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 ...
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"?
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
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!
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
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!
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...:-)
Eugen T. schrieb: > Alles klar, ich brauche aber all Ports dann benutze Porterweiterung, ticker dir Bits in ein Schiebergister
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
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.
Ralf G. schrieb: > 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. > Hallo zusammen, auch wenn das Thema schon älter ist, ein Tip, da ich ein ähnliches Verhalten bei einen ATMega328 hatte. Ich wollte den PortB als SPI konfigurieren, nach dem die Pins (CLK, MOSI, CS) als Ausgang definiert waren, war ihr Zustand 0. Ein DDRD |= (1<<PD0) jedoch mit einer 1 startet. Ich habe es so gelöst, das ich den Port erst auf 1 gesetzt habe und dann die Datenrichtung definiert habe. PORTB |= (1<<PB2) | (1<<PB3) | (1<<PB5); DDRB |= (1<<PB2) | (1<<PB3) | (1<<PB5); Das hat funktioniert. Grüße
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.