Hallo zusammen, ich habe eine allgemeine Frage zur Verdrahtung meines Atmega8. Im Anhang befindet sich der Schaltplan. Ich bin ein absoluter Newbie auf dem Gebiet. Dem entsprechend ist mein Wunsch: ein simpler zweiter Button, der ebenfalls die LED (oder auch eine zweite LED) zum Leuchten bringen kann. Softwaretechnisch ist das kein Problem, aber hardwaretechnisch steh ich aufm Schlauch... Wie verdrahte ich einen zweiten Schalter genau? Ich bin ratlos. Das derzeitige Programm läßt die LED leuchten, wenn INT0/PIND2 auf Masse liegt (eben durch drücken des Schalters). Nun muss ich also einen zweiten Schalter auf die Platine bringen, sodass der ebenfals an 5 V liegt und durch Drücken geerdet wird, sodass INT1/PIND3 0 Volt bekommt, also aktiviert wird. Wie kann ich nun den zweiten Schalter ebenfalls an die 5 V packen, ohne dass, wenn ich den zweiten Schalter drücke, auch der erste geerdet wird? Sorry, wenn mein Vokabular hier und da noch etwas newbiemäßig klingt. Jeder fängt mal klein an, gell? Danke im Voraus. Thomas
Hallo, und warum machst Du es dann nicht einfach?!? 10k Widerstand von 5V zum neuen Taster, anderes Ende des Tasters an GND, Verbindung Taster-Widerstadn an INT1/PD3. Das ist doch wirklich nun nur abmalen. Das "wie" ist doch beim vorhandenen Taster nicht zu übersehen... Gruß aus Berlin Michael
für jemanden, der das tagtäglich macht, ist das sicherlich kein Problem. Für jemanden, der das zum 1. Mal macht, schon. Ich nehme nicht an, dass du von der ersten Sekunde an mit den Schaltplänen klargekommen bist, oder? Wie auch immer. Hab das gemacht, was du vorgeschlagen hast, und es klappt wunderbar. Danke für deine Hilfe. Jetzt gehts weier. :) Die 10kOhm sind notwendig weil ich sonst die ganze Schaltung kurzschließen würde, ist das richtig? Müssen es denn 10kOhm sein? Oder mindestens? Warum musste ich bei der Programmierung des Atmega8 nicht explizit schreiben, dass die Ports lowaktiv sein sollen? Ist lowaktiv Standard? Warum musste ich die Richtung der Ports nur angeben, wenn es sich um Ausgänge handelt (DDRC = 1<<5; für PC5 als Ausgang)? Sind sonst die Ports standardmäßig Eingänge? (Sowas wie DDRC = 0b00000000;) Faszinierendes Thema, die uCs. Werd mich da mal ordentlich reinwurschteln. Macht Spaß. Danke nochmals und Gruß Thomas
Standardmaßig sind alle Portpins als Eingang definiert. Sonst würde beim Anlegen der Betriebs-Spannung möglicherweise ein Bauteil bzw. der µC Schaden nehmen. Dies hängt ja von der Außenbeschaltung ab. Den 10k am Taster kannst du auch weglassen, dann muß nur der interne Pullup-Widerstand aktiviert werden.
>Müssen es denn 10kOhm sein? Oder mindestens? Der genaue Wert ist nicht von Belang. Es würde auch mit 5 kOhm oder 20 kOhm genausogut funktionieren. Je kleiner der Widerstand ist, desto mehr Strom fließt, solange der Taster gedrückt ist. Dieser Strom soll natürlich nicht riesengroß werden. Das begrenzt den Wert des Pullup-Widerstands nach unten. Je größer der Pullup ist, desto weniger Strom fließt zwar, aber desto schwächer ist der Pin auch mit VCC verbunden, und hastenichgesehn kommt irgendwann doch mal ein durch irgendwas in die Tastenleitung induzierter Störpuls durch und wird irrtümlich als Tastendruck gewertet. Das begrenzt den Pullup-Wert nach oben. Aber wie schon gesagt: Die AVRs haben diese Widerstände bereits eingebaut (jeder Pin hat seinen eigenen). Man muss die Gewünschten nur enablen, indem man im PORT-Register das entsprechende Bit für diesen Pin auf "1" setzt (bei DDR-Bit = 0). Siehe Datenblatt, wie immer. Dann können die externen Widerstand wegfallen. Der Hauptvorteil dabei liegt aber weniger in den gesparten Bauteilkosten, als vielmehr im stark vereinfachten Platinenlayout: Von z. B. 10 Tastern 10 Leitungen zu 10 µC-Pins zu führen - das ist machbar, aber zusätzlich noch 10 Leitungen zu 10 Widerständen, deren andere 10 Enden auch noch mit VCC verbunden werden wollen - das ist übel).
Hallo, @Thomas P. (thomas47058): nein, ich bin auch nicht von der ersten Sekunde an mit Schaltplänen klargekommen, ich wollte Dich damit auch nicht ärgern. Auf dem Schaltplan fehlt übrigens ein wichtiges Detail: die Leitung OUT vom LM317 ist die +5V-Leitung und da gehört auch ein entsprechender Spannungspfeil ran. Ist zwar nur ein Zeichenfehler in der Schaltung, irritiert aber sicher auch, wenn man sich noch nicht so gut auskennt. Alle +5V-Pfeile sind ja letztlich verbunden und eben diese +5V erzeugt der LM317 an seinem OUT-Pin. Deine anderen Fragen wurde ja teileweise schon beantwortet, hierzu vielleicht noch etwas: >Warum musste ich bei der Programmierung des Atmega8 nicht explizit >schreiben, dass die Ports lowaktiv sein sollen? Ist lowaktiv Standard? lowaktiv ist nur eine Vereinbarung desjenigen, der eine Schaltung baut oder ein IC entwirft. Es sagt ja nur aus: ich erkläre hiermit den Zustand Low zum aktiven Zustand, also bei Low soll etwas passieren, High ist der Ruhezustand. Das kann man natürlich genausogut andersrum definieren, man muß es nur wissen und beachten. Das low-aktive häufiger zu finden ist als high-aktiv, hat auch historische Gründe. TTL-ICs konnten nur nach GND merkliche Ströme vertragen, etliche andere Logik-ICs und µC konnten auch nur nach Low z.B. 20mA vertragen, bei High dagegen nur weniger als 1mA. TTL-ICs erkannten offene Eingänge als H-Pegel, lowaktiv war also auch eine gewisse Sicherheit, daß eine fehlende Verbindung eines Signals kein ungewolltes Ereignis auslöste. Trifft zum großen Teil heute nicht mehr so zu, aktuelle AVR z.B. können sowohl gegen GND als auch gegen +5V 20mA treiben. Andererseits gibt es die internen PullUp-Widerstände bei den AVR, die als Pegel auch wieder High an den offenen Eingang legen und somit ein low-aktiv nötig machen. Die Entwickler des AVR hätten ja auch interne PullDown-Widerstände einbauen können, haben sie aber nicht... ;-) Gruß aus Berlin Michael
^@michael: Vielen Dank für die Erklärung! Das hat wirklich weitergeholfen. Ob low oder high, ein Blick ins Datenblatt wird zur Routine werden müssen. In nächster Zeit würde ich gerne eine Temperaturfühler basteln. Also einfach: Temperatur über 20 Grad > grüne LED, Temp drunter > rote LED. Einen solchen Sensor habe ich auch schon ausfindig gemacht. Allerdings ist dort die Rede von 1-Wire-Bus System. Ich weiß, hier gibts schon genügend Beiträge zu genau diesem Thema. Habt ihr auf die Schnelle einen guten Literatur Tipp, was dieses 1-Wire-Bus System angeht? Oder schlagt ihr für den Anfang vor auf dieses System zu verzichten? Nochmals vielen Dank an euch. Ihr macht 'n klasse Job. :)
1-Wire-Sensor... hmmm... soll jetzt keine Miesmacherei sein, aber ich würde mir den für später aufheben. Dieser Bus ist nicht ganz easy. Wenn man nicht genau verstanden hat, wie er funktioniert, und man die nötigen Timings im µs-Bereich nicht einhält, bringt man da nix zum Laufen. Nimm doch einfach einen KTY-Temperatursensor. Zusammen mit einem Widerstand baust Du einen Spannungsteiler und die Spannungsmessung erledigst Du mit dem ADC. So kannst Du Dich mit dem ADC vertraut machen, und das ist ja auch nicht verkehrt.
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.