
Specifications | m |
Business section |
Specifications | m |
Outline | Teilaufgabe 1: Geigerzähler für Licht Teilaufgabe 2: Static Cycling Scheduling |
Suggested Link Details/Purchase | |
Content | Universität Salzburg PS Echtzeitsysteme Fachbereich Informatik Dipl.-Ing. Michael Holzmann, Dipl.-Ing. Gerald Stieglbauer AUFGABENBLOCK 2 24. März 2004 Teilaufgabe 1: Geigerzähler für Licht Kennenlernen und Befassen mit BrickOS: Architektur, API, Task Management (z.B. Scheduling), allokieren von Ressourcen. Implementieren Sie den „Geigerzähler für Licht“ aus Aufgabe 1 in „C“ unter BrickOS unter Verwendung der BrickOS API. Funktionalität: Erkennen von Licht mit dem Lichtsensor. Hohe Lichteinstrahlung hohe Piepfrequenz des Systempiepers, geringe Lichteinstrahlung geringe Frequenz. Anzeige des gemessenen Wertes als Integer am LCD Display. Teilaufgabe 2: Static Cycling Scheduling Bauen Sie einen fahr- und lenkfähigen Legoroboter. Der Roboter soll durch ein Kontrollprogramm, das zufällig Fahranweisungen generiert, gesteuert werden. Wenn der Roboter auf ein Hindernis stößt soll zurückgesetzt werden und durch (wiederum zufällige) Wahl einer neuen Fahrtrichtung versucht werden, das Hindernis zu umsteuern. Das Erkennen von Hindernissen erfolgt mittels der Berührungssensoren. Das Kontrollprogramm soll basierend auf dem Prinzip des „static cycling scheduling“ aufgebaut werden: Die zur Ausführung der Kontroll bzw. Steuerungsaufgabe notwendigen Berechnungen werden periodisch (zyklisch) wiederholt ausgeführt. Dazu werden in der Hauptschleife die einzelnen Berechnungstasks aufgerufen: while(1) /* Scheduler loop */ { task1(.); /* Function call */ task2(.); /* Function call */ task3(.); /* Function call */ . taskN(.); /* Function call */ delay_until_next_time_unit(); /* Periodic schedule */ } Jeder Task erledigt seine Berechnung und kehrt unmittelbar zur Hauptschleife zurück! In solchen Modellen ist kein busy waiting keine ‚tight loops’ und keine interne Synchronisation erlaubt (simple tasks). Das Kontrollprogramm soll in folgende Teilaufgaben (Tasks) untergliedert werden: motor_control, forward_run, direction_change und obstacle_handling. motor_control ist der einzige Task, der direkt auf die Motoren zugreifen darf. Er erhält Steueranweisungen von allen anderen Tasks. Jede Steueranweisung wird solange ausgeführt, bis ihre Dauer abgelaufen ist oder die Steueranweisung durch die eines anderen Tasks überschrieben wurde. forward_run versucht das Fahrzeug in geradeaus Fahrt zu halten. direction_change generiert zufällig Richtungsänderungen (geringe Wahrscheinlichkeiten wählen, sonst kommt der Roboter nicht von der Stelle!) und obstacle_handling erkennt ob ein Hindernis berührt wurde und versucht das Hindernis durch Abdrehen des Fahrzeuges zu umgehen. Dem motor_control Task werden die Steuerbefehle über folgende Kommandostruktur weiter gegeben: /* The duration in ms for a time unit */ #define TIME_UNIT_IN_MSEC 100 /* The different directions of the vehicle (add more yourself) */ enum dir_t {turn_left, turn_right, forward, backward, stop, idle}; /* The type of the global data structure */ struct driving_command { int priority; enum dir_t direction; int speed; long int duration; } |
Navigation | Previous Page / Next Page |
Suggested Link Details/Purchase | |
Following Datasheets | Angabeblatt_zu_UEbung_3 (1 pages) Angabeblatt_zu_UEbung_4 (2 pages) angebot-10w-MD (1 pages) angebot-11s-MD (1 pages) angebote_website (5 pages) Angebotsinserat_e (2 pages) angkzm100_61 (150 pages) animals_mandalas-1 (6 pages) Anisoara_Moldoviceanu (8 pages) Anisotropy_FL-3 (4 pages) |
Check in e-portals![]() |
World-H-News Products Extensions Partners Automation Jet Parts |
Sitemap Folder | group1 group2 group3 group4 group5 group6 group7 group8 group9 group10 group11 group12 group13 group14 group15 group16 group17 group18 group19 group20 group21 group22 group23 group24 group25 group26 group27 group28 group29 group30 group31 group32 group33 group34 group35 group36 group37 group38 group39 group40 group41 group42 group43 group44 group45 group46 group47 group48 group49 group50 group51 group52 group53 group54 group55 group56 group57 group58 group59 group60 group61 group62 group63 group64 group65 group66 group67 group68 group69 group70 group71 group72 group73 group74 group75 group76 group77 group78 group79 group80 group81 group82 group83 group84 group85 group86 group87 group88 group89 group90 group91 group92 group93 group94 group95 group96 group97 group98 group99 group100 Prewious Folder Next Folder |