an den
Anfang |
Problembeschreibung
Nach dem Einschalten soll die rote LED vorne
unterhalb des ASUROs dauerhaft leuchten. |
 |
|
an den
Anfang |
Schriftliche Problemlösung
in Kurzform:
erste Befehl: initialisiere PortD6
zweiter Befehl: schalte PortD6
an dritter Befehl: while
(1)
(PortD6 auf Ausgang setzen)
(Front LED an)
(Endlosschleife)
|
|
|
an den
Anfang |
Technische Aspekte
zur Problemlösung

zum Vergrößern auf die Abbildung klicken
Simulation mit PSPICE
|
|
|
an den
Anfang |
| Arbeiten mit
ASURO-Funktionen
auch im AVR Studio

1.
asuro.h (aus FirstTry) in obiges Verzeichnis kopieren
2.
asuro.c (aus FirstTry, hier zum Download bereits mit geändertem
Pfad: #include "avr/asuro.h" in Zeile 29)
mit in den Projektordner, z. B. "projekt_front_led"
kopieren
3. => rechte Maustaste auf Source Files, dann Add Existing
Source File (s) => asuro.c

4. Im Quelltext asuro.h mit <avr/asuro.h> einbinden
|
|
|
an den
Anfang |
|
Grafische Problemlösung
mit ASURO-Funktionen - der Programmablaufplan
Das erste
Symbol [ start main
] stellt den Start der Hauptfunktion dar.
Mit dem darauf folgenden
Symbol [ Init() ] wird der erste Prozess des Systems beschrieben, der alle weiteren
Prozesse startet. Es werden folgende Prozesse gestartet: Um diese zu visualisieren, benutzt man die
einfachen Rechtecke.
1. Infrarot wird eingeschaltet
2.
RS 232 (serielle Schnittstelle) wird eingeschaltet
3. .... (es folgen viele weitere Befehle)
4. Switchschalter wird
eingeschaltet
5. Switchfunktion ebenfalls
eingeschaltet
Sobald
diese Prozesse ausgeführt wurden, wechselt man automatisch in die
nächste Funktion. Jetzt
wird der bereits vorgeschriebene Front LED Befehl [Front LED
(on)]
ausgeführt!
1.
Port D6 auf Ausgang gerichtet
2. Port
D6 eingeschaltet.
Am Ende
kommen main-Funktion und die damit verbundenen Befehle in eine
Endlosschleife [ while (1) ].
Nur solange diese Schleife auf 1
steht (1 = wahr), ist die main-Funktion
gezwungen auf diesem Befehl zu verweilen.
Programmablaufplan
als Dateityp *.dia produced by S.M., H.L., D.N., J.F., N.S., M.P.
|

zum Öffnen der größeren Darstellung im pdf-Format auf die
Abbildung klicken
|
|
an den
Anfang |
|
Umsetzung in den Quelltext
mit ASURO-Funktionen hier noch
mit dem Notepad ++ (winAVR) und speziellem Makefile
#include
<asuro.h>
// asuro.h einbinden, Header-bzw. Bibliotheksdatei
int main ( void
)
// jedes C-Programm hat eine main-Funktion
{
Init
();
// Funktionen definieren
FrontLED ( ON
);
// Front LED einschalten
while ( 1
)
// Endlosschleife
{
// solange Bedingung wahr (1 = wahr)
;
// tue nichts
}
return
0;
// Der Rückgabewert der main-Funktion
}
// mit Datentyp int gibt 0 zurück
|
|
|
an den
Anfang |
|
Grafische Problemlösung
"ganz dicht am Mikrocontroller"
Programmablaufplan als
Dateityp *.dia
und hier die Software, um den Programmablaufplan zu bearbeiten:
Dia für Windows
|

|
|
an den
Anfang |
|
Umsetzung in den Quelltext
"ganz dicht am Mikrocontroller"
#include <avr/io.h>
// io.h einbinden, Header-bzw. Bibliotheksdatei
int main ( void )
// jedes C-Programm hat eine main-Funktion {
// beim Aufrufen der main-Funktion wird nichts
// (engl. void) übergeben
DDRD = 0b01000000;
// Daten-Richtung einstellen, Bit 6 auf 1 (Ausgang)
PORTD = 0b01000000;
// Port anschalten, Port D6
// Zählung von rechts beginnend mit Bit 0
while ( 1
)
// Endlosschleife
{
// solange Bedingung wahr (1 = wahr)
;
// tue nichts
}
return
0;
// Der Rückgabewert der main-Funktion
}
// mit Datentyp int gibt 0 zurück
|
|
|
an den
Anfang |
|
Vertiefungsfragen zum Thema
1. Frage Beschreiben
Sie, wie man im AVR Studio ein neues Projekt anlegt.
=> Antwort - Im Welcome Fenster den Button "New Projekt" anklicken.
- Projekt
Typ, Namen und Speicherort auswählen.
- Im nächsten Fenster
Plattform und Chip auswählen.
2. Frage
Beschreiben
Sie den Programmablauf des Projektes Front LED on mit eigenen Worten.
=> Antwort - Der Port D6 wird initialisiert und damit auf Ausgang gesetzt.
- Der
Port D6 wird eingeschaltet, die Spannung wird auf die Front LED
geschaltet, die
daraufhin leuchtet.
- Es wird
eine Schleife mit der Bedingung 1 (immer wahr) geschaltet (Endlosschleife). So lange
die Bedingung erfüllt ist, tut der Asuro nichts anderes.
3. Frage
Nennen Sie
die zwei Befehle, mit denen man sagt, was der Port D6 tun soll im
Projekt "Front LED on".
=> Antwort - DDRD = 0b01000000;
- PORTD = 0b01000000;
4. Frage
Mit welchen
Befehlen werden die "ASURO-Funktionen" eingebunden?
=> Antwort - #include <avr/asuro.h>
- Init();
5. Frage Suchen Sie die Fehler! (3 Fehler)
#include
<asuro.hex>
// asuro.h einbinden, Header-bzw. Bibliotheksdatei
int main ( void
) // jedes C-Programm hat eine
main-Funktion
{
Init
();
// Funktionen definieren
FrontLED ( ON );
// Front LED einschalten
while ( 0
)
// Endlosschleife
{ // solange Bedingung wahr (1 = wahr)
; // tue nichts
}
return
0;
// Der Rückgabewert der main-Funktion
}
// mit Datentyp int gibt 0 zurück
=> Antwort
#include
<asuro.h>
// asuro.h einbinden, Header-bzw. Bibliotheksdatei
int main ( void
)
// jedes C-Programm hat eine main-Funktion
{
Init
();
// Front LED einschalten
FrontLED ( ON
); //
Funktion definieren
while ( 0
) // Endlosschleife
{
// solange Bedingung wahr (1 = wahr)
;
// tue nichts
}
return
0;
// Der Rückgabewert der main-Funktion
}
// mit Datentyp int gibt 0 zurück
|
|
|
|
Abgeschlossene Schülerprojekte:
|
Stand:
01.12.2007 |
<= zurück zu
Technische Informatik
|