Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
de:avr:io [2010/07/22 16:32] – angelegt Wemberde:avr:io [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Digitale Inputs/Outputs ====== ====== Digitale Inputs/Outputs ======
  
-Alle Busse am AVR sind sowohl lesbar als auch schreibbar, wenn sie im normalen logischen Input/Output (I/O) Modus verwendet werden. AVR Busse werden mit Buchstaben des lateinischen Alphabets benannt: A,B,C usw.. Einige AVR haben keine Bus A auch wenn es einen Bus B gibt. +Sämtliche Busse des AVR sind sowohl lesbar als auch beschreibbar, wenn sie im normalen logischen Input/Output (I/O) Modus verwendet werden. AVR Busse werden nacheinander mit lateinischen Buchstaben (A, B, C usw.) benanntAllerdings können einige AVR zwar einen Bus B, jedoch keinen Bus A besitzen. Jeder Bus ist ein 8-Bit Bus und jedes Bit hat normalerweise seinen eigenen Pin am Controller. Pins werden mit Ziffern, beginnend bei Null, versehen. Für beide Richtungen im Bus gibt es ein separates Register. Zusätzlich gibt es noch ein weiteres Register welches die tatsächliche Richtung des Bus festlegt, ein Bitwert von 1 markiert den Bus als Output und ein Wert von 0 als Input. Damit hat der Bus drei Register:
-Jeder Bus ist ein 8-Bit Bus und jeder Bit hat normalerweise seinen eigenen Pin am Controller. +
-Pins werden mit Nummern gezählt und fangen bei Null an. Für beide Richtungen im Bus gibt es ein seperates Register. Zusätzlich gibt es noch ein Register der die tatsächliche Richtung des Bus entscheidet, ein Bitwert von 1 markiert den Bus als Output und eine 0 als Input. Damit hat der Bus drei Register:+
  
-  * PORT - um den Outputwert des Bus zu setzen. +  * PORT - Zur Festsetzung des Outputwertes 
-  * PIN - um den Input des Bus zu lesen +  * PIN - Zum Auslesen des Inputs am Bus 
-  * DDR - Um die Richtung zu setzen.+  * DDR - Zur Festlegung der Richtung des Busses.
  
-<box 100% round #EEEEEE|Example>+<box 100% round #EEEEEE|Beispiel>
  
-Aufgabe: Mache die Pins 0-3 an Bus B zum Input, die Pins 4-7 zum Output, setze Pin 5 "highund lies die Werte der Pins 0-3 zu einer Variable. Der C-Code sieht wie folgt aus:+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> <code c>
Line 33: Line 31:
 </box> </box>
  
-In this examplethe inputs are used in Hi-Z (high impedancemodeIn essence, the input does not put virtually any load on the source of the signalThis mode might be necessaryif the pin is used as a data busIt is wise to use a pull-up resistor on the inputif the pin is used for a button, a switch or any other solution, where the input is connected to ground. For that, the output bit of the corresponding pin must be set high in the input mode as a result, a resistor is placed between the supply voltage and the input, which keeps the input voltage high unless it is being pulled down by something. The goal of a pull-up resistor is to prevent floating of the input due to statical electricity and other interferences. After booting the controller, all IO buses are in the high impedance input mode by default. +In diesem Beispielwird der Input im Hi-Z (hochohmigModus verwendetIm Wesentlichen liegt an diesem Input keine Ladung anDiese Betriebsart könnte hilfreich seinwenn der Pin als Datenbus genutzt wirdEs ist sinnvolleinen Pull-Up-Widerstand für den Input zu nutzen, wenn der Pin als TasteSchalter 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 verhindernNachdem der Controller gebootet wurdebefinden sich sämtliche IO Busse standardmäßig im hochohmigen Inputmodus.
- +
-Normalerweise werden die Pins am IO Bus auch für andere Peripherals genutzt, neben den logischen Anschlüssen. Falls man eine alternative Funktion des Pins nutzen willkann man den IO Pin Mode im AVR Datasheet finden. Zum Beispiel wenn man ein ADC Kanal als Input nutzen willsollte der Pin im Input Modus seinund um ein PWM Signal zu generieren, sollte er im Output Mode seinAuf der anderen Seitesuchen sich einige Peripherals den IO Pin Modus selbst aus.+
  
 +Normalerweise werden die Pins am IO Bus, neben den logischen Anschlüssen, auch für andere Peripherieschnittstellen genutzt. Soll eine alternative Funktion des Pins genutzt werden, kann der zugehörige IO Pin-Modus im AVR Datenblatt abgelesen werden. Wenn beispielsweise ein ADC Kanal als Input dienen soll, sollte der Pin im Input Modus sein. Um jedoch ein ein PWM Signal zu generieren, sollte er im Output Modus betrieben werden. Es gibt jedoch auch Peripheriemodule, die den IO Pin-Modus eigenständig auswählen.
de/avr/io.1279816340.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0