Forum: Mikrocontroller und Digitale Elektronik ISP und Kondensatoren


von Jens (Gast)


Lesenswert?

Hallo Leute!
Ich bastel mir gerade ein Board mit Atmel 90S8515 und einigem drumherum 
(LCD, Taster, A/D-Wandler, D/A-Wandler, OSD, Sprachausgabe,....).
Jetzt habe ich eine Frage, bevor das nacher nicht läuft:
Ich habe an die ISP-Anschlüsse (SCK, MISO und MOSI) jeweils ein Taster 
angeschlossen (zieht den Eingang auf Masse). Dann 10k als Pullup und 
parallel zum Taster dann 1uF zum entprellen.
Läuft so das ISP noch? Oder müssen die Elkos raus? Wie entprelle ich 
dann am Besten?
Die Eingänge komplett frei lassen geht nicht, sonst habe ich nicht mehr 
genug IO-Pins....

Mfg Jens

von mikki merten (Gast)


Lesenswert?

Die 1µF solltest du nicht einsetzen, sind ja auch absolut überflüssig. 
Die PullUp können auch entfallen, da ja der AVR schon über interne 
PullUp verfügt.
Solange du während des Programmiervorganges nicht einen Taster betätigts 
arbeitet die Schaltung ohne Probleme. Wenn du es ganz sicher machen 
willst, einfach noch 150-470 Ohm in Reihe zum Taster als 
Kurzschlußschutz gegen versehentliche Betätigung.

von Gerd (Gast)


Lesenswert?

Absolut überflüssig ist gut! Entprellung ist schon erforderlich, wenn 
man Taster nimmt. Sonst gi9bt es ca. 15 Interrupts in kurzer Folge und 
der Chip liegt flach. Vorschlag: Taster parallel zum C und das ganze 
über ein R zum Portpin. Dann kriegt der ISP-Treiber das spielend auf 
Null und wenn er inaktiv ist, klappt's auch mit dem Entprellen.

MfG
Gerd

von mikki merten (Gast)


Lesenswert?

@gerf
Ist auch absolut überflüssig. Taster kann man auch mittels Software 
entprellen. Wozu den sonst der Mikrocontroller in der Schaltung. 
Software makes Hardware work.

von Peter D. (peda)


Lesenswert?

Kondensatoren sind nicht nur absolut überflüssig, sie können sogar das 
Gegenteil bewirken, bzw. tödlich für den Taster und den Kontroller sein.

Siehe:

http://www.8052.com/forum/read.phtml?id=30901&top=


Das einzig Wahre ist das Entprellen mittels Timerinterrupt.
Hier ein Beispiel. Die Routine ruft man einfach alle 10 ... 100ms auf:

http://www.specs.de/~danni/appl/soft/keyscan/index.htm


Peter

von Gerd (Gast)


Lesenswert?

Es soll durchaus Schaltungsentwürfe geben, bei denen man die wenigen 
Timer für wesentlich wichtigere Aufgaben braucht (z.B. für sehr schnelle 
Reaktionen) als für das Entprellen von Kontakten. Unter Umständen wird 
dann das Trennen der auf einen Timer vereinigten Aufgaben so komplex und 
unzuverlässig, dass der Widerstand und der Kondensator für 
Hardware-Entprellung vielleicht doch die einfachere Lösung ist. Ich gebe 
gerne zu, dass Timer, die für nix Wichtigeres gebraucht werden, die 
einfachere Lösung sind.

Und wer seinen Taster schonen will, schaltet eben einen weiteren 100 Ohm 
Begrenzungswiderstand davor. Auch das ist vom Aufwand her nicht gerade 
wahnsinnig.

MfG
Gerd

von mikki merten (Gast)


Lesenswert?

Einen Timer nur für die Kontaktentprellung zu benutzen ist doch in 
Ordnung wenn mann diesen frei hat. In den meisten Schaltungen wird 
jedoch meistens ein Timer für zyklische Interrupts verwendet. Der 
zusätzliche Code innerhalb der Interrupt-Routine lässt sich minimieren 
und besteht z.B. beim AVR unter günstigen Bedingungen aus 3 Zeilen Code 
und benötigt bei 8 MHz ganze 0,375 µs für die Ausführung. Unter 
ungünstigen Voraussetzungen steigt der Zeitbedarf auf vielleicht 2 µs. 
Daher ziehe ich eine Softwarelösung in jedem Falle der mit zusätzlichen 
Kosten verbundenen Hardware vor. Ausserdem haben Kondensatoren dieser 
Grössenordnung an Datenleitungen die zeitweise anderweitig (SPI/ISP) 
genutzt werden nichts zu suchen.

von Peter D. (peda)


Lesenswert?

Üblicher Weise nutze ich in fast allen Programmen bereits einen Timer. 
Es ist dann kein Problem im Interrupt mehrere Aufgaben auszuführen:

Ich erzeuge z.B. etwa 1000Hz zum Ansteuern einer Multiplexanzeige.
Diese teilt dann ein Byte runter auf 64Hz zum Entprellen und als 
Kurzzeittimer und dann wieder ein Byte auf 1Hz für Uhrzeit und Datum 
usw.
Die 64Hz nehme ich deshalb, weil ich so auch 2Hz, 4Hz, ... 32Hz einfach 
abgreifen kann, z.B. als Blinktakt für LEDs.
Auch eine 2. UART in Software kann mit demselben Timer realisiert 
werden.

Fazit:
Alle benötigten Zeitintervalle können mit nur einem Timer erzeugt 
werden.

Der andere Timer ist dann noch frei, um z.B. bei einem Frequenzmesser 
die unbekannte Frequenz zu zählen.

Auch Timer T1 im PWM-Mode kann weiterhin einen Interrupt erzeugen und so 
als zentraler Zeitbasisinterrupt verwendet werden.


Peter

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.