Forum: Mikrocontroller und Digitale Elektronik ATTiny85 >>> PINB, muss !RESET deaktiviert werden?


von __Son´s B. (bersison)


Lesenswert?

Hallo!

_Vorgabe_
ATTiny 85,
PB5 als I/O-Eingang deklarieren (ohne pull-up) und Zustand abfragen,
PB5 hat den "!RESET" als Zusatzfunktion

_Folgendes Problem_
DDRB &= ~(1<<PB5);
while(PINB & (1<<PB5)); // Soll, high auf PB5 in Schleife
                       // wird nicht abgefragt // while() wird 
übersprungen
Wenn low (Gnd) auf PB5 liegt, arbeitet uC nicht mehr - Ausgang flackert.

_Frage_
Kann es sein, dass die Funktion "!RESET" innerhalb des C-Programm 
deaktiviert werden muss?
Im Datenblatt habe ich nichts konkretes gefunden.

von Glen (Gast)


Lesenswert?

Man kann über die Fuses die RESET-Funktionalität (RSTDSBL oder so 
ähnlich) deaktivieren und PB5 wie einen I/O-Pin benutzen.

ISP (also weitere Programmierung) ist dann aber nicht mehr möglich. Also 
entweder anders coden, einen Controller mit mehr PINs verwenden oder 
High Voltage Programming nutzen.

von Richie (Gast)


Lesenswert?

__Son´s B. schrieb:
> Im Datenblatt habe ich nichts konkretes gefunden.

Datenblatt: 10.3.1 Alternate Functions of Port B
• RESET: External Reset input is active low and enabled by unprogramming 
(“1”) the RSTDISBL Fuse. Pullup is
activated and output driver and digital input are deactivated when the 
pin is used as the RESETpin.

von Stefan R. (1994rstefan)


Lesenswert?

__Son´s B. schrieb:
> Im Datenblatt habe ich nichts konkretes gefunden.

Das kann ich mir nur schwer vorstellen. Bereits auf der dritten Seite im 
Datenblatt steht:

Reset input. A low level on this pin for longer than the minimum pulse 
length will generate a reset, even if the clock
is not running and provided the reset pin has not been disabled. The 
minimum pulse length is given in Table 21-4
on page 165. Shorter pulses are not guaranteed to generate a reset.
The reset pin can also be used as a (weak) I/O pin.

In Kapitel 10. I/O Ports, genauer bei 10.3.1 stehen dann auch weitere 
Details.

von __Son´s B. (bersison)


Lesenswert?

Glen schrieb:
> Man kann über die Fuses die RESET-Funktionalität (RSTDSBL oder so
> ähnlich) deaktivieren und PB5 wie einen I/O-Pin benutzen.
>
> ISP (also weitere Programmierung) ist dann aber nicht mehr möglich. Also
> entweder anders coden, einen Controller mit mehr PINs verwenden oder
> High Voltage Programming nutzen.
Ich ging davon aus, dass die I/O-Deklaration "DDRB &= ~(1<<PB5)" 
automatisch die Zusatzfunktion !RESET deaktiviert.
Kann die RESET-Funktion innerhalb des C-Quellcode deaktiviert werden?

Stefan R. schrieb:
> In Kapitel 10. I/O Ports, genauer bei 10.3.1 stehen dann auch weitere
> Details.
Leider fehlt die Erfahrung, um Text korrekt zu interpretieren.

von Richie (Gast)


Lesenswert?

__Son´s B. schrieb:
> Stefan R. schrieb:
>> In Kapitel 10. I/O Ports, genauer bei 10.3.1 stehen dann auch weitere
>> Details.
> Leider fehlt die Erfahrung, um Text korrekt zu interpretieren.


Richie schrieb:
> Datenblatt: 10.3.1 Alternate Functions of Port B
> • RESET: External Reset input is active low and enabled by unprogramming
> (“1”) the RSTDISBL Fuse. Pullup is
> activated and output driver and digital input are deactivated when the
> pin is used as the RESETpin.

Was kannst du daran nicht interpretieren?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

__Son´s B. schrieb:
> Kann die RESET-Funktion innerhalb des C-Quellcode deaktiviert werden?

Nein, das kann nur ein Setzen der RSTDISBL Fuse. Wenn deine Firmware 
100% korrekt läuft, bist du fertig - ansonsten hast du dich ausgesperrt 
und kannst den Tiny nur noch mit HV Programmierung wieder verwenden.

Nix für Anfänger. Nimm einen Tiny, bei dem diese Änderung nicht nötig 
ist - sprich, einen, der auch ohne Klimmzüge genügend Portpins hat.

: Bearbeitet durch User
von __Son´s B. (bersison)


Lesenswert?

Matthias S. schrieb:
> __Son´s B. schrieb:
>> Kann die RESET-Funktion innerhalb des C-Quellcode deaktiviert werden?
> Nein, das kann nur ein Setzen der RSTDISBL Fuse
Danke für die eindeutige Aussage!
Verhält sich jeder !RESET-Pin an ATMEL-uC so eingeschränkt?

Matthias S. schrieb:
> Wenn deine Firmware
> 100% korrekt läuft, bist du fertig - ansonsten hast du dich ausgesperrt
> und kannst den Tiny nur noch mit HV Programmierung wieder verwenden.
>
> Nix für Anfänger. Nimm einen Tiny, bei dem diese Änderung nicht nötig
> ist - sprich, einen, der auch ohne Klimmzüge genügend Portpins hat.
Schade, wollte bewusst ein kleinen uC

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

__Son´s B. schrieb:
> Schade, wollte bewusst ein kleinen uC

Ja, aber eben keinen zu kleinen. Die Tinys haben die gleiche 
Rechenleistung wie die grösseren, aber eben nur beschränkte Zahl an 
Ports. Wenn die Portpins nicht reichen kann man entweder einen 
Portexpander hinzunehmen oder für nen Euro den nächstgrösseren MC 
nehmen.
Portexpander bedeutet mehr Aufwand für die Peripherie,also besser den 
Tiny24/44 oder z.B. den recht neuen Tiny20 nehmen, alle im 14-pin 
Gehäuse.

: Bearbeitet durch User
von __Son´s B. (bersison)


Lesenswert?

Matthias S. schrieb:
>,also besser den
> Tiny24/44 oder z.B. den recht neuen Tiny20 nehmen, alle im 14-pin
> Gehäuse.
Habe noch ein paar ATTiny84 in der Schublade. 14pin reichen sicher!

von Peter D. (peda)


Lesenswert?

Man kann den Resetpin PB5 mit dem ADC auslesen.
Man darf allerdings nicht unter die Resetschwelle gehen.
Z.B. den Pin auf 4,5V absenken, läßt sich mit dem ADC gut auswerten.

von __Son´s B. (bersison)


Lesenswert?

Peter D. schrieb:
> Man kann den Resetpin PB5 mit dem ADC auslesen.
> Man darf allerdings nicht unter die Resetschwelle gehen.
> Z.B. den Pin auf 4,5V absenken, läßt sich mit dem ADC gut auswerten.
Gute Idee!
Finde die Lösung aber etwas ~unsauber~

Kann der /RESET-Pin auch als Funktion innerhalb einer Steuerung 
eingesetzt werden?
Bsp: Solang /RESET gesetzt (Gnd), ist der uC in Ruhezustand (Ausgänge 
low). Auch über Std und Tage.
Oder steht der nur für die ISP sinnvoll zur Verfügung?

von Cyblord -. (cyblord)


Lesenswert?

__Son´s B. schrieb:
> Peter D. schrieb:
>> Man kann den Resetpin PB5 mit dem ADC auslesen.
>> Man darf allerdings nicht unter die Resetschwelle gehen.
>> Z.B. den Pin auf 4,5V absenken, läßt sich mit dem ADC gut auswerten.
> Gute Idee!
> Finde die Lösung aber etwas ~unsauber~

Ist es auch. Aber wer mal Pedas Code gesehen hat, dem graut vor nichts 
mehr.

>
> Kann der /RESET-Pin auch als Funktion innerhalb einer Steuerung
> eingesetzt werden?
Was soll das heißen?

> Bsp: Solang /RESET gesetzt (Gnd), ist der uC in Ruhezustand (Ausgänge
> low). Auch über Std und Tage.
Ja

> Oder steht der nur für die ISP sinnvoll zur Verfügung?
Der Reset ist erstmal der Reset. Das ist seine Funktion. Was für dich 
sinnvoll ist, weiß ich nicht.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

__Son´s B. schrieb:
> ist der uC in Ruhezustand (Ausgänge
> low).

Nicht ganz richtig. Im Resetzustand sind die Pins eines AVR im 
Allgemeinen im hochohmigen Eingangszustand ohne Pullup.

__Son´s B. schrieb:
>>,also besser den
>> Tiny24/44 oder z.B. den recht neuen Tiny20 nehmen, alle im 14-pin
>> Gehäuse.
> Habe noch ein paar ATTiny84 in der Schublade. 14pin reichen sicher!

Umso besser. Der Tiny84 ist ja aus der Tiny24 Familie der dickste.

von Richie (Gast)


Lesenswert?

__Son´s B. schrieb:
> Peter D. schrieb:
>> Man kann den Resetpin PB5 mit dem ADC auslesen.
>> Man darf allerdings nicht unter die Resetschwelle gehen.
>> Z.B. den Pin auf 4,5V absenken, läßt sich mit dem ADC gut auswerten.
> Gute Idee!
> Finde die Lösung aber etwas ~unsauber~

Beachtet man die Spezifikationen im Datenblatt ist so etwas nicht 
unsauber und mal was anderes als nur 0 8 15 Lösungen.

von __Son´s B. (bersison)


Lesenswert?

Matthias S. schrieb:
> __Son´s B. schrieb:
>> ist der uC in Ruhezustand (Ausgänge low).
>
> Nicht ganz richtig. Im Resetzustand sind die Pins eines AVR im
> Allgemeinen im hochohmigen Eingangszustand ohne Pullup.
Habe jetzt einige Versuche mit /RESET als "Notaus" durchgespielt -> 
Ausgänge nicht zufriedenstellend auf 0V bekommen, ohne das der Ausgang 
im Betrieb belastet wird.

Daher wird beim ATTiny85, der Gedanke "Notaus durch PB5 oder /RESET" 
hier abgeschlossen!

von Peter D. (peda)


Lesenswert?

__Son´s B. schrieb:
> Habe jetzt einige Versuche mit /RESET als "Notaus" durchgespielt ->
> Ausgänge nicht zufriedenstellend auf 0V bekommen

Steht doch eindeutig im Datenblatt, Reset setzt die Pins auf Eingang 
und das ist eben nicht Ausgang low.
Nicht umsonst sieht man für MOS-Lasten einen Pulldown vor.

von Holger L. (max5v)


Lesenswert?

Man könnte noch einen Bootloader benutzen, dann wäre der Resetpin frei 
und es wird kein spezieller Programmierer benötigt.
Die fehlende Notausfunktion könnte man noch mit einem Stromstoßschalter 
realisieren.

von Route_66 H. (route_66)


Lesenswert?

Holger L. schrieb:
> Die fehlende Notausfunktion könnte man noch mit einem Stromstoßschalter
> realisieren.

Lach!
Not-Aus muß auch bei Ausfall von Steuerspannungen funktionieren. Das 
zeige mir mal bei einem Stromstoßrelais!

von Holger L. (max5v)


Lesenswert?

Route 6. schrieb:
> Lach!
> Not-Aus muß auch bei Ausfall von Steuerspannungen funktionieren. Das
> zeige mir mal bei einem Stromstoßrelais!

Er wollte diesen "Notaus" mit dem Resetpin realisieren, da wäre das 
selbe Problem entstanden.
Dachte da auch weniger an ein Relais.

von __Son´s B. (bersison)


Lesenswert?

Holger L. schrieb:
> Er wollte diesen "Notaus" mit dem Resetpin realisieren, ...

Es gibt natürlich unterschiedliche Wege - Geschmackssache - IO/PB5 oder 
/RESET sind keine!
____________________________________________________________________
Ich möchte mich für alle konstruktiven Infos/Vorschläge bedanken!!!
____________________________________________________________________

: Bearbeitet durch User
von Stefan S. (sschultewolter)


Lesenswert?

Für Notaus sind aber auch alle anderen IOs am Attiny85 tabu! Der Attiny 
ist nicht für eine sicherheitsrelevante Anlage einzusetzen. Eine Stop 
Funktion kann man einplanen, bei der auch nicht weiter etwas passieren 
kann, wenn diese auch wirklich nicht stoppt

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.