Übungen zu Systemnahe Programmierung in C (SPiC)

Ähnliche Dokumente
Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Peter Wägemann, Moritz Strübe (Lehrstuhl Informatik 4) Wintersemester 2014/2015

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Peter Wägemann, Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Sommersemester 2015

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Tafelübungen. Inhalt. Organisatorisches. Entwicklungsumgebung

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Tafelübungen. Aufgaben

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Tafelübungen. Organisatorisches. Entwicklungsumgebung

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Tafelübungen. Organisatorisches. Entwicklungsumgebung

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Organisatorisches: Tafelübungen. Prolog: Windows-Login

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Sebastian Maier (Lehrstuhl Informatik 4) Übung 1. Sommersemester 2016.

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Wanja Hofer, Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2012

Inhalt Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC) Organisatorisches: Tafelübungen. Prolog: Windows-Login

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Tafelübungen. Organisatorisches. Entwicklungsumgebung

Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Rainer Müller (Lehrstuhl Informatik 4) Sommersemester Zur Bearbeitung der Übungen ist ein Windows-Login nötig Jetzt Passwort setzen:

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 1. Wintersemester 2015/2016

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Tafelübungen. Organisatorisches. Entwicklungsumgebung

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Rechnerübungen. Tafelübungen

Prolog: Windows-Login Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Rainer Müller (Lehrstuhl Informatik 4) Sommersemester Zur Bearbeitung der Übungen ist ein Windows-Login nötig Jetzt Passwort setzen:

Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Prolog: Windows-Login. Organisatorisches: Tafelübungen

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2013

Rainer Müller (Lehrstuhl Informatik 4) Sommersemester Zur Bearbeitung der Übungen ist ein Windows-Login nötig Jetzt Passwort setzen:

Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Prolog: Windows-Login Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Rainer Müller, Moritz Strübe (Lehrstuhl Informatik 4) Sommersemester 2014

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Globale Variablen

Prolog: Windows-Login Übungen zu Grundlagen der Systemnahen Programmierung in C (GSPiC)

Übungen zu Systemnahe Programmierung in C (SPiC)

U1 Organisatorisches U1 Organisatorisches

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2018/19

U1-1 Login in die Windows-Umgebung. U1-2 Entwicklungsboards. U1-2 Entwicklungsboards. Tafelübungen: Windows-Umgebung

Rechnerübung: Versuchen Sie (1) und (2) auf den Linux-Systemen

Rechnerarchitektur, Einführung in die Laborübungen

U1-1 Login in die Windows-Umgebung. U1-2 Tafelübung. U1-3 Rechnerübungen (SPiC) Tafelübungen: Windows-Umgebung

U1 Organisatorisches U1 Organisatorisches

U1 1. Übung. Organisatorisches. Arbeitsumgebung. Aufgabe 1. SPiC - Ü U1.1

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18

Rechnerarchitektur, Einführung in die Laborübungen

Übungen zu Systemnahe Programmierung in C (SPiC)

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Schnittstellenbeschreibung. Inhalt

Wer möchte, kann sein Programm auch auf echter Hardware testen

Toolchain: vom Quellcode zum ladbaren Binärabbild

U1-1 Organisatorisches. U1-1 Umsetzung von Evaluationsanmerkungen. U1-2 Arbeitsumgebung. Organisatorisches. keine Vorlesung.

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Rechnerübung: Versuchen Sie (1) und (2) auf den Linux-Systemen. Zur Nutzung der Windows-PCs zunächst mit dem Kommando

Sebastian Maier (Lehrstuhl Informatik 4) Übung 4. Sommersemester 2017

Inhalt. Aufgabe 4: LED-Modul Hinweise Testen des Moduls Sommersemester 2015

U4 Grundlagen der C-Programmierung

µversion 2 Einführung

Mikrocontrollertechnik. F5 Erstes Programm. AVR Studio 4

Selbstbau-USB-Programmiergerät für AVR

Systemnahe Programmierung in C Übungen Moritz Strübe, Michael Stilkerich Universität Erlangen-Nürnberg Informatik 4, 2010 U2.fm

Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2010 U1.fm

U1-1 Login in die Windows-Umgebung. U1 1. Übung. U1-2 Organisatorisches. U1-2 Rechnerübungen. Zur Nutzung der Windows-PCs zunächst mit dem Kommando

Wiederholung: Zugriff auf AVR-Prozessor-Register. Aufgabe 3: 7seg-Modul der SPiCboard-Bibliothek

Code Composer Studio 4.x

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18

U4 Grundlagen der C-Programmierung

U5-2 Register beim AVR-µC

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Implementierung von Interruptbehandlungen. Interrupts

Praktikum DST (MRT Teil) 1. Termin

Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Moritz Strübe, Rainer Müller (Lehrstuhl Informatik 4) Sommersemester 2014

PG5 Starter Training PG5 Core und Webeditor 5 Daniel Ernst DE

GdI2 - Systemnahe Programmierung in C Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2006 U4.fm

C/C++ Debugging mit CDT unter Eclipse

Übungen zu Systemnahe Programmierung in C (SPiC)

Wiederholung: Zugriff auf AVR-Prozessor-Register. Aufgabe 3: 7seg-Modul der SPiCboard-Bibliothek

U3-1 Register beim AVR-μC. U3 3. Übung. U3-2 I/O-Ports des AVR-μC. 1 Überblick. 2 Makros für Register-Zugriffe. 1 Überblick

Wiederholung: Zugriff auf AVR-Prozessor-Register

Eclipse Tutorial.doc

d) Was passiert, wenn das folgende Programmstück übersetzt und ausgeführt

Übung - Erforschen von FTP

KR-mega32-16 rev. 2.3 Thomas Krause, Krause Robotik

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Kurzanleitung Eclipse

U3 Grundlagen der AVR-Programmierung

Aufgabe 3. Aufgabe 4.

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Sommersemester 2018

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Interrupts. Inhalt. Interrupts. Synchronisation

Informatik II Übung 1

Erste Schritte der Programmierung in C

Erster Schritt Vom Herunterladen bis zum Programmieren

Programmierung für Mathematik HS12 Übung 1

KONFIGURATOR-SOFTWARE (S009-50) Kurzanleitung

Informatik II - Übung 01

Arduino und Amateurfunk (1)

Firmware-Update für CHERRY ehealth-bcs Produkte Terminal ST-1503 und Tastatur G

Einrichten des Fernzugriffs auf den Server der VU Datenverarbeitung für TPH V1.0,

Praktikum Rechnerarchitektur

Einführung in das Programmieren

Transkript:

Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier, Heiko Janker (Lehrstuhl Informatik 4) Übung 1 Wintersemester 2015/2016

Inhalt Organisatorisches Entwicklungsumgebung Anleitung Aufgabe 1 und Hands-on Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 2 34

Inhalt Organisatorisches Tafelübungen Aufgaben Rechnerübungen Bei Problemen Entwicklungsumgebung Anleitung Aufgabe 1 und Hands-on Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 2 34

Tafelübungen Tafelübung Do 10:15 11:45 (im Raum 01.153-113) Ablauf der Tafelübungen: 1. Besprechung der alten Aufgabe 2. Praxisnahe Vertiefung des Vorlesungsstoffes 3. Vorstellung der neuen Aufgabe 4. ggf. Entwicklung einer Lösungsskizze der neuen Aufgabe 5. Hands-on: gemeinsames Programmieren Folien nicht unbedingt zum Selbststudium geeignet Anwesenheit, Mitschrift Übersicht aller SPiC-Termine: https://www4.cs.fau.de/lehre/ws15/v_spic/#woch Semesterplan: https://www4.cs.fau.de/lehre/ws15/v_spic/#sem Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 3 34

Aufgaben 8 Aufgaben: 4 x Mikrocontroller (SPiCboard) 4 x Linux Lösungen: Abgabe unter Linux Lösung wird automatisch auf Ähnlichkeit mit allen anderen, auch älteren Lösungen verglichen abgeschriebene Lösungen bekommen 0 Punkte Im Zweifelsfall bei einem Übungsleiter melden Programm nicht übersetzbar: -50% der möglichen Punkte Bei Warnungen des Compilers: Je Warnung -2 Punkte Kommentare im Code helfen euch und dem Korrektor Nur die Aufgabenstellung lösen Code auskommentieren Lieber Teilaufgaben richtig, als alles, aber falsch lösen Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 4 34

Bonuspunkte Abgegebene Aufgaben werden mit Übungspunkten bewertet Umrechnung in Bonuspunkte für die Klausur (bis zu 10% der Punkte) Bestehen der Klausur durch Bonuspunkte nicht möglich Bonuspunkte für die Klausur ab 50% der erreichbaren Übungspunkte Bonuspunkte können nicht in nächste Semester übernommen werden Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 5 34

Rechnerübungen Rechnerübung Fr 14:15 15:45 (im Raum 01.153-113) Unterstützung durch Übungsleiter bei der Aufgabenbearbeitung Falls 30 Minuten nach Beginn der Rechnerübung (also um 14:45) niemand anwesend ist, kann der Übungsleiter gehen Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 6 34

Bei Problemen Diese Folien konsultieren Häufig gestellte Fragen (FAQ) und Antworten: https://www4.cs.fau.de/lehre/ws15/v_spic/uebung/faq.shtml Fragen zu Übungsaufgaben im EEI-Forum posten (darf auch von anderen Studienrichtungen verwendet werden!): https://eei.fsi.uni-erlangen.de/forum/forum/16 Bei speziellen Fragen Mail an Mailingliste, die alle Übungsleiter erreicht: i4spic@cs.fau.de Zum Beispiel auch, wenn kein Übungsleiter auftauchen sollte Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 7 34

Inhalt Organisatorisches Entwicklungsumgebung Hardware Funktionsbibliothek Wichtige Verzeichnisse Atmel Studio Anleitung Aufgabe 1 und Hands-on Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 7 34

Hardware: SPiCboard v1 Speziell für (G)SPiC angefertigte SPiCboards mit AVR-ATmega32-Mikrocontroller SPiCboard Version 1: LED Reihe (active low) LED 0 (Red 0, PD7) T (e ast nt er pr 0 el lt, PD 2) T (p ast re er llt 1,P D 3) JTAG Anschluss LED 1 (Yellow 0, PC0) Stromversorgung LED 2 (Green 0, PC1) LED 3 (Blue 0, PC6) LED 4 (Red 1, PC7) LED 5 (Yellow 1, PA7) 7 Segment Anzeigen LED 6 (Green 1, PA6) Einer (Connector PD1) LED 7 (Blue 1, PA5) Zehner (Connector PD0) PB4 PB3 ISP Anschluss Übungen zu SPiC (WS 2015/16) (active low) PB2 PB1 PB6 Fotowiderstand an ADC0 Lehrstuhl Informatik 4 PB5 Potentiometer (POTI) an ADC1 PB0 8 34

Hardware: SPiCboard v2 SPiCboard Version 2: Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 9 34

Hardware: Werkzeuge JTAG-Debugger (links) zur Überwachung der Programmausführung direkt auf dem Board (z. B. Schritt-für-Schritt-Ausführung, Untersuchung von Variablenwerten, etc.) ISP-Programmierer (rechts) zur Übertragung des eigenen Programms auf den Mikrocontroller Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 10 34

Aufgabenbearbeitung Betreute Bearbeitung der Aufgaben während der Rechnerübungen Hardware wird zur Verfügung gestellt Selbständige Bearbeitung teilweise nötig Ausleihe von SPiCboard, Kabeln und Programmierer/Debugger tagsüber möglich: Bei Harald Junggunst, Büro 0.046 (Erdgeschoss RRZE-Gebäude) Übliche Bürozeiten: von 8:00 bis 15:00 https://www4.cs.fau.de/~jungguns/ In 01.155N befinden sich weitere Windows-Rechner Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 11 34

Funktionsbibliothek libspicboard: Funktionsbibliothek zur Ansteuerung der Hardware Beispiel: sb_led_on(green0); schaltet 1. grüne LED an Direkte Konfiguration der Hardware durch Anwendungsprogrammierer nicht nötig Verwendung vor allem bei den ersten Aufgaben, später muss libspicboard teils selbst implementiert werden Dokumentation online: https://www4.cs.fau.de/lehre/ws15/v_spic/uebung/doc Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 12 34

Wichtige Verzeichnisse (1) Heimverzeichnis: Linux: Windows: Z:\ Projektverzeichnis: Linux: /proj/i4spic/loginname/ Windows: P:\ Die Lösungen müssen im Unterordner aufgabex gespeichert werden Das Abgabeprogramm sucht dort Ist durch andere nicht lesbar Wird automatisch erstellt Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 13 34

Wichtige Verzeichnisse (2) Vorgabeverzeichnis: Linux: /proj/i4spic/pub/ Windows: Q:\ Aufgabenstellungen unter aufgaben/ Hilfsmaterial und Binärmusterlösungen zu einzelnen Übungsaufgaben unter aufgabex/ Programm zum Testen der Einheiten auf den Boards unter boardtest/ libspicboard-bibliothek und -Dokumentation unter i4/ Kleine Hilfsprogramme unter tools/ Falls eines der Verzeichnisse Z:\, P:\, Q:\ nicht angezeigt wird: Windows Explorer Computer Netzlaufwerk verbinden Z:\ unter \\faui03\loginname P:\ unter \\faui03\i4spichome Q:\ unter \\faui03\i4spicpub Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 14 34

Entwicklungsumgebung: Atmel Studio Programmentwicklung mit Atmel Studio 6 unter Windows Vereint Editor, Compiler und Debugger in einer Umgebung Cross-Compiler zur Erzeugung von Programmen für unterschiedliche Architekturen Wirtssystem (engl. host): Intel-PC Zielsystem (engl. target): AVR-Mikrocontroller Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 15 34

Inhalt Organisatorisches Entwicklungsumgebung Anleitung CIP Login Atmel Studio Einrichtung Projekt anlegen Flashen Debuggen Abgabe Aufgabe 1 und Hands-on Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 15 34

Windows-Login Zur Bearbeitung der Übungen ist ein Windows-Login nötig Auf einem CIP-Rechner mit Linux-Passwort einloggen Ein Terminalprogramm öffnen und dort folgendes Kommando ausführen: /local/ciptools/bin/setsambapw (hängt auch auf einem Zettel an der Wand zum Raum 01.155-N) Kriterien für sicheres Passwort: Mindestens 8 Zeichen, besser 10 Mindestens 3 Zeichensorten, besser 4 (Groß-, Kleinbuchstaben, Zahlen, Sonderzeichen) Keine Wörterbuchwörter, Namen, Login, etc. Passwort-Generierung zum Aussuchen mit folgendem Kommando: pwgen -s 12 Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 16 34

Atmel Studio Einrichtung Achtung: Die Anleitung muss genau beachtet werden Start von Atmel Studio über: Start Alle Programme Atmel Atmel Studio 6.2 Falls Windows-Firewall einige Funktionen blockiert, auf Abbrechen klicken Importieren der Projektvorlage (einmalig): 1. File Import Project Template... 2. Q:\tools\SPiC_Template6.zip 3. Add to folder: <Root> 4. OK Meldung: Project Template has been successfully imported. Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 17 34

Atmel-Studio-Projekt Pro Übungsaufgabe ein neues Projekt anlegen: 1. File New Project... 2. Projekttyp: (G)SPiC-Projekt 3. Name: aufgabex, zum Beispiel aufgabe0 (Achtung: Kleinschreibung!) 4. Location: P:\ 5. Wichtig: Kein Häkchen bei Create directory for solution 6. OK Initiale C-Datei zu Projekt hinzufügen: 1. Rechts Solution Explorer auswählen 2. Orangefarbenes Projekt auswählen 3. Project Add New Item... 4. Dateityp: C File 5. Name: siehe Aufgabenstellung, jetzt test.c (Achtung: Kleinschreibung!) 6. Add Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 18 34

Programmieren (1) Beispielprogramm, um erste grüne LED einzuschalten: 1 #include <led.h> 2 3 void main(void) { 4 sb_led_on(green0); 5 while(1) { 6 /* Endlosschleife: 7 Mikrocontrollerprogramm darf nie terminieren */ 8 } 9 } Programm kompilieren mit Build Build Solution Programm wurde nur erfolgreich übersetzt, wenn unten steht: Build succeeded. Fehlermeldungen erscheinen ggf. unten Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 19 34

Programmieren (2) Achtung: Zwei verschiedene Compiler-Profile: Debug: Ohne Optimierung Build: Mit Optimierung Optimierung macht den Code sehr viel schneller, kann aber den Debugger verwirren Umstellung des Profils in Drop-Down-Box rechts neben dem Play-Button in der Werkzeugleiste Letztendlich soll jede Aufgabe mit Build kompiliert und getestet werden Die Build-Konfiguration wird von uns bewertet! Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 20 34

Flashen mit Programmierer Flashen: Kompiliertes Programm in den Speicher des Mikrocontrollers kopieren Programmierer auswählen: Project aufgabex Properties Tool Selected Debugger AVRISP mkii ISP Clock: 150,00 khz File Save Selected Items (CTRL-S) Schnellauswahl das Werkzeugs: Übersetzen, in den Speicher kopieren und laufen lassen: Debug Continue (F5) Beim ersten Mal ggf. Firmware-Upgrade durchführen Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 21 34

Debuggen (1) JTAG-Debugger zum Untersuchen des Programmablaufs live auf dem Board Debugger auswählen: Project aufgabex Properties Tool Selected Debugger JTAGICE mkii JTAG Clock: 200,00 khz File Save Selected Items Direkt in den Speicher kopieren und laufen lassen: Debug Continue (F5) Beim ersten Mal ggf. Firmware-Upgrade durchführen Sollte sich der Debugger eigenartig verhalten ist wahrscheinlich die Clock verstellt Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 22 34

Debuggen (2) Programm laden und beim Betreten von main() anhalten: Debug Start Debugging and Break Schrittweise abarbeiten mit F10 (Step Over): Funktionsaufrufe werden in einem Schritt bearbeitet F11 (Step Into): Bei Funktionsaufrufen wird die Funktion betreten Debug Windows I/O View: I/O-Ansicht gibt Einblick in die Zustände der I/O-Register; die Werte können dort auch direkt geändert werden Breakpoints unterbrechen das Programm an einer bestimmen Stelle Setzen durch Codezeile anklicken, dann F9 oder Debug Toggle Breakpoint Programm laufen lassen (F5 oder Debug Continue): stoppt, wenn ein Breakpoint erreicht wird Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 23 34

Binärabbild flashen Nötig, um vorgefertigte Binärabbilder (.hex-images) zu testen, z. B. Binärmusterlösungen unter Q:\aufgabeX Möglich mit Debugger (ICE) oder Programmierer (ISP) Tools Device Programming Tool: JTAGICE mkii bzw. AVRISP mkii Device: ATmega32 Interface: JTAG bzw. ISP Apply Verbindung überprüfen mit Device Signature Read Ergebnis: 0x1E9502 Eignet sich gut um die Verbindung zwischen PC und µc zu testen Memories Flash:.hex-Datei auswählen Program Nach erfolgreichem Flashen führt das Board das Programm direkt aus Ein Neustart des Programms ist durch Trennung und Wiederherstellung der USB-Spannungsversorgung möglich Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 24 34

Abgabe (1) Nach erfolgreichem Testen des Programms müssen Übungslösungen zur Bewertung abgegeben werden Wichtig: Bei Zweiergruppen darf nur ein Partner abgeben! Die Abgabe erfolgt unter einer Linux-Umgebung per Remote Login: Start Alle Programme PuTTY PuTTY Host Name: faui0sr0 bzw. von Zuhause faui0sr0.cs.fau.de Open PuTTY Security Alert mit Ja bestätigen Login mit Benutzername und Linux-Passwort Im erscheinenden Terminal-Fenster folgendes Kommando ausführen, dabei aufgabe0 entsprechend ersetzen: /proj/i4spic/bin/submit aufgabe0 Wichtig: Grüner Text signalisiert erfolgreiche Abgabe, roter Text einen Fehler! Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 25 34

Abgabe (2) Fehlerursachen aufgabex muss klein geschrieben sein Häkchen bei Create directory for solution nicht entfernt: Dateien sind im Ordner aufgabex/aufgabex.c-datei falsch benannt Anzeigen der abgegebenen Aufgabe /proj/i4spic/bin/show-submission aufgabe0 Zeigt abgegebene Version an Zeigt ggf. Unterschied zwischen abgegebener Version und Version im Projektverzeichnis P:\aufgabeX an Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 26 34

Inhalt Organisatorisches Entwicklungsumgebung Anleitung Aufgabe 1 und Hands-on Aufgabenbeschreibung: Zähler Flankendetektion ohne Interrupts Verwendung von int Sichtbarkeit & Lebensdauer Typdefs & Enums Verwendung von Modulo Hands-on: Signallampe Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 26 34

Aufgabenbeschreibung: Zähler Zählen der Tastendrücke an Taster 1 (fallende Flanke) Aktualisieren der Anzeige durch Taster 0 möglich (fallende Flanke) Anzeige erfolgt über 7-Segmentanzeige und LEDs (zu Beginn aus) Hunderterstelle durch LED visualisieren: LED0 = 100, LED1 = 200, etc. Bei Verlassen des anzeigbaren Wertebereichs Zähler zurücksetzen Nutzung der Bibliothesfunktionen für Button, Display und LED Dokumentation der Bibliothek: https://www4.cs.fau.de/lehre/ws15/v_spic/uebung/doc Implementierung durch Polling keine Interrupts erforderlich Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 27 34

Flankendetektion ohne Interrupts Detektion der Flanke durch aktives, zyklisches Abfragen (engl. Polling) eines Pegels Unterscheidung zwischen active-high & active-low notwendig Später: Realisierung durch Interrupts Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 28 34

Verwendung von int Die Größe von int ist nicht genau definiert (ATmega32: 16 bit) Gerade auf µc führt dies zu Fehlern und/oder langsameren Code Für die Übung: Verwendung von int ist ein Fehler Stattdessen: Verwendung der in der stdint.h definierten Typen: int8_t, uint8_t, int16_t, uint16_t, etc. Wertebereich: limits.h: INT8_MAX, INT8_MIN,... Speicherplatz ist sehr teuer auf µc Nur so viel Speicher verwenden, wie tatsächlich benötigt wird! Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 29 34

Übersicht: Sichtbarkeit & Lebensdauer Lokale Variable, nicht static = auto Variable automatisch allokiert & freigegeben Funktionen als static, wenn kein Export notwendig Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 30 34

Globale Variablen 1 static uint8_t state; // global static 2 uint8_t event_counter; // global 3 4 void main(void) { 5... 6 } 7 8 static void f(uint8_t a) { 9 static uint8_t call_counter = 0; // local static 10 uint8_t num_leds; // local (auto) 11... 12 } Sichtbarkeit/Gültigkeit möglichst weit einschränken Globale Variable lokale Variable in f() Globale static Variablen: Sichtbarkeit auf Modul beschränken static bei Funktionen und globalen Variablen verwenden, wo möglich Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 31 34

Typdefs & Enums 1 #define PD3 3 2 typedef enum { BUTTON0 = 4, BUTTON1 = 8 3 } BUTTON; 4 #define MAX_COUNTER 900 5... 6 void main(void) { 7... 8 PORTB = (1 << PB3); // nicht (1 << 3) 9... 10 BUTTONEVENT old, new; // nicht uint8_t old, new; 11... 12 // Deklaration: BUTTONEVENT sb_button_getstate(button btn); 13 old = sb_button_getstate(button0);//nicht sb_button_getstate(4) 14... 15 } Vordefinierte Typen verwenden Explizite Zahlenwerte nur verwenden, wenn notwendig Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 32 34

Verwendung von Modulo Modulo ist der Divisionsrest einer Ganzzahldivision Achtung: In C ist das Ergebnis im negativen Bereich auch negativ Beispiel: b = a % 4; a: -5-4 -3-2 -1 0 1 2 3 4 5 6 b: -1 0-3 -2-1 0 1 2 3 0 1 2 Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 33 34

Hands-on: Signallampe Morsesignale über LED 0 ausgeben Steuerung über Taster 1 Nutzung der Bibliothesfunktionen für Button und LED Dokumentation der Bibliothek: https://www4.cs.fau.de/lehre/ws15/v_spic/uebung/doc Lehrstuhl Informatik 4 Übungen zu SPiC (WS 2015/16) 34 34