This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| de:avr:io [2010/07/22 19:32] – angelegt Wember | de:avr:io [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Digitale Inputs/ | ||
| + | Sämtliche Busse des AVR sind sowohl lesbar als auch beschreibbar, | ||
| + | |||
| + | * PORT - Zur Festsetzung des Outputwertes | ||
| + | * PIN - Zum Auslesen des Inputs am Bus | ||
| + | * DDR - Zur Festlegung der Richtung des Busses. | ||
| + | |||
| + | <box 100% round # | ||
| + | |||
| + | Aufgabe: Die Pins 0-3 von Bus B sollen Input sein, die Pins 4-7 Output, setzen Sie Pin 5 „high“ und lesen Sie die Werte der Pins 0-3 in einer Variable aus. Der C-Code sieht wie folgt aus: | ||
| + | |||
| + | <code c> | ||
| + | #include < | ||
| + | |||
| + | int main() | ||
| + | { | ||
| + | unsigned char x; | ||
| + | |||
| + | // Pins 0-3 als Input, 4-7 als Output | ||
| + | DDRB = 0xF0; | ||
| + | |||
| + | // Setzt Pin 5 " | ||
| + | PORTB |= (1 << PIN5); | ||
| + | |||
| + | // Liest den Wert der Pins 0-3 | ||
| + | x = PINB & 0x0F; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | In diesem Beispiel, wird der Input im Hi-Z (hochohmig) Modus verwendet. Im Wesentlichen liegt an diesem Input keine Ladung an. Diese Betriebsart könnte hilfreich sein, wenn der Pin als Datenbus genutzt wird. Es ist sinnvoll, einen Pull-Up-Widerstand für den Input zu nutzen, wenn der Pin als Taste, Schalter oder anderes verwendet wird wobei er mit der Masse verbunden ist. Hierfür muss das korrespondierende Output-Bit im Inputmodus „high“ gesetzt werden. Als Folge daraus muss zwischen Stromversorgung und Input ein Widerstand eingefügt werden, welcher die Inputspannung hoch hält, bis irgendetwas sie heruntersetzt. Ein solcher Pull-Up-Widerstand dient dazu, ein Floaten des Inputs aufgrund von Reibungselektrizität oder anderen Einwirkungen zu verhindern. Nachdem der Controller gebootet wurde, befinden sich sämtliche IO Busse standardmäßig im hochohmigen Inputmodus. | ||
| + | |||
| + | Normalerweise werden die Pins am IO Bus, neben den logischen Anschlüssen, | ||