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