Not logged in. · Lost password · Register

All posts by KapHa (13)

topic: AVR Studio 6.1 (Template)  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
KapHa
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
KapHa
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?
topic: #define und Text  in the forum: Sonstiges Basteleien und Projekte
KapHa
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"
// ...
printf("%s: %d\n", MYPORT_STR, zahl);
// oder:
printf(MY_PORT_STR ": %d\n", zahl);
wobei bei der letzten Variante der String zur compile-Zeit zusammengebaut wird und du dir dadurch eine mov Instruktion und Arbeit im printf sparst ;)
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
KapHa
Member since Oct 2011
13 posts
In reply to post ID 6567
Quote by lurxy:
Was die volatiles angeht habe ich nochmal ins Skript geschaut, die Variablen, die das Hauptprogramm und die Unterbrechungsfunktion lesen und schreiben müssen demnach volatile sein, also pressed, event und taste. Überflüssig wäre an sich ja volatile in der Laufvariable in "/* Funktion send zu Taste gehoerendes Muster mit Infrarot-LED senden */", da der Präprozessor diese Schleife ja nicht verwerfen würde, da in der for-Schleife ja Befehle stehen, oder?
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)
    ++i;
werden natürlich trotzdem wegoptimiert. Aber solange es "sinnvolle" Befehle sind, bleibt die Schleife natürlich bestehen.
Übrigens müsste auch das volatile in der for-Schleife bei /* Betaetigung von Tasten auswerten */ meiner Meinung nach überflüssig sein.

Quote by lurxy:
In dem Moment gibt PORTA ja nur noch Aussagen über den Pull Up und man muss mit PINA den Zustand schreiben/lesen.
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
KapHa
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.

Quote by lurxy:
static uint8_t taste;     //Ist es für die Klausur wichtig, dass die globalen Variablen und Funktionen static sind? Es gibt letztendlich ja nur ein Modul.
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 ;) )

Quote by lurxy:
DDRD &= ~(1<<PD2); //Interrupt Leitung     //Interruptleitungen müssen immer als Eingang gesetzt werden, oder?
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.

Quote by Christian St.:
taste = PINA;    //Reicht das hier oder muss ich taste und PINA bitweise verknüpfen?
Das soll wahrscheinlich PORTA heißen oder?
An sonsten: wenn das nur den Wert des Pins zurückgibt, passt das prinzipiell.
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)

Quote by Christian St.:
        if(event==1) {        //Diese if-Abfrage ist ja nur gültig, wenn in der for-Schleife nicht nur eine Taste gedrückt wurde und damit event=0 eintritt, oder?
Wenn ich deinen Code richtig verstehe, wird dieser Abschnitt nie aufgerufen, weil in der for-Schleife drüber auf jeden Fall event=0; ausgeführt wird.
Sehe ich leider auch anders, da event = 0 nur ausgeführt wird, wenn taste == (1<<i) gilt. Oder habe ich da etwas übersehen?
topic: MC Fragen  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
KapHa
Member since Oct 2011
13 posts
In reply to post ID 4769
Quote by Timo Sabitzer:
Die Aufgabenstellung 2009-Aufgabe 1b) auch nicht - Antwort 2 aber und kann deshalb ausgeschlossen werden.
Aaahh!
Sorry, ich habe deine Antwort nicht gescheit gelesen ....
Ja, du hast natürlich recht.
topic: MC Fragen  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
KapHa
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
KapHa
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.
Quote by heike:
-Wl,-lD:\libspicboard
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
KapHa
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
KapHa
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
Quote by eh36anex:
-Wl,-lD:\Utility\Avr Studio\bibn
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:
  • ZIP Archiv mit dem Template entpacken
  • Dann in der Datei "spic3.avrgccproj" alle "Q:\i4" durch den Pfad zur entpackten 'libspicboard' ersetzen (Müssten die Zeilen 28, 44, 67 und 82 sein) [EDIT: Die Datei "spic3.avrgccproj" muss man mit einem Texteditor öffnen, um sie bearbeiten zu können; AVR Studio lässt das nämlich nicht zu]
  • Im Explorer einen neuen "ZIP-komprimierten Ordner" anlegen (Rechts Klick -> Neu -> ZIP-komprimierter Ordner) und alle drei Dateien reinkopieren ("__TemplateIcon.ico", "MyTemplate.vstemplate" und die veränderte Datei "spic3.avrgccproj")

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.
This post was edited 2 times, last on 2011-12-05, 08:53 by KapHa.
topic: Avr Studio für Zuhause  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
KapHa
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:
Invoking: AVR/GNU C/C++ Linker
        "D:/Utility/Avr Studio/Projekte/AVR ToolChain/bin/avr-gcc.exe" -Wl,-L"D:\Utility\Avr Studio\bibn"   -mmcu=atmega32  -Wl,-Map=aufgabetest.c.map -o aufgabetest.c.elf  CProgram1.o  -Wl,-lD:\Utility\Avr Studio\bibn
        avr-gcc.exe: Studio\bibn: No such file or directory
        make: *** [aufgabetest.c.elf] Error 1
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:
00:48:10.563: [ERROR] Failed to launch. Missing file: C:\Users\Matze\Documents\AVRStudio\aufgabetest.c\Debug\aufgabetest.c.elf
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
Build FAILED.
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
KapHa
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
KapHa
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!
This post was edited on 2011-11-17, 22:28 by KapHa.
Close Smaller – Larger + Reply to this post:
Special characters:
Go to forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen