www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ISP und Kondensatoren


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

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.