Aufgabe Vorschlag A - 3 - Assemblerprogrammierung und Mik… · Abitur Hessen Technische Informatik LK 2022
Thema: Assemblerprogrammierung und Mikrocontrolleraufbau · Aus der Prüfung LK (2022)
Aufgabenstellung
Die Steuerungs- und Überwachungsorgane (Material 2) arbeiten über einen Mikrocontroller. Dieser verarbeitet ein Start/Stopp-Signal und das Störsignal aus Aufgabe 2. Je nachdem, welche Sorte Saatgut auszubringen ist, ist die Dosierung einzustellen. Grobes Saatgut benötigt eine weitere Öffnung des Schiebers als feines Saatgut. Zudem ist die Geschwindigkeit des Särads einstellbar, um in Kurven nicht zu viel Saatgut auszubringen. Ergänzend ist es erforderlich, das restliche Saatgut komplett ablassen zu können. Dafür kann die Bodenklappe des Saatgutbehälters geöffnet werden. Die Steuerung wird über die Ein- und Ausgänge des Mikrocontrollers vorgenommen (Material 7).
Zu Beginn der Traktorfahrt startet das Mikrocontrollerprogramm automatisch über die Spannungsversorgung. Der Funktionsablauf wird im Folgenden beschrieben:
Solange keine Störung (Störung bei Eingangssignal LOW) vorliegt wird der Funktionsablauf fortgesetzt.
Zuerst wird der Saatguttyp abgefragt (Grobes Saatgut entspricht HIGH, feines Saatgut entspricht LOW).
Erst wenn der Bediener mit dem Start/Stopp-Schalter das Säen startet (Start bei HIGH), wird der Schieber geöffnet. Der Schieber wird über zwei Bits gesteuert. Die Bitkombination LOW-LOW sorgt für ein komplettes Schließen des Schiebers.
Die Bitkombination LOW-HIGH sorgt für die Öffnung für feines Saatgut.
Die Bitkombination HIGH-LOW sorgt für die Öffnung für grobes Saatgut.
Die Bitkombination HIGH-HIGH sorgt für das vollständige Öffnen des Schiebers.
Das Särad wird in Bewegung gesetzt. Das erfolgt, solange das Signal für die Kurvenfahrt LOW ist, mit dem Aufruf des Unterprogramms SOW_STRAIGHT.
Bei einer Kurvenfahrt erhält der Mikrocontroller ein HIGH-Signal. Während der Kurvenfahrt wird die Geschwindigkeit des Särads gedrosselt. Das erfolgt über den Aufruf des Unterprogramms SOW_CURVE.
Bei Stopp (Start/Stopp-Schalter LOW) wird der Schieber geschlossen (LOW-LOW) und das Särad angehalten. Das Anhalten erfolgt über die Ausgabe von vier LOW-Signalen an den entsprechenden Ausgangsbits.
Der geschlossene Schieber wird durch einen Endlagenschalter zurückgemeldet.
Nachdem der Motor des Särads gestoppt wurde und die Schieberendlage erreicht wurde, ist es möglich die Bodenklappe zu öffnen, um das Saatgut komplett abzulassen. Der Bediener schaltet „Saatgut ablassen“ ein (HIGH). Daraufhin wird die Bodenklappe mit einem HIGH-Signal für 30 s geöffnet. Das Unterprogramm WAIT_30s sorgt für eine Pause von 30 s.
Material 2
Saatgutbehälter und Dosierorgane
https://tu-dresden.de/ing/maschinenwesen/int/ast/ressourcen/dateien/publikationen/Vorlesungsskripte/drillmaschinen.pdf?lang=de (abgerufen am 26.01.2021).
Material 7
Portbelegung
Port 1 des Mikrocontrollers
Pin 7 · Pin 6 · Pin 5 · Pin 4 · Pin 3 · Pin 2 · Pin 1 · Pin 0
· ↓ · ↓ · ↓ · ↓ · ↓ · ↓ · ↓
· Schieber
Bit 1 · Schieber
Bit 0 · Bodenklappe · Motorbit 3 · Motorbit 2 · Motorbit 1 · Motorbit 0
Port 2 des Mikrocontrollers
Pin 7 · Pin 6 · Pin 5 · Pin 4 · Pin 3 · Pin 2 · Pin 1 · Pin 0
· · ↑ · ↑ · ↑ · ↑ · ↑ · ↑
· · Störung · Start/Stopp · Saatguttyp · Kurvenfahrt · Saatgut
ablassen · Endlage
Schieber
Material 8
Struktogramm des Unterprogramms SOW_CURVE
3.1
Implementieren Sie die vollständige Portinitialisierung.
3.3
Erläutern Sie den Nutzen, eine Störung mit einem LOW-Signal zu melden.
3.4
Das Unterprogramm SOW_CURVE steuert den Motor des Särads über eine Vier-Bit-Kombination an und ist durch das Struktogramm in Material 8 beschrieben. Implementieren Sie das Unterprogramm SOW_CURVE.
Hinweis: Das Unterprogramm WAIT_10ms ist als gegeben vorauszusetzen.

Lösung
Nach den offiziellen Korrekturhinweisen
3.1 Implementieren Sie die vollständige Portinitialisierung.
Lösung: ```c LDI r16, 0b01111111 OUT 0x04, r16 LDI r17, 0b00000000 OUT 0x0A, r17 ```
3.3 Erläutern Sie den Nutzen, eine Störung mit einem LOW-Signal zu melden.
Lösung: Drahtbruchsicherheit / Erkennung einer Leitungsunterbrechung
3.4 Implementieren Sie das Unterprogramm SOW_CURVE.
Lösung: ```c SOW_CURVE: sbis 0x09,2 RET sbi 0x05,0 sbi 0x05,1 cbi 0x05,2 cbi 0x05,3 call WAIT_10ms cbi 0x05,0 sbi 0x05,2 call WAIT_10ms cbi 0x05,1 sbi 0x05,3 call WAIT_10ms sbi 0x05,0 cbi 0x05,2 call WAIT_10ms jmp SOW_CURVE ```
Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium
Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.
Aufgabe Vorschlag B - 3 - Assemblerprogrammierung und Mik… · LK 2022 ›