-
-
Erfahrener Benutzer
Roboter Genie
Hey Basteltisch,
wie wäre es wenn du die ganzen Anleitungen mal von vorne durchgehst und nicht quer reinspringst und dich dann wunderst, dass nichts klappt.
Mal ein Paar elektrische Grundlagen:
High = VCC und damit in der Regel 3~5V
Low = GND und damit in der Regel 0V
Und nun zu einigen AVR-Basics
Wenn ein Pin als Eingang fungiert, misst er keinen Strom, sondern nur die anliegende Spannung, Details zu den Schaltschwellen findest du im Datasheet des jeweiligen AVRs.
Wenn ein Pin als Eingang konfiguriert ist, kann man ferner einen sogenannten Pullup-Widerstand aktivieren, also ein Widerstand von ~50kOhm gegen die Versorgungsspannung. Ist der Pin nicht weiter elektrisch belastet, liegt bei aktiviertem Pullup also ein High-Signal an.
Ist ein Pin als Ausgang konfiguriert, versucht der AVR je nach gesetztem Wert diesen Pin entweder auf Low zu ziehen (und fungiert damit als GND) oder aber auf High (und ist damit dann VCC).
Ein Ausgangspin kann also sowohl Stromquelle als auch Stromsenke sein.
Ein Pin ist ein einzelner Anschluss deines AVR, ein "Beinchen".
Ports fassen bis zu acht Pins zu einer Organisationsenheit zusammen, die jeweils gemeinsam über ein Register konfiguriert werden. (1 Byte hat 8 Bit, also für jeden Pin ein Bit ...)
Die "einfachen" Ein-/Ausgabefunktionen haben drei Register:
1. Das Register DDRx
Im DDR steht für jeden Pin ein Bit, das angibt, ob der Pin als Eingang oder Ausgang fungiert.
2. Das Register PORTx
Im PORT-Register steht für jeden Pin ein Bit, dass angibt, ob der Pin auf High oder Low gesteuert werden soll, ist der Pin ein Eingang, aktiviert ein gesetztes Bit den Pullup des jeweiligen Pins
3. Das Register PINx
Mit dem PIN-Register kann man zwei Dinge tun, ist der Pin ein Eingang, so ist sein Bit im PIN-Register gesetzt wenn ein High-Signal anliegt.
Ist ein Pin ein Ausgang und man setzt das Bit eines Pins, so wird dessen Ausgangssignal umgeschaltet (High statt Low bzw. umgekehrt).
x steht jeweils für den entsprechenden Port-Buchstaben, also ist PC0 der erste Pin (und damit das erste Bit in allen betreffenden Registern) im Port C, die Register sind also DDRC, PORTC und PINC
Bascom versteckt viele dieser Feinheiten hinter Befehlen wie "Config".
Zurück zu deinem Vorschlag:
Wie du vielleicht erkennst, ist der Fehler weniger der Code als vielmehr die Schaltung. Dein Schaltungsentwurf KANN nicht funktionieren.
Der AVR bildet nicht intern irgendwelche Verbindungen zwischen ein und Ausgängen.
Er misst an Eingängen Spannungen und an Ausgängen liefert er eine Spannung, und falls nötig auch in begrenzten Mengen Strom.
Der Strom den der AVR ausgibt stammt aus dessen Versorgungspins, die jeweils mit (A)VCC und (A)GND beschriftet sind.
Darum funktioniert auch die Originalschaltung an PC0: Wird der Pin auf Ausgang + Low konfiguriert, dann existiert ein Stromkreis von VCC durch LED, Widerstand, PC0, den AVR zu dessen GND-Anschluss. Wird der Pin auf Eingang oder Ausgang + High konfiguriert, fließt kein Strom (in ersterem Falle weil der Eingang sowieso keine Stromquelle/-senke ist, und im zweiten Fall weil auf beiden Seiten der Diode die gleiche Spannung anliegt).
mfG
Markus
PS: Am besten setzt du dich einmal gründlich mit einigen Tutorials und den Datasheets der AVRs auseinander, die elektrischen Grundlagen dazu würden natürlich auch nicht schaden.
Ein gutes Buch ist auch sehr hilfreich!.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen