www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zweitfunktion Resetpin ATtiny15


Autor: Stefan Kneller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag zusammen,

heute hat es mich erwischt, grrr.
Auf dem Tiny15 habe ich ein Programm zur Lichtsteuerung im Flugmodell
geschrieben. Alle Pins werden dafür benötigt, auch die
Alternativfunktion des Resetpins (PortB5). Weil ich per ISP
programmiere steht der Pin B5 während der Programmentwicklung nicht zum
Testen zur Verfügung. Zur Überprüfung der Funktion musste ich das Signal
temporär auf einen anderen Portpin routen. Soweit so gut. Als dann heute
die Software zur Zufriedenheit lief habe ich B5 mit Setzen der Fuse
RSTDSBLE freigegeben. Wie erstaunt war ich, als dort jedoch kein Signal
zu messen ist. Nichts als 0.
Die Recherche hier im Forum ergab lediglich den Hinweis, dass das Bit
PortB5 read-only ist, aber mir ist jetzt überhaupt nicht klar, wie ich
denn dann den Port ansprechen kann. Auch im Datenblatt kann ich nichts
dazu finden, ausser der Information, dass der Ausgang ein open-Drain
Treiber besitzt.

Muss ich die Daten für B5 nach PinB5 (einen PullUp hat der Port B5 ja
nicht) schreiben oder was ?

Ich weiß nicht weiter. Danke für eure Mühe.
Stefan Kneller

Autor: Jörg Bar* (joerg_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuch mal eine 1 nach PORTB PIN5 zu schreiben. Desweiteren ist ein
externer Pullup nötig wenn ich das Datenblatt richtig verstehe.

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde nochmal im Datenblatt schauen. Wenn Read-Only, dann ist er nur als
Eingang nutzbar. Wenn Open-Drain, dann auch als Ausgang, ähnlich wie
OpenKollektor ähnlich wie ein Transistor, wo Drain/Kollektor = Portpin
ist. Du brauchst dann auf jeden Fall einen externen Pullup. Oder du
treibst damit gegen Masse eine LED, dann kannst du die direkt
anschließen, natürlich Widerstand in Reihe.

Autor: Stefan Kneller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deinen Vorschlag verstehe ich nicht. Es gibt keine I/O-Adresse PORTB
oder PIN5.
Es gibt PORTBn, PINBn ( für n=0 bis 5) und DDRB

Bisher spreche ich die Ports z.B. wie folgt an:

ldi temp,0b00100000
out portB,temp

oder

ldi temp,(1<<n)
out portB,temp

oder

sbi portB,n

Das klappt natürlich auch bei allen PortsPins, nur nicht bei PORTB5,
dem verflixten ehemaligen ResetPin.
Pullup-Widerstand habe ich versucht, ohne Erfolg.
Da ich keinen Parallelprogrammer besitze, kann ich mir auch keine
langwierigen Experimente erlauben, das wird zu teuer :-(
Hoffe auf weitere Tips.

Stefan Kneller

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab mir gerade das Datenblatt angeschaut, das ist in der Tat
verwirrend/widersprüchlich.
sinngemäss steht da: entweder Reset oder input oder open-drain-output.
DDRB.5 gibts (Umschaltung Eingang oder Ausgang, wie üblich), PortB.5
allerdings existiert nicht, bräuchte man ja, um den als Ausgang
konfigurierten Pin nach Masse zu schalten bzw. zu sperren. Weder bei
der   Portbeschreibung noch bei register summary existiert allerdings
dieses PORTB.5, AVR-Studio kennt PORTB.5 auch nicht.
Beim Tiny12-Datenblatt ist es dasselbe...

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der Open-Drain Output vielleicht nur für den debugWire(tm) Link gut,
und garnicht einzeln Programmierbar?

/Ernst

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"When the RSTDIBL Fuse is unprogrammed, this pin serves as External
Reset."
Soweit so gut.
"When the RSTDIBL Fuse is programmed, this pin is a general input pin
or a open out-put pin. If DDB5 is cleared (zero), PB5 is configured as
an input pin. If DDB5 is set (one), the pin is a open-drain output."

Die einzige (wenn auch unlogische) Funktion, die ich mir vorstellen
kann:
DDRB.5=1 -> Ausgang, aktiv nach Masse geschaltet
DDRB.5=0 -> Eingang=deaktivierter Ausgang, der Zustand kann über PINB.5
gelesen werden, falls es als Eingang verwendet werden soll.

Die Änderung im Programm wäre dann:
Statt
DDRB.5=1 //init as output
PORTB.5=0 //output low
PORTB.5=1 //output open

müsste man dann schreiben
DDRB.5=1 //output low
DDRB.5=0 //output open

Gemacht habe ich noch nie was mit dem letzten Notpin :-)

Autor: Stefan Kneller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab auch nochmal nachgedacht:

Mal angenommen der Pin ist extern mit einem PullUp-Widerstand
(Größenordnung ca. 1K bis 10K, je nach weiterfolgender Schaltung)
beschaltet.
Nun konfiguriere ich den Pin per DDRB5 als Eingang.
Als Eingang ist der Pin hochohmig und wird wegen des PullUp H-Potential
annehmen.
Als Ausgang konfiguriert wird der open-Drain-Treiber immer
durchgeschaltet sein (das ist meine Vermutung, die ich experimentell
bestätigten konnte, die sich aber aus dem Datenblatt nicht ableiten
lässt) und mir am Pin immer low-Potential ausgeben.
Letztendlich gelangen meine Nutzdaten auf diese Weise invertiert über
das DDRB5 an den Ausgang.
Kann diese Vermutungen jemand betätigen.
Ich werde das mal ausprobieren und einen Tiny15 opfern.

In meinen Augen sehr verwirrend und eine echte Notlösung.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann sich das so vorstellen, als wenn PORTB.5 konstant auf 0 gesetzt
ist.
Um nun eine 0 auszugeben, muß man DDRB.5 auf 1 setzen.


Peter

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja, interessant und gut zu wissen, wenn sowas nicht im Datenblatt
steht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.