Statusanzeige mit einer LED - Problemlösung

[-Kneip | Franzen-]
Bei der Produktion eines Autos in America soll ein intelligentes System dem Fahrer ein Zeichen geben, wenn der Airbag beschädigt oder nicht funktionstüchtig ist. Dieses Zeichen soll durch eine Leuchtdiode angezeigt werden. Falls eine Beschädigung vorliegt, soll diese Leuchtdiode aufklimmen. Beim Start des Autos soll diese ebenfalls kurz aufleuchten.

[ NASA ]

Ein Mikrokontroller der über 4 Ports verfügt(A-D) soll über Port B , Pin 6 (PB5) eine Leuchtdiode (LED) angeschlossen werden.

Es muss ein Wiederstand zwischen Port und Diode gelegt werden damit die Spannung geregelt wird. (Vorwiderstand, damit die Diode nicht kaputt geht)

[ Kleine | Krawczyk ] [ Grafische Problemlösung ]

Genauere Informationen zum PAP (Programmablaufplan)

Weitere Informationen zu PAP hier

Download Diagram Designer zum erstellen von PAP´s
[ Lauten | Baeumler | Krempel | Bach | Roos]

#include <avr/io.h> 

main()
{
    DDRB = 0b00100000 ; 


    PORTB = 0b00100000 ;

     while ( 1 )

    {
        ;
    }

}

 

//Bibliothek wird eingebunden
  Das Register aus avr/io.h wird mit in die Funktion eingebunden 
//Hauptfunktion wird gestartet
// Hauptfunktion wird geöffnet
// Datenrichtung bestimmt | alternativ Hex: 0x20
  Data Direction Register B = für jedes einzelne Bit in Port B wird
  bestimmt ob es für Ein- oder Ausgabe verwendet werden soll  
// Ausgang auf "Ein" setzen | alternativ Hex: 0x20
  Port B =Ausgabe- Register 

//solange Bedingung wahr.....
 
wenn bei while (1) Bedingung immer wahr   


//...tue nichts


// Hauptfunktion wird geschlossen

Tipps zum Stilgerechten formatieren

[ root ]

Um sehen ob das geschriebene Programm auch das macht was es soll, bietet es sich an das Programm vorher simulieren zu lassen. Dabei bietet sich das AVRStudio von Atmel an. Man bekommt das Programm unter http://www.atmel.com/dyn/produc ts/tools_card.asp?tool_id=2725 ( Achtung die Datei ist über 26 MB groß ). Nach dem Starten sollte sich folgendes Fenster öffnen:

AVRStudio

Startbildschirm

Dort klickt ihr auf <Open> und wählt dann in euerem Projektverzeichniss die ".cof" Datei aus. In dem folgenden Dialogfenster müsst ihr noch den verwendeten Controller einstellen und schon kann es losgehen...

AVR

Studio Controller auswählen

Es sollte sich jetzt folgender Bildschrim zu sehen sein:

AVRStudio simulieren

Dort kann man das Programm jetzt ablaufen lassen. Im rechten unteren Teil kann man sich die Variablen anzeigen lassen. Dies geht über einen Rechtsklick und <add watch>.
Das Programm kann man dann über die Buttons rechts oben starten.

AVRStudio

Buttons

Dann viel Spass beim Ausprobieren ;-) ...

( ein kleiner Hinweis noch : Man sollte nicht versuchen irgendwelche Warteschleifen simulieren zu lassen... Selbst auf schnellen PCs dauert das sehr, sehr lange... )


Um einen C-Code auf den Prozessor zu bekommen klicke hier

nach oben

[Türsteher]

[ C im Vergleich zu Assembler und Hex-Code ]

C im Vergleich zu Assembler und Hex-Code

 

 

C:

Gerade für die AVR-Mikrocontroller empfiehlt sich der Einsatz der Programmiersprache C. Der Befehlssatz und die Architektur dieser Mikrocontroller wurden speziell für die Programmiersprache C optimiert. Als Hochsprache stellt C Konstrukte für Datenstrukturen und Programmablaufsteuerung zur Verfügung und ermöglicht dennoch durch die direkte Einbindung von Assemblerbefehlen eine hardwarenahe Programmierung in zeitkritischen Programmabschnitten. Dadurch können auch komplexe Anwendungen strukturiert entwickelt werden. Durch die Verwendung von Bibliotheken können komplexere Funktionen eingebunden werden. Gängige C-Compiler optimieren den Programmcode sehr effizient. Die gerade bei der Fehlersuche nötige Transparenz der Entwicklungsumgebung bleibt erhalten.

 

Der etwas höhere Aufwand im Vergleich zu Basic lohnt sich aber schnell, da man die AVR-Mikrocontroller mit C gut strukturiert programmieren kann und dabei trotzdem die volle Kontrolle über die Hardware behält. Durch den Einsatz von Bibliotheken muss nicht jede Grundfunktion selbst entwickelt werden. Fertige und getestete Bibliotheken stehen zur Verfügung. Wenn komplexere Anwendungen entwickelt werden, zahlt sich der höhere Einarbeitungsaufwand aus, da C einen guten Kompromiss als hardwarenahe Hochsprache darstellt.

Assembler:

Diese Programmiersprache ist allerdings für Einsteiger schlecht geeignet, da hier neben dem Erlernen der Sprache auch genaue Kenntnisse über die Hardware des Mikrocontrollers erforderlich sind. Da in Assembler direkt mit den elementaren Befehlen des Mikrocontrollers programmiert wird, kann hier bei sorgfältiger Planung des Programms ein optimales und genau definiertes Laufzeitverhalten erreicht werden.

Die Entwicklung komplexerer Anwendungen ist allerdings extrem aufwändig, da keine aus Hochsprachen bekannten Konstrukte für Datenstrukturen und Programmablaufsteuerung zur Verfügung stehen und die Programme bei zunehmender Größe schnell unübersichtlich werden.

Hexadezimales Zahlensystem (Hex-Code):

Große Binärzahlen haben den Nachteil, dass sie sehr unübersichtlich sind.
Um dem Abhilfe zu schaffen hat man das Hexadezimalsystem eingeführt.
Dabei werden 4 Bit einer Dualzahl durch ein hexadezimales Zeichen ersetzt.
Da eine 4-Bit Dualzahl 16 Zustände annehmen kann, wir aber nur 10 dezimale Zahlen kennen, hat man dem hexadezimalen Zahlensystem 6 Buchstaben hinzugefügt.

Nennwerte: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Basis: 16
Größter Nennwert: F
Stellenwerte: 160 = 1, 161 = 16, 162 = 256, usw.

Zum besseren Verständnis der Zählweise im hexadezimalen Zahlensystem dient diese Tabelle. Jeweils 4 Dualstellen bilden eine Hexadezimalstelle.

Dezimal

Binär/Dual

Hexadezimal

0

0

0

0

0

0

1

0

0

0

1

1

2

0

0

1

0

2

3

0

0

1

1

3

4

0

1

0

0

4

5

0

1

0

1

5

6

0

1

1

0

6

7

0

1

1

1

7

8

1

0

0

0

8

9

1

0

0

1

9

10

1

0

1

0

A

11

1

0

1

1

B

12

1

1

0

0

C

13

1

1

0

1

D

14

1

1

1

0

E

15

1

1

1

1

F

 


[-Diwo | Pfeifer-]

[-Hardwaretest-]

Bauanleitung zum Belöten der Platine:

Widerstands-Farbcode-Tabelle