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.
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
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.
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.
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.
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.
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.
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
@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.
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.