Differences

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

Link to this comparison view

Next revision
Previous revision
de:examples:digi:led [2010/09/01 13:45] – angelegt Wemberde:examples:digi:led [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 7: Line 7:
 [{{  :examples:digi:led:led_picture.jpg?150|5 mm legged LED}}] [{{  :examples:digi:led:led_picture.jpg?150|5 mm legged LED}}]
  
-Leuchtdioden sind Halbleiter die Licht abstrahlen, wenn Strom in  Durchlassrichtung durch die Diode fließt. Die Abkürzung LED steht für "light-emitting diode". Es gibt verschiedenfarbige Leuchtdioden, mittlerwiele ist sogar weißes Licht möglich. Wie jede normale Diode auch hat die LED 2 Kontakte - Anode und Kathode. In Zeichnungen ist die Anode mit einem "+" markiert und die Kathode mit einem "-".+Leuchtdioden sind Halbleiter die Licht abstrahlen, wenn Strom in  Durchlassrichtung durch die Diode fließt. Die Abkürzung LED steht für "light-emitting diode". Es gibt verschiedenfarbige Leuchtdioden, mittlerweile ist sogar weißes Licht möglich. Wie jede normale Diode auch hat die LED 2 Kontakte - Anode und Kathode. In Zeichnungen ist die Anode mit einem "+" markiert und die Kathode mit einem "-".
  
-[{{  :examples:digi:led:led_designator.png?150|Schematic symbol of LED and it's polarity}}]+[{{  :examples:digi:led:led_designator.png?150|Schematische Darstellung einer LED and ihrer Polarität}}]
  
-Wenn Strom in Durchlassrichtung durch die LED fließt, ist die Anode mit der positiven Spannung und die Kathode mit der negativen Spannung verbunden. Die Spannung der LED hängt vonder Farbe der LED ab: lange Wellenlängen (rot) ~2V, kürzere Wellenlängen (blau) ~3V. Die Stromverbrauch einer LED ist in der Regel nicht mehr als ein paar dudzend mW. Die Stromstärke darf daher nicht zu hoch sein, wenn größere Stromstärken oder Spannungen verwendet werden kann die LED zerstört werden.+Wenn Strom in Durchlassrichtung durch die LED fließt, ist die Anode mit der positiven und die Kathode mit der negativen Spannung verbunden. Die Spannung der LED hängt von der Farbe der LED ab: lange Wellenlängen (rot) ~2V, kürzere Wellenlängen (blau) ~3V. Die Stromverbrauch einer LED ist in der Regel nicht mehr als ein paar Dutzend mW. Die Stromstärke darf daher nicht zu hoch sein, wenn größere Stromstärken oder Spannungen verwendet werden kann die LED zerstört werden.
  
-Wenn die LEDs nur zur Beleuchtung verwendet werden, sollte man spezielle elektrische Schaltkreise verwenden welche die Spannung und die Stromstärke für die LEDs regulieren. +Wenn die LEDs nur zur Beleuchtung verwendet werden, sollte man spezielle elektrische Schaltkreise verwendenwelche die Spannung und die Stromstärke für die LEDs regulieren. 
-Jedoch werden LEDs sehr oft als Indikatoren genutzt und werden direkt vom Microcontroller mit Strom versorgt. Da die Betriebsspannung eines Microcontrollers höher ist, als die der LEDs, muss ein Widerstand in Serie mit der LED geschaltet werden um die Stromstärke zu reduzieren. Anleitungen wie man den richtigen Widerstand errechnet können im Kapitel Elektronik gefunden werden.+Jedoch werden LEDs sehr oft als Indikatoren genutzt und direkt vom Mikrocontroller mit Strom versorgt. Da die Betriebsspannung eines Mikrocontrollers höher ist, als die der LEDs, muss ein Widerstand in Serie mit der LED geschaltet werden um die Stromstärke zu regulieren und für den nötigen Spannungsabfall zu sorgen. Das Kapitel "Elektronik" enthält Anleitungen zur Berechnung des richtigen Widerstands.
  
-LEDs werden in vielen Formen gefertigt. Die meisten LEDs haben eine 3mm oder 5mm Durchmesser große runde Hülle und zwei lange metallische Pins. Der längere Pin ist die Anode, der kürzere die Kathode. "Surface mounted casing" LEDs (SMD - Surface Mounted Device) haben ein T Symbol unten um die Polarität anzugeben. Das Dach des T's steht für die Anode und der Fuß des T für die Kathode.+LEDs werden in vielen Formen gefertigt. Die meisten LEDs haben runde eine Hülle mit 3mm oder 5mm Durchmesser und zwei lange metallische Pins. Der längere Pin ist die Anode, der kürzere die Kathode. "Surface mounted casing" LEDs (SMD - Surface Mounted Device) sind unten mit einem T gekennzeichnet, um so die Polarität anzugeben. Das Dach des T's steht für die Anode und der Fuß markiert die Kathode.
  
-[{{  :examples:digi:led:led_pin_markings.png?200|Polarity of legged and SMD LED's}}]+[{{  :examples:digi:led:led_pin_markings.png?200|Polarität von legged und SMD LED's}}]
  
 ===== HomeLab Übung 1 ===== ===== HomeLab Übung 1 =====
  
-Das HomeLab Controller Control Modul hat eine rote LED, dessen Anode ist über einen Widerstand an die +5V Stromversorgung angeschlossen und die Kathode am ATmega128 pin PB7. +Das HomeLab Controller Controllermodul hat eine rote LED, dessen Anode über einen Widerstand an die +5V Stromversorgung angeschlossen ist und dessen Kathode am ATmega128 Pin PB7. 
-Um die LED an und auszuschalten muss PB7 als Output Pin definiert werden und entweder High/Low gesetzt werden. Wenn der Pin high gesetzt wird ist die LED aus, wenn der Pin low gesetzt wird ist die LED an. Grundsätzlich ist es möglich die LED zu anzubringen, dass die Anode am PB7 angeschlossen wird und die Kathode geerdet wird (Widerstand nicht vergessen) - +Um die LED anund auszuschalten muss PB7 als Output Pin definiert werden und entweder high oder low gesetzt werden. Wenn der Pin high gesetzt wird ist die LED aus, wird er low gesetzt ist die LED an. Grundsätzlich ist es möglich die LED so anzubringen, dass die Anode am PB7 angeschlossen wird und die Kathode geerdet wird (Widerstand nicht vergessen) - 
-Dann leuchtet die LED wenn der Pin high gesetzt ist und der LED ist aus wenn der PIN low ist.+dann leuchtet die LED wenn der Pin high gesetzt ist und der LED ist aus wenn der Pin low ist.
  
-Alle praktischen Beispiele für das HomeLab Kit, inklusive LEDs schalten, nutzen die HomeLab Pin Library. Die Pins Library hat den Datentyp //pin//, welcher die Addressen des Pins mit Register und Bitmaske des Pins enthält. Wenn man eine Pin Typ Variable im Programm erschaffen möchte kann man es mit der Macrofunktion PIN machen, der Pin kann im ganzen Programm genutzt werden, ohne Register benutzen zu müssen. +Alle praktischen Beispiele für das HomeLab kit, inklusive LEDs schalten, nutzen die HomeLab Pin Bibliothek. Die Pin Bibliothek hat den Datentyp //pin//, welcher die Addressen des zum Pin gehörigen Register und der Bitmaske des Pins enthält. Wenn eine Pin Variable mit der Makrofunktion Pin im Programm erschaffen und initialisiert wird, kann der Pin mit dieser Variable im gesamten Programm genutzt werden, ohne Register benutzen zu müssen. 
-Hier sind 2 Beispielprogramme, welche exakt das gleiche machen. Das eine Programm nutzt die Homelab Library, das andere nicht.+Hier sind 2 Beispielprogramme, welche exakt das gleiche machen. Das eine Programm nutzt die HomeLab Bibliothek, das andere nicht.
  
 <code c> <code c>
 // //
-// HomeLab Controller module LED test program+// HomeLab Controllermodule LED Testprogramm
-// The code is base on HomeLab library.+// Der Cose basiert auf der HomeLab Bibliothek.
 // //
 #include <homelab/pin.h> #include <homelab/pin.h>
  
 // //
-// LED pin configuration.+// LED Pin Konfiguration.
 // //
 pin debug_led = PIN(B, 7); pin debug_led = PIN(B, 7);
  
 // //
-// Main program+// Hauptprogramm
 // //
 int main(void) int main(void)
 { {
- // Configuring LED pin as an output+ // konfiguriert LED Pin als Output
  pin_setup_output(debug_led);  pin_setup_output(debug_led);
   
- // Lighting up LED+ // Aufleuchten der LED
  pin_clear(debug_led);   pin_clear(debug_led);
 } }
Line 56: Line 56:
 <code c> <code c>
 // //
-// HomeLab Controller module LED test program+// HomeLab Controllermodul LED Testprogramm
-// The code directly accesses registers.+// Der Code greift direkt auf Register zu.
 // //
 #include <avr/io.h> #include <avr/io.h>
  
 // //
-// Main program+// Hauptprogramm
 // //
 int main(void) int main(void)
 {  {
- // Configuring LED pin as an output+ // Konfiguriert LED Pin als Output
  DDRB |= (1 << 7);   DDRB |= (1 << 7);
   
- // Lighting up LED+ // Aufleuchten der LED
  PORTB &= ~(1 << 7);  PORTB &= ~(1 << 7);
 } }
 </code> </code>
  
-Das erste Beispiel nutzt die Pins Library (//pin.h// Datei). Zuerst wird eine Pin Typ Variable genannt //debug led// erschaffen, welche die Information über den LED Pin erhält.+Das erste Beispiel nutzt die Pin Bibliothek (//pin.h// Datei). Zuerst wird eine Pin-Typ Variable //debug led// erschaffen, welche Informationen über den LED Pin enthält.
 Im Hauptprogramm wird dieser Pin mit //pin_setup_output// als Output gesetzt. Im Hauptprogramm wird dieser Pin mit //pin_setup_output// als Output gesetzt.
-Danach wird der Pin als Low gesetzt: //pin_clear//. Das Ergebnis: die LED leuchtet. +Danach wird der Pin low gesetzt: //pin_clear//. Das Ergebnis: die LED leuchtet. 
-Im zweiten Beispiel werden keine Variablen genutzt. Um den LED Output zu verändern wird die Port B Datenrichtung und Output Registerwerte verändert. Der Leser der mehr über den AVR weiss merkt, dass in beiden Beispielen kein Befehl nötig ist um die LED zum leuchten zu bringen, da der Standardoutput des AVR 0 ist. Der Vollständigkeit halber wird es jedoch hier beschrieben.+Im zweiten Beispiel werden keine Variablen genutzt. Um die LED als Output zu markieren und zum Leuchten zu bringen, werden die Datenrichtung des Port B  und die Output Registerwerte verändert. Der Leserder mehr über den AVR weiß bemerkt, dass in beiden Beispielen kein Befehl nötig ist um die LED zum leuchten zu bringen, da der Standardoutputwert des AVR 0 ist. Aus Gründen der Vollständigkeit wird es jedoch hier beschrieben.
  
-Was ist der Unterschied zwischen dem Gebrauch von Library und Register? Der Unterschied ist Komfort - Library ist einfacher, weil man die Registernamen nicht wissen muss und deren Auswirkungen. Der wichtigste Vorteil an der Library ist jedoch die Anpassbarkeit+Was ist der Unterschied zwischen dem Gebrauch von Bibliothek und Register? Der Unterschied liegt im Komfort - Die Bibliothek ist einfacher, weil man die Registernamen und deren Auswirkungen nicht kennen muss. Der entscheidende Vorteil der Bibliothek ist jedoch die Anpassungsfähigkeit
-Mit Registern muss man jedes mal im Prgramm die Registernamen und Bitmasken ändern um einen Pin zu ändern. Mit der Library muss man nur am Anfang des Programms die Variable initialisierenWenn man  mit Registern arbeitet gibt es jedoch einen Vorteil - wenn man einen Pin nutzt macht man das sofort und nicht über den Programmspeicher und zeitfressenden Funktionen. Jedoch sind die neuren AVR-GCC Kompiler Versionen so schlau, dass sie die Library Funktionen direkt so transformieren, dass sie direkte Befehle für die Registermanipulation ausführen, so hals würde man die Register direkt im Programm ansprechen. Die Kompiler können aber nur den Code optimieren wenn sie meine konstanten Variable arbeiten und nicht mit unbeständigen Variablen die sich während des Programms oder mit Arrays ändern.+Arbeitet man mit Registern müssen im Programm stets die Registernamen und Bitmasken geändert werden um einen Pin zu ändern. Nutzt man die Bibliothek muss dieses nur am Anfang, bei Initialisierung der Variable erfolgenDie Nutzung von Registern hat jedoch einen entscheidenden Vorteil: Die Nutzung eines Pins erfolgt direkt und nicht über den Programmspeicher und zeitfressenden Funktionen. Jedoch sind die neuren AVR-GCC Kompiler Versionen so schlau, dass sie die Bibliotheksfunktionen zu direkten Befehle für die Registermanipulation transformieren, so als würde man die Register direkt im Programm ansprechen. Die Compiler können den Code aber nur dann optimieren wenn sie mit konstanten Variablen arbeiten und nicht mit unbeständigen Variablen die sich während des Programms oder mit Arrays ändern.
  
-Der folgende Programmcode ist eine partielle Pin Operations Library, um die Prozeduren mit Pinvariblen zu erklären. Es wird für Anfänger nicht einfach sein es zu verstehen, da es C-Sprache Pointer nutzt die nicht in diesem Buch beschrieben werden, aber eine Menge Material über Pointer kann in Büchern und natürlich im Internet gefunden werden. +Der folgende Programmcode ist ein Teil der Pin Operations Bibliothek, um die Vorgehensweise mit Pin Variblen zu erklären. Es wird für Anfänger nicht einfach sein zu verstehen, da C-Sprache Pointer genutzt werden, die nicht in diesem Buch beschrieben sind. Es gibt jedoch sehr viel Material über Pointer in Büchern und natürlich im Internet.
-The next program code is partial pin operations library. Its purpose is to explain the procedures with pin variables. It might not be understandable for the beginners as it uses C language pointers which are not covered in this book, but a lot of materials about pointers can be found from books and internet.+
  
 <code c> <code c>
-// Macro constant for defining register pointer+// Makrokonstante um Register-Pointer zu definieren
 #define _REG_PTR_ volatile uint8_t * #define _REG_PTR_ volatile uint8_t *
    
 // //
-// Pin data type+// Pin Datentyp
 // //
 typedef struct pin typedef struct pin
Line 102: Line 101:
    
 // //
-// Macro function for pin variable initializing+// Makrofunktion für Initialisierung der Pin Variable
 // //
 #define PIN(port_char, bit_index) \ #define PIN(port_char, bit_index) \
Line 113: Line 112:
    
 // //
-// Configuring pin as output+// Konfiguriere Pin als Output
 // //
 inline void pin_setup_output(pin pin) inline void pin_setup_output(pin pin)
Line 121: Line 120:
    
 // //
-// Setting pin high+// Setze Pin high
 // //
 inline void pin_set(pin pin) inline void pin_set(pin pin)
Line 129: Line 128:
    
 // //
-// Setting pin low+// Setze Pin low
 // //
 inline void pin_clear(pin pin) inline void pin_clear(pin pin)
Line 139: Line 138:
 ===== HomeLab Übung 2 ===== ===== HomeLab Übung 2 =====
  
-Zusätzlich zum Controllermodul sind LEDs auch am digtalen I/O Modulboard+Zusätzlich zum Controllermodul befinden sich LEDs auch auf der digtalen I/O Modulplatine
-Sie sind elektrische genau so angeschlossen wie auf dem Controllerboard, also die Kathode ist am AVR Pin angeschlossen. Die Rote LED ista m PC5 Pin angeschlossen, die Gelbe am PC4, und die Grüne am PC3. Das HomeLab Library basierende Beispielprogramm sieht wie folgt aus:+Sie sind elektrisch genau so angeschlossen wie auf dem Controllerboard, die Kathode ist also am AVR Pin angeschlossen. Die rote LED ist am PC5 Pin angeschlossen, die gelbe am PC4, und die grüne am PC3. Das auf der HomeLab Bibliothek basierende Beispielprogramm sieht folgendermaßen:
  
 <code c> <code c>
 // //
-// HomeLab Digital i/o module LED test program.+// HomeLab Digitales i/o Modul LED Testprogramm.
 // //
 #include <homelab/pin.h> #include <homelab/pin.h>
  
 // //
-// LED's pin configuration.+// LED Pin Konfiguration.
 // //
 pin led_red    = PIN(C, 5); pin led_red    = PIN(C, 5);
Line 156: Line 155:
  
 // //
-// Main program+// Hauptprogramm
 // //
 int main(void) int main(void)
 { {
- // Configuring LED pins as an output+ // Konfiguriere LED Pins als Output
  pin_setup_output(led_red);  pin_setup_output(led_red);
  pin_setup_output(led_yellow);  pin_setup_output(led_yellow);
  pin_setup_output(led_green);   pin_setup_output(led_green);
   
- // Lighting up green LED+ // Aufleuchten der grünen LED
  pin_clear(led_green);   pin_clear(led_green);
   
- // Turn off red and yellow LED+ // Ausschalten der roten und gelben LED
  pin_set(led_red);  pin_set(led_red);
  pin_set(led_yellow);  pin_set(led_yellow);
Line 174: Line 173:
 </code> </code>
  
-~~DISCUSSION~~+~~Diskussion~~
de/examples/digi/led.1283348737.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