All posts by KapHa (13)
topic: AVR Studio 6.1
(Template)
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
Der Fehler steht im untersten Drittel deines ersten, hier geposteten Bildes:
led.h: No such file or directory Um das AVR Studio auch auf deinem eigenen Computer verwenden zu können, sind noch ein paar Extra-Schritte notwendig. Sie werden auf der, von "morty" hier verlinkten Website beschrieben. Hast du die schon alle durchgeführt? |
topic: AVR Studio 6.1
(Template)
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 6677
Der Compiler meldet, dass er die Datei led.h nicht finden kann. Hast du in den Einstellugen zu deinem Projekt (wahlweise auch im Template) die Suchpfade für die Header und Libraries für den Compiler geändert?
|
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 6639
Also meiner Meinung nach sollte es schon helfen, wenn du MYPORT mit einem String ersetzt; also
#define MYPORT_STR "PORTG" wobei bei der letzten Variante der String zur compile-Zeit zusammengebaut wird und du dir dadurch eine mov Instruktion und Arbeit im printf sparst // ... printf("%s: %d\n", MYPORT_STR, zahl); // oder: printf(MY_PORT_STR ": %d\n", zahl); ![]() Durch die Ersetzung mit dem String lässt sich MYPORT_STR natürlich nicht mehr für irgendwelche Zuweisung (also tatsächliches LED an- und ausschalten) verwenden... |
topic: Klausur Juli 2013
(Aufgabe 2a remote_control)
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 6567
Genau, nur dass die Optimierung der Compiler und nicht der Präprozessor übernehmen würde (der Präprozessor nimmt eigentlich nur (Text-)Ersetzungen vor), aber ich glaube, das muss man in GSPiC nicht wissen. Allerdings kommt es sehr darauf an, welche Befehle in der Schleife vorkommen. Solche Späße wie for (uint8_t i = 0; i < 50; ++i) werden natürlich trotzdem wegoptimiert. Aber solange es "sinnvolle" Befehle sind, bleibt die Schleife natürlich bestehen.++i; Übrigens müsste auch das volatile in der for-Schleife bei /* Betaetigung von Tasten auswerten */ meiner Meinung nach überflüssig sein. Bitte verwende die PINx Register nur zum Lesen. Ein schreibender Zugriff ist nicht erlaubt bzw. nicht definiert (siehe: http://www.atmel.com/Images/doc2503.pdf#64, Seite 64). |
topic: Klausur Juli 2013
(Aufgabe 2a remote_control)
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 6564
Wenn es recht ist, schreibe ich hier auch mal was zu der Lösung:
Schau dir bitte noch mal deinen Code zu "auf Tastendruck warten" an, da stimmt - meiner Meinung nach - etwas ganz und gar nicht... Des Weiteren solltest du dir genau überlegen, wo du volatile brauchst: Wenn ich das richtig sehe, hast du nämlich sowohl volatile vergessen, als auch überflüssige in deinem Programm. Deine Argumentation stimmt prinzipiell. Wenn ich mich allerdings richtig erinnere, wurden für fehlende static aber Punkte abgezogen, so dass ich das in der Klausur hinschreiben würde. (Genauere Informationen beim Übungsleiter/Betreuer deines Vertrauens ![]() Interruptleitungen müssen nicht zwangsläufig als Eingang konfiguriert sein (siehe: http://www.atmel.com/Images/doc2503.pdf#66, Seite 66). In diesem Fall ist es aber sinnvoll, da deine Interruptquelle (der Knopf bzw. die Knöpfe) nicht deine Software ist, sondern die Hardware. Also meiner Meinung nach, sollte PINA schon passen, da der Zustand des Tasters abgefragt werden soll und nicht, ob der Pull-Up Widerstand aktiv ist oder nicht. Würde zumindest auch zu den Folien passen... (https://www4.cs.fau.de/Lehre/WS13/V_GSPIC/Vorlesung/Folien…, Seite 71) Sehe ich leider auch anders, da event = 0 nur ausgeführt wird, wenn taste == (1<<i) gilt. Oder habe ich da etwas übersehen? |
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 4769
Aaahh! Sorry, ich habe deine Antwort nicht gescheit gelesen .... Ja, du hast natürlich recht. |
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 4760
Hi!
@Oktober 2006 Aufgabe 1 d) Überlege noch mal welchen Datentyp "Spic ist toll" hat. @Juli 2009 Aufgabe 1 b) Schaut relativ gut aus, nur hat Lost-Update rein gar nichts mit schlafen zu tun, wie die Folie 15-17 im GSPiC-Handout zeigt |
topic: AVR Studio zuhause
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 4697
Hi!
An "Toolchain directory" würde ich nichts ändern, da dort angegeben ist, wo sich dein avr-gcc befindet. Da er aber deinen Compiler/Linker findet, scheint ja nichts passiert zu sein ... Er findet die libspicboard nicht, da du ihm nicht gesagt, wo sie liegt. Gehe doch mal in den Projekteinstellungen nach "Toolchain -> AVR/GNU C Linker -> Libraries". Dort sollte im Feld "Libraries (-Wl,-l)" "spicboard", statt "D:\libspicboard" stehen. Bitte genau so eintragen, unabhängig davon, wo sich deine libspicboard befindet. Du sagst dem Linker nämlich damit, dass er mit der libspicboard linken soll. Darunter im Feld "Library search path (-Wl,-L)" musst du den Pfad zu deiner Bibliothek angeben. Im deinem Fall dürft das "D:\libspicboard" sein. Diese Einstellung findet sich in deiner Ausgabe nämlich überhaupt nicht. Danach sollte der Fehler eigentlich verschwinden. |
topic: Abgabe über WinSCP
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 4478
Das Verzeichnis /proj/i4gspic wird dynamisch gemountet; du kannst also einfach in das Verzeichnis wechseln (auch ohne dass du es siehst).
Dazu müsste es bei WinSCP einen Knopf neben der Anzeige des aktuellen Verzeichnisses geben (über der Verzeichnisübersicht). Das Icon sollte ein geöffneter Windows-Ordner sein. Darauf macht sich ein Dialog auf in dem du den Pfad eingeben kannst. Falls du dann in deinem Ordner (/proj/i4gspic/LOGINNAME) noch keinen Ordner "aufgabe2" findest (das sollte nur der Fall sein, wenn du in der Uni noch nicht mit der Aufgabe 2 begonnen hast), musst du ihn - wie mein Vorposter schon erwähnte - erstellen. |
topic: Avr Studio für Zuhause
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 3600
Hi!
Was mir gerade noch aufgefallen ist: Du musst auch dem Linker die Anweisung geben gegen 'libspicboard.a' zu linken, d.h. in deinem Makefile müsste beim Linken der Befehl "-Wl,-lspicboard" auftauchen; tut es aber nicht, sondern Das liegt an deinen Projekteinstellungen. Überprüfe doch mal, ob bei "Toolchain -> AVR/GNU C Linker -> Libraries" im Feld "Libraries (-Wl,-l)" "spicboard" steht, falls nicht, das genauso reinschreiben (unabhängig vom Pfad zu deiner 'libspicboard.a'). Untendrunter im Feld "Library search path (-Wl,-L)" muss dann dein Pfad zu dem entpackten ZIP-Ordner mit der 'libspicboard' drin stehen; genauso wie bei "Toolchain -> AVR/GNU C Compiler -> Directories" im Feld "Include Paths (-I)". PS: Das musst du dann aber bei jedem Projekt mit der 'libspicboard' machen, das war mir zu aufwendig und ich habe das "SPiC_Template" geändert, und zwar wie folgt:
Damit solltest du ein an deine Installation angepasstes Template haben, das du wie gewohnt importieren kannst (ging bei mir zumindest so). Das "alte" SPiC-Template habe ich in "AVRStudio\Templates\ProjectTemplates" gefunden, man kann es einfach löschen, damit man keine zwei "(G)SPiC-Projekt" beim Erstellen eines neuen Projekts zur Auswahl hat. |
topic: Avr Studio für Zuhause
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 3594
Hi!
Zuerst einmal bedeutet dieses "undefined reference to 'sb_adc_read'" Zeug, dass der Linker die Funktion 'sb_adc_read' nicht finden kann. Der Linker kennt also keine Datei (es wäre 'libspicboard.a'), in der diese Funktion definiert ist. Die Antwort, warum er diese Datei nicht findet, gibt dein zweiter Post: Der Linker kann keinen Ordner oder keine Datei mit dem Namen 'Studio\bibn' finden. Warum? Leerzeichen im Pfad zu deiner Library! Die einfachste Lösung wäre meiner Meinung nach, das 'libspicboard.zip' in ein Verzeichnis zu entpacken, in dem kein Leerzeichen vorkommt, zum Beispiel: "D:\Utility\Libs" oder was auch immer. Hauptsache keine Leerzeichen im Pfad. Das erklärt auch den Fehler von deinem zweiten Post: Die Datei 'C:\Users\Matze\Documents\AVRStudio\aufgabetest.c\Debug\aufgabetest.c.elf' existiert gar nicht, so dass sie nicht geöffnet werden kann, denn Wegen des Linker Fehlers, den ich oben schon beschrieben habe. Das alles sollte sich aber lösen, sobald du das 'libspicboard.zip' Archiv in ein Verzeichnis ohne Leerzeichen im Pfad entpackst. So, ich hoffe das hat ein wenig geholfen. Beste Grüße |
topic: Sammelbestellung USB-Kabel für spicboard und Progger
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 3461
Ja, mein Beitrag hat sich auch noch mal geändert.
Vielen, vielen Dank für deine Mühe. Beste Grüße |
topic: Sammelbestellung USB-Kabel für spicboard und Progger
in the forum: 2. Semester › Grundlagen der systemnahen Programmierung in C
Member since Oct 2011
13 posts
|
![]()
In reply to post ID 3399
Hi!
Echt toll, dass du das machst! Ich hätte auch gerne 2 USB-Kabel (beide 3m). Vielen Dank schon mal! |
Special queries
Powered by the Unclassified NewsBoard software, 20110527-dev,
© 2003-8 by Yves Goergen