Forum: Mikrocontroller und Digitale Elektronik Tiny13 an ISP Reset ADC-Schalter möglich ?


von kopfkratzer (Gast)


Lesenswert?

Hallo,
ich habe einen Tiny13 für ein kleines Projekt und benötige nun noch 
einen zusätzlichen Schalteingang.
Gibt es eine Möglichkeit den RESET-Pin PB5 sowohl für den ISP als auch 
als Eingang zu nutzen ?
Also kann ich im Tiny13 selbst die Funktion des PINs umschalten ?
Im Datenblatt finde ich dazu nichts was mir weiterhelfen würde.
Ich wollte das ganze dann via ADC0 so realisieren:


VCC
 |
 |      +---[5k]----+
 +----*/            +----PB5
        +---[10k]---+
                    |
SPI-RESET-----------+

Es reicht mir den Schalterzustand alle fünf Sekunden abzufragen.
Danke.

von Cyblord -. (cyblord)


Lesenswert?

Nein.
Die Funktion des Reset wird per Fuse bestimmt. Wenn du Reset abschaltst 
und als normalen  IO Port nimmst, dann kannst du ihn nur noch HV 
Programmieren. ISP nicht mehr. Und natürlich das ganze per ISP auch 
NICHT mehr Rückgängig machen.
Wenn du sowas machen willst, kauf dir einen AVR DRAGON. Damit entwickle 
ich Tiny85er ebenfalls ohne Reset. Das geht sehr gut und im Handling 
merkt man keinen Unterschied zu ISP.

gruß cyblord

von kopfkratzer (Gast)


Lesenswert?

Schade, habe ich befürchtet.
Aktuell habe ich einen digitalen Eingang der via Taster einen externen 
Zählvorgang umsetzt.
An den anderen PINs hängen Potentiometer.
Wenn ich nun obige Schaltung an den Tasterpin hänge und dann alle 10ms 
auf ADC-Änderung prüfe, kann ich damit einen zusätzlichen Eingang 
realisieren ?
Z.B.:
1
uint8_t checkswitch()
2
{
3
 if(uADCWerte[5] < 128)
4
  return 0;
5
 return1;
6
}

Nur wie kann ich dann noch sicher den Taster abfragen ?
Danke.

von Ferdi (Gast)


Lesenswert?

Der PB5, auch als RESET gefused ist mit dem ADC verbunden und meßbar. 
Bei der ext. Beschaltung muß man halt aufpassen, daß man dadurch keinen 
Reset auslöst.

Versuch macht kluch.

von kopfkratzer (Gast)


Lesenswert?

Ferdi schrieb:
> Der PB5, auch als RESET gefused ist mit dem ADC verbunden und meßbar.
> Bei der ext. Beschaltung muß man halt aufpassen, daß man dadurch keinen
> Reset auslöst.

OK,
dann sollte folgendes mit obigen Code also funktionieren oder ?


VCC
 |
 |      +---[5k]----+
 +----*/            +-+-[5k]--PB5
        +---[15k]---+ |
                      |
SPI-RESET-------------+

Danke.

von Ferdi (Gast)


Lesenswert?

Ich meine: Nein

Du mußt einen Spannungsteiler von VCC nach GND aufbauen um mit dem ADC 
sinnvoll zu messen. Dabei mußt du natürlich beachten, daß zuviel GND 
einen Reset auslöst. Wie gesagt: ausprobieren, Datenblatt und 
Spnnungsteiler bestimmen.

von kopfkratzer (Gast)


Lesenswert?

Ferdi schrieb:
> Du mußt einen Spannungsteiler von VCC nach GND aufbauen um mit dem ADC
> sinnvoll zu messen.

Ja sollte einer werden,
mein Fehler hab's falsch gezeichnet :-(
Danke.

von Cyblord -. (cyblord)


Lesenswert?

So einen Pfusch würd ich nicht machen. Schon jetzt schwören viele auf 
einen externen PullUp für den Reset, obwohl es der interne wohl meistens 
tut. Aber hier noch einen Taster abzufragen verschärft das Problem. Am 
Ende hat man spontane Resets unter bestimmten Bedingungen die man so 
vielleicht gar nicht reproduzieren kann. Das macht nur Ärger.
Nimm entweder einen größeren Controller (Tiny24/44/84) oder kauf dir für 
nen Fuffi den Dragon.

gruß cyblord

von Ferdi (Gast)


Lesenswert?

@cyblord: Als einzig konstruktives in deinem Beitrag entnehme ich den 
Hinweis auf unerklärbare Resets. Ausprobiert hast du das aber noch 
nicht, oder? und verläßt dich auf die Schwüre der ext. Pullup 
Fetischisten.

von Cyblord -. (cyblord)


Lesenswert?

Ferdi schrieb:
> @cyblord: Als einzig konstruktives in deinem Beitrag entnehme ich den
> Hinweis auf unerklärbare Resets. Ausprobiert hast du das aber noch
> nicht, oder? und verläßt dich auf die Schwüre der ext. Pullup
> Fetischisten.

Ich muss nicht alles ausprobieren um zu wissen dass es Pfusch ist. Dabei 
spielt es keine Rolle obs funktioniert. Man wird es schon irgendwie zu 
laufen bekommen, daran zweifel ich nicht.

gruß cyblord

von kopfkratzer (Gast)


Lesenswert?

OK,
also wenn das mit dem ISP-Reset so heikel ist kann ich dann das mit 
einem oder allen anderen analogen Inputs machen:

   VCC
    |
    |
[Schalter]
    |
 +--+--+
 |     |
 1k   2,5k-+-2,5k--GND
 |         |
 +--+------+
    |
    +-------ADC-Pin
    |
    |
[Poti-1k]
    |
    |
   GND

Also bei Schalter 1k und Poti = 0Ohm
hätte ich dann Uadc = Uvcc = 5V
Poti = 1k =>  Uadc = 2,5V
Bei Schalter auf Spannungsteiler
Poti=0   Uadc =  Uvcc/2 = 2,5V
Poti=1k Uadc = 0V

Also wenn der ADC 128-255 hat ist der Schalter auf 1k und von 0-128 auf 
dem Spannungsteiler.
Oder stehe ich gerade wieder mal voll auf'm Schlauch und sehe den Wald 
vor lauter Bäumen nicht ?
Danke.

von amateur (Gast)


Lesenswert?

Hast Du mal an einen analogen Multiplexer gedacht? Bei den meist 
mittelprächtigen Auflösungen der Wandler dürfte ein einfacher sogar 
ausreichen.
3 Potentiometer umkonfigurieren in 1 A/D-Eingang und 2 Digitalausgänge 
reicht für 4 umschaltbare Analogeingänge.

von Ferdi (Gast)


Lesenswert?

Grober Vorschlag:

Nach Datenblatt (Reset Input Threshold Voltage Diagramm) sollte die 
Spannung bei Vcc=5V am PB5 nicht unter 3V fallen um nicht einen Reset 
auszulösen.

Also Spannungsteiler mit 10k und 43k Widerständen.

Vcc -- 10k -- PB5 -- 43k -- GND

Den 10k mit Schalter überbrückbar machen.

Schalter geschlossen: 5V messen (Adc Wert = 1023)
Schalter offen: ca 4V messen (Adc Wert ca 820)

Abfrage im Programm: Adcwert kleiner 1000 dann ist Schalter offen.

Risiko : Schalter muß bei SPI Programmierung offen sein. Könnte ein 
Wechsler sein, der PB5 auf Vcc (10k überbrückt) oder auf SPI Leitung 
schaltet.

von Ferdi (Gast)


Lesenswert?

Hab Internen Pullup am Reset vergessen. Der 43k kann auch kleiner werden 
zB 39k - mußt halt selber bißchen rechnen und probieren.

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.