Nicht angemeldet. · Kennwort vergessen · Registrieren

Alle Beiträge von heinloth (8)

Thema: Trap, Interrupt  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Ein Trap ist eine Ausnahmesituationen, die z.B. durch fehlerhaftes Verhalten des gerade ausgeführten Programms (Zugriff auf ungültige Speicheradresse, ungültiger Maschinenbefehl, Division durch Null) ausgelöst wird, sie geschieht daher synchron zur Programmausführung [also immer wenn das Programm an dieser Stelle ist].

Ein Interrupt hingegen ist eine Unterbrechung, die durch ein Signal eines externen Geräts ausgelöst wird (z.B. Tastendruck), sie kommen somit asynchron zur Programmausführung vor.

Detaillierter findest du das in den Folien von SS2015, 19–4ff.

In den überarbeiteten (aktuellen) Folien wird statt Trap der Begriff Exception verwendet (19–17)
Thema: Klausur - Bibliothek  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Antwort auf Beitrag ID 7888
Bei der Mikrocontrolleraufgabe solltest du die grundlegenden Funktionen aus der avr-libc Standardbibliothek wie sei() und cli(), sowie sleep_cpu(), sleep_enable() und sleep_disable() kennen.
Sofern weitere Bibliotheksfunktionen gebraucht werden, was etwa der libspicboard entspricht (also z.B. sb_led_on()), so geben wir diese vor.

Bei der Linuxaufgabe in SPIC werden zusätzlich noch die relevanten Manpages mit ausgeteilt, letztes Semester wurden so z.B. fork, wait und opendir/readdir/closedir vorgegeben.
Thema: Übungsabgabe mit Partner(in PuTTY)  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Antwort auf Beitrag ID 7860
Führe wie bei der vorherigen Aufgabe die Abgabe durch (vgl FAQ)

Dann wirst du nach ausführen des submit-Kommandos gefragt, mit welchen Übungspartner die Aufgabe gelöst wurde.
Bitte gib den Login deines Uebungspartners ein:
Gib hier die Loginkennung des Partners ein (dieser muss nichts weiter tun).
Thema: AtmelStudio7 + Spicboard(ATMEGA32A) + AVRISP mkII  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Antwort auf Beitrag ID 7857
Zitat von Kwitsch:
ich wollte mein altes Spicboard wieder zum Leben erwecken und habe nun folgendes Problem [...]
Auch die library ist eingebunden und funktioniert.
Wir sind inzwischen auf das XPlained Mini umgestiegen, die SPiCboard-Platine wurde dafür im Frühjahr 2017 neu designed - und weißt erhebliche Unterschiede zu deiner Version auf.

In kurz: Die neue libspicboard (für SPiCboard v3), die du anscheinend geladen hast, ist nicht kompatibel mit deinem alten SPiCboard (der Version 2).
Du kannst jedoch die libspicboard aus deinem Semester weiterhin über die Webseite laden: https://www4.cs.fau.de/Lehre/, die sollte auch tun.

Zitat von Kwitsch:
Betriebssystem: Win10
Software: Atmel Studio 7.0
Die Projektvorlagen damals wurden nur für die damals aktuelle Atmel Studio Version erstellt (5 bzw 6), kann also sein das es später nach der Verwendung der korrekten libspicboard immernoch Probleme gibt - wir haben das nicht mit der neusten Atmel Studio Version getestet.

 
Zitat von Kwitsch:
In den Programming Settings habe auch schon die Option "custom programming tool" versucht. ( java -jar P:\libspicboard\doc\SPiCsim.jar $(OutputDirectory)\$(OutputFileName)$(OutputFileExtension) )
Das ist mittlerweile ein Hack um den SPiCsim im WinCIP zu starten, und wird mit dieser Ordnerstruktur auch nicht auf deinem Privatrechner laufen (der Pfad muss angepasst werden).
Thema: Atmel Studio erkennt die #include Anweisungen bzw. die Library nicht. Brauch Hilfe  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Antwort auf Beitrag ID 7851
Ich nehme an du hast die Anleitung Atmel Studio Zuhause von der GSPiC Webseite befolgt.

Prüfe mal, ob dein Projektverzeichnis (z.B. aufgabe1) in einem Ordner neben der libspicboard liegt. Und am besten keine Leerzeichen/Sonderzeichen beinhaltet.
Also z.B.: den Inhalt der aktuellen libspicboard-Bibliothek nach C:\spic entpacken (alternativ geht auch etwas in deinem Benutzerverzeichnis).
Da sollte dann folgende Ordner und Dateien liegen:
C:\spic\beispiel\
C:\spic\libspicboard\
C:\spic\documentation.html
C:\spic\Liesmich.txt
C:\spic\SPiCboard_Project_Template.zip
C:\spic\spicsim.bat

Nun solltest du das beispiel laden können und ein neues Projekt aufgabe1 im gleichen Ordner erstellen:
C:\spic\aufgabe1\

Hintergrund ist, dass Atmel Studio dann in den richtigen Verzeichnissen nach den Headern sucht.

Alternativ in den Projekteinstellungen die Eigenschaften des Projekts öffnen: (z. B. Project / aufgabe1 Properties) und unter ToolchainAVR/GNU C CompilerDirectories..\libspicboard in den Pfad ändern, in dem die libspicboard entpackt wurde (z.B. C:\spic) sowie ebenfalls unter ToolchainAVR/GNU LinkerLibraries..\libspicboard in den Pfad ändern, in dem die libspicboard entpackt wurde
Thema: Überlauf bei Wartefunktion (Aufgabe 2 - Snake)  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Betreff: Überlauf bei Wartefunktion
Für die neue Aufgabe Snake ist es in Schritt 3 notwendig, abhängig von der Helligkeit eine Wartefunktion zu implementieren.

Unter Umständen hat man für die Wartezeit eine Funktion ähnlich
Initialwert - Faktor * ADC(PHOTO)

Hier gibt es einen Stolperstein, welcher in der Vorlesung am Montag auf Folie 7-15f erörtert wurde.

Beispiel:
Nehmen wir für den ADC-Wert des Photosensors 1000 an und setzen den Faktor auf 2000 und die Wartezeit auf 3000000 (Hinweis: das sind fiktive Werte, welche nicht so in der Aufgabe benutzt werden).
Auf dem Papier ist es einfach:
3000000 - 2000 * 1000 = 1000000

Und nun als kleine Testanwendung, welche die gleiche Rechnung tätigt und dann beim erwarteten Ergebnis die grüne LED anknippst:
  1. #include <stdint.h>
  2. #include <led.h>
  3.  
  4. void main(void){
  5.     uint16_t adc = 1000; // eigentlich sb_adc_read
  6.     uint32_t delay = 3000000 - 2000 * adc;
  7.  
  8.     switch (delay){
  9.         case 1000000:
  10.             sb_led_on(GREEN0);
  11.             break;
  12.         case 2966080:
  13.             sb_led_on(YELLOW0);
  14.             break;
  15.         default:
  16.             sb_led_on(RED0);
  17.     }
  18.  
  19.     while (1);
  20. }

Allerdings leuchtet beim Ausführen auf dem SPiCboard die gelbe LED und sagt uns damit, dass das Ergebnis 2966080 ist. Wieso?

Zuerst gilt bei der Formel 3000000 - 2000 * adc Punkt vor Strich. Und 2000 ist wie die Variable adc eine 16bit Zahl. Das Ergebnis wird wieder in 16bit gepackt und die führenden Stellen werden abgeschnitten, es gibt einen Überlauf:
            0000 0111 1101 0000₂    (= 2000₁₀)
*           0000 0011 1110 1000₂    (= 1000₁₀)
----------------------------------------------
= 0001 1110 1000 0100 1000 0000₂ (= 2000000₁₀)
→ ▒▒▒▒ ▒▒▒▒ 1000 0100 1000 0000₂   (= 33920₁₀)

Anschließend wird das Ergebnis von 3000000 (aufgrund der Größe bereits 32bit) abgezogen, wir erhalten statt 1000000 die ungewünschte Zahl 2966080.

Als Lösung muss man nun entweder bereits adc zum Typ uint32_t machen, casten ((uint32_t) adc) -- oder den Übersetzer anweisen, den anderen beteiligten Operanden als 32bit Zahl zu behandeln: 2000UL.


Tückische Sache - wieso nerven wir euch mit solchen Problem? Nun, derartige Überlauffehler haben schon teure Raketen zum explodieren gebracht - und wir machen natürlich Rocket Science in GSPiC ;)
Thema: GSPiC oder SPiC  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Antwort auf Beitrag ID 7843
GSPiC ist eine Untermenge von SPiC.

Beide Fächer beinhalten
 • Grundlagen der systemnahen Programmierung (Systemarchitekturen, Betriebssysteme)
 • Einführung in die Programmiersprache C (Unterschiede zu Java, Modulkonzept, Zeiger und Zeigerarithmetik)
 • Mikrocontroller-Programmierung am Beispiel AVR (Abbildung Speicher ↔ Sprachkonstrukte, Interrupts und Nebenläufigkeit)

Darüber hinaus lernt man in SPiC noch
 • Abstraktionen und Dienste eines Betriebssystems (Dateisysteme, Programme und Prozesse, Signale, Threads, Koordinierung)
 • Systemsoftwareentwicklung am Beispiel Linux

Dementsprechend hat SPiC 8 Übungsaufgaben (statt 5) und eine 90 Minuten Klausur (statt 60 Minuten), dafür auch 5 ECTS (statt 2.5).


Beigefügt ein PDF Dokument zur Übersicht, welches die Module und Studiengänge beinhaltet (Angaben ohne Gewähr).
Der Autor hat eine Datei an diesen Beitrag angehängt:
module.pdf 161,1 kBytes
Du hast keine Berechtigung, diese Datei zu öffnen.
Thema: Klausurergebnisse SS17  im Forum: 2. Semester Grundlagen der systemnahen Programmierung in C
heinloth
Mitglied seit 07/2017
8 Beiträge
Betreff: Klausurergebnisse SS17
Die Klausur vom Freitag ist nun korrigiert: Ø 2.4 (87% Bestehensquote)
[Bild: https://www4.cs.fau.de/Lehre/SS17/V_GSPIC/Pruefung/notenverteilung-EEI-gesamt.png]

Die eigene Note ist im Waffel einsehbar, weitere Informationen (z.B. zu den Notengrenzen) wurden auf der Lehrstuhlwebseite veröffentlicht.

Einsicht ist in der ersten Vorlesungswoche, in dringenden Fällen allerdings auch davor möglich (bitte dafür einen Termin vereinbaren).
Schließen Kleiner – Größer + Auf diesen Beitrag antworten:
Weitere Zeichen:
Gehe zu Forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen