Forum: Mikrocontroller und Digitale Elektronik Wie kann ich Libraries in AVR Studio 5 einbinden?


von captnhanky (Gast)


Lesenswert?

Hi!

Ich probier grad herum und viele Sachen in der AVR Programmierung  sind 
nach wie vor ein Rätzel für mich.

Zum Beispiel, wie ich externe Libraries, zB die Procyon AVRlib in das 
AVR Studio 5 einbinden kann.


Kann mir jemand helfen?
Danke!

von Krapao (Gast)


Lesenswert?

Procyon AVRlib
https://ccrma.stanford.edu/courses/250a/docs/avrlib/html/index.html

Was genau sind die Probleme: Wie man den Include-Pfad in AVR Studio 5 
setzt oder wie man die Dateien auf der Platte ablegt oder wie man die 
Dateien in sein Projekt aufnimmt oder wie man eine Binärlibrary macht?

von captnhanky (Gast)


Lesenswert?

Wie gesagt, bin Anfänger.

Ich hab in Windows 7 die PATH variablen eingetragen. Nichts.

Ich hab versucht, den avrlibb ordner in den AVRStudio toolchain ordner 
zu kopieren, geht auch nicht, weil der eben reinkopierte Ordner nicht 
sichtbar ist, kein Ahnung warum.

Ich schaffs auch nicht das Makefile (avrproj_make ?) einzubinden mit 
ebenfalls den PATH Variablen und DOS Konsole

Im Moment schau ich mich grad nach einem anderen Kompiler um, wo 
Libraries schon drin sind.
Ich hab mich jetzt fast 1 Woche mit dem Zeug beschäftigt, aber die 
meiste Zeit mit herumconfigurieren gebraucht. Das geht schon auf die 
Substanz gelinde gesagt.

von Krapao (Gast)


Lesenswert?

Du solltest in Teilschritten vorgehen.

1) Installation des AVR Studio 5 incl. der AVR Toolchain.

Diese Installation sollte von Atmel perfekt beschrieben sein.
Bei Fragen können dir "Tausende" AVR User weltweit helfen.
Damit kannst du bereits AVR C Projekte übersetzen und entwickeln.

2) Installation von "Drittlibraries" (Fleury, Procyon)

Es ist zwecklos, das zu versuchen, wenn 1) nicht erfolgreich ist.

Nur ein kleiner Anteil von Usern setzt diese Libraries genau in der 
gesuchten Verbindung mit AVR Studio 5 ein. Wenn man Probleme mit 1) hat 
und nur die User von 2) anspricht, ist der Helferkreis klein. Helfer aus 
1) sind wegen 2) angeschreckt und Helfer von 2) ahnen nicht, dass du 
Probleme mit 1) hast.

Drittlibraries braucht man zur ersten Kontaktaufnahme mit der AVR 
Entwicklungsumgebung nicht. Alle Beispiele aus dem µC.net Tutorial 
kommen ohne aus. Beim Durcharbeiten von Beispielen aus dem Tutorial 
kommen auch einfache Hilfsfunktionen zum Einsatz (Bsp. LCD). Damit kann 
man lernen, wie man ein Projekt aus mehreren Sourcefiles aufsetzt.

von andi (Gast)


Lesenswert?

Danke für die Antwort.

AVR Studio 5 an sich läuft und ich hab auch schon Projekte damit gemacht 
(AD Wandlung, PWM, Rotary encoder, LCD Display, 7segment Anzeige)

..zu meist Beispielcode von anderen..

aber MMC/SD Karten ansprechen und andere komplexere Themen hab ich 
einfach nicht geschafft.

und was macht man in so einem Fall? Ja genau, man schaut, ob es 
irgendwelche Libraries gibt.

Die Library hier im Forum für SD Karten geht nicht, weil ich eine 
gewisse default.h nicht finde, ist aber die ganze Zeit in Erwähnung im 
Bericht, dürfte ev. ein Linux Ding sein, aber ich hab auf diese Frage 
(gestell vor 2 Tagen denk ich ) genau 0 Antworten bekommen. Also was 
bringt eine Library, wenn auch nur eine Datei fehlt?

Bei anderen Libraries die ich gesucht hab, war es ähnlich, irgendwas 
fehlt immer oder ist für was anderes geschrieben.

Wie soll man was lernen, wenn das alles einfach nicht geht, oder so 
komplex ist, dass man das mit einem 100 kilo Hirn nicht verstehen würde 
(Ich hab keinen Lehrer oder so, sitze alleine da).

Zur Zeit schau ich mir den microC Compiler mal genauer an, ist mir 
empfohlen worden.
..und da sind viele Libraries schon fertig drin.

..das soll den Zweck haben, dass ich was funktionierendes studieren kann 
um daraus zu lernen und mich nicht in teilweise 10 Jahre alten code 
reinlesen muss, wo viele Dinge schon längst nicht mehr gelten (sbi, cbi 
zB).

von Carsten W. (eagle38106)


Angehängte Dateien:

Lesenswert?

Siehe Bild! Dort werden die libs eingetragen.
Carsten

von Krapao (Gast)


Lesenswert?

> Ich hab versucht, den avrlibb ordner in den AVRStudio toolchain ordner
> zu kopieren, geht auch nicht, weil der eben reinkopierte Ordner nicht
> sichtbar ist, kein Ahnung warum.

Im Explorer von Windows7 verschwinden Ordner? Das hat aber eher nix mit 
dem AVR Studio 5 zu tun, würde ich meinen.

> Die Library hier im Forum für SD Karten geht nicht, weil ich eine
> gewisse default.h nicht finde

Welche?
http://www.mikrocontroller.net/forum/codesammlung?filter=sd
http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten#Bibliotheken_zur_Ansteuerung

> Zur Zeit schau ich mir den microC Compiler mal genauer an, ist mir
> empfohlen worden.
> ..und da sind viele Libraries schon fertig drin.
> ..das soll den Zweck haben, dass ich was funktionierendes studieren kann
> um daraus zu lernen und mich nicht in teilweise 10 Jahre alten code
> reinlesen muss, wo viele Dinge schon längst nicht mehr gelten (sbi, cbi
> zB).

Das ist eine komplett andere Philosophie als meine. Ich versuche 
zunächst das Konzept zu verstehen, so dass ich dann auch den alten Code 
anpassen kann.

von Carsten W. (eagle38106)


Lesenswert?

Krapao schrieb:
>> Ich hab versucht, den avrlibb ordner in den AVRStudio toolchain ordner
>> zu kopieren, geht auch nicht, weil der eben reinkopierte Ordner nicht
>> sichtbar ist, kein Ahnung warum.
>
> Im Explorer von Windows7 verschwinden Ordner? Das hat aber eher nix mit
> dem AVR Studio 5 zu tun, würde ich meinen.

Oh je, da haben wir wieder die fehlenden Windows 7 Basics! In "Program 
Files (x86)" bzw. "Program Files" hat so etwas nichts zu suchen, sondern 
nur im Projekt-Ordner. Das impliziert natürlich, daß man nicht nur die 
Lib, sondern auch den Pfad dahin mit angibt. Der Linker hat schließlich 
keine hellseherischen Fähigkeiten.

Wenn man schon Dateien in die oben genannten Ordner hineinkopieren muß, 
dann geht das nur als Administrator. Mit normalen User-Rechten landen 
die Dateien nur in einem Schattenverzeichnis!

von Gerhard G. (xmega)


Lesenswert?

Hallo,

ich würde mir mal ein einfaches Demo-Projekt aus dem Studio 5 erzeugen.

Da sieht man schön die Struktur der Unterverzeichnis oder der dafür 
nötigen Libraries.

Ich verwende einige Lib-Teile aus der Procyon AVRlib, zum Beispiel 
rprintf(..), Buffer(..), usw. Du legst dir z.B. einen Ordner "scr" an 
dahinein kopierst du die *.c und *.h. Mit der rechten Maustaste kannst 
du dann die einzelnen Dateien im Solution Explorer -> Projekt mit "add" 
dazu fügen.

Fertig...


Gruß xmega

von andi (Gast)


Lesenswert?

Danke für die Tips, da bekommt man wieder Mut weiterzumachen!

von andi (Gast)


Lesenswert?

@Carsten Wille:

Kurze Frage:

Was sind das für Eintragungen, die am Bild umrandet zu sehen sind, in 
der Procyon AVRlib kann ich solche oder ähnliche Dateien nicht finden.

Wie kommt man auf solche Einträge? .."libprintf_flt.a" und "libm.a"

Was bedeuten sie?

von Carsten W. (eagle38106)


Lesenswert?

Diese Libs muß man mit einbinden, wenn man Fließkommazahlen mit printf() 
ausgeben will, bzw. wenn man mit Fließkommazahlen rechnen will.

Siehe auch Artikel FAQ, Abschnitt "Aktivieren der Floating Point 
Version von sprintf beim WinAVR mit AVR-Studio"

von captnhanky (Gast)


Lesenswert?

Also so wie ich das verstehe sind Libraries eigens gemachte Dateien, die 
im Fall von Procyon AVRlib aber nicht zur Verfügung stehen.

Ich würde aber gerne die Procyon AVRlib einbinden.

Frage: Wo kann ich die Ordner eintragen, damit der Compiler beim Linken 
diese Dateien findet?

Danke!

von captnhanky (Gast)


Lesenswert?

...also mit anderen Worten:

Der Compiler soll SELBSTSTÄNDIG benötigte querverbundene header- Files 
und c- Files einbinden.

zB.:

projekt besteht aus main.c

in der main.c steht #include "lcd.h"

in der "lcd.h" steht #include "globals.h"

in der "globals.h" steht "avrlibdefs.h"



Muss ich jetzt wirklich alle inkludes VON HAND durchschauen und mühsam 
zusammenschustern oder geht das auch automatisch.

...und wenn ja, wie..

Das wäre die Frage

von captnhanky (Gast)


Lesenswert?

Ich hab jetzt mal Probehalber ALLE Dateien (ca 60) von procyon AVRLib 
reingezogen und probiert die Demoprojekt "LCDtest" zum Laufen zu 
kriegen.

Jetzt fehlt zwar keine Datei mehr, dafür schreibt er aber eine gewaltige 
Fehlerliste:

Warning  3  pointer targets in passing argument 1 of 'strlen' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
306  3  test1
Error  4  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  133 
15  test1
Warning  5  pointer targets in passing argument 1 of 'strcpy' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
307  4  test1
Error  6  expected 'char *' but argument is of type 'u08 *'  c:\program 
files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  126 
14  test1
Warning  7  pointer targets in passing argument 2 of 'strcpy' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
307  4  test1
Error  8  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  126 
14  test1
Warning  9  pointer targets in passing argument 1 of 'strcpy' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
311  3  test1
Error  10  expected 'char *' but argument is of type 'u08 *'  c:\program 
files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  126 
14  test1
Warning  11  pointer targets in passing argument 2 of 'strcpy' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
311  3  test1
Error  12  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  126 
14  test1
Warning  13  pointer targets in passing argument 1 of 'strlen' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
313  3  test1
Error  14  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  133 
15  test1
Warning  15  pointer targets in passing argument 2 of 'strncmp' differ 
in signedness 
c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c  347  3 
test1
Error  16  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  136 
12  test1
Warning  17  pointer targets in passing argument 1 of 'strtol' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
439  2  test1
Error  18  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/stdlib.h  208 
13  test1
Warning  19  pointer targets in passing argument 1 of 'strtol' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\cmdline.c 
446  2  test1
Error  20  expected 'const char *' but argument is of type 'u08 *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/stdlib.h  208 
13  test1
Error  21  'FAT_SECTOR_BUFFER_ADDR' undeclared here (not in a function) 
c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  39  51  test1
Error  22  'FAT_FILENAME_BUFFER_ADDR' undeclared here (not in a 
function)  c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  40 
52  test1
Error  23  'FAT_PATHNAME_BUFFER_ADDR' undeclared here (not in a 
function)  c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  41 
52  test1
Warning  24  pointer targets in assignment differ in signedness 
c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  235  12  test1
Warning  25  pointer targets in assignment differ in signedness 
c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  265  13  test1
Warning  26  pointer targets in passing argument 1 of 'strcat' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  329 
4  test1
Error  27  expected 'char *' but argument is of type 'unsigned char *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  122 
14  test1
Warning  28  pointer targets in passing argument 2 of 'strcat' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  329 
4  test1
Error  29  expected 'const char *' but argument is of type 'unsigned 
char *'  c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  122 
14  test1
Warning  30  pointer targets in passing argument 1 of 'strcat' differ in 
signedness  c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  330 
4  test1
Error  31  expected 'char *' but argument is of type 'unsigned char *' 
c:\program files (x86)\atmel\avr studio 5.0\avr 
toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/string.h  122 
14  test1
Warning  32  pointer targets in passing argument 1 of 'rprintfStr' 
differ in signedness 
c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  380  2  test1
Error  33  expected 'char *' but argument is of type 'unsigned char *' 
c:\users\it-lab08\documents\avrstudio\test1\test1\rprintf.h  75  6 
test1
Warning  34  pointer targets in return differ in signedness 
c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  407  2  test1
Warning  35  pointer targets in return differ in signedness 
c:\users\it-lab08\documents\avrstudio\test1\test1\fat.c  413  2  test1


Was kann ich machen, dass das funktioniert?

von Carsten W. (eagle38106)


Lesenswert?

captnhanky schrieb:
> Was kann ich machen, dass das funktioniert?

Hirn einschalten, Meldung lesen und verstehen. Kurz nachdenken und dann 
handeln! Mann! Steht doch alles da, was schief gegangen ist! Sorry, aber 
da reicht doch schon die erste Meldung, um zu verstehen, was in die Hose 
gegangen ist.

Mal ganz von vorne: Was sagen denn alle diese (Fehler-)meldungen aus? 
Richtig, es geht immer um unsigned bzw. signed Variablen, die nicht 
zueinander passen! Also: Die Bibliotek geht davon aus, daß der Typ char 
vorzeichenbehaftet ist, nicht vorzeichenlos. Damit diese Meldungen 
verschwinden, muß man in den Projekteigenschaften unter Toolchain bei 
den Einstellungen für den AVR/GNU C Compiler unter General den Haken bei 
"Default char type is unsigned" entfernen.

von captnhanky (Gast)


Lesenswert?

AYE SIR, das ding wurde abgeschaltet.

Fehlermeldungen nun:

Warning  1  pointer targets in passing argument 2 of 'bufferInit' differ 
in signedness  C:\Users\it-lab08\documents\avrstudio\test1\test1\uart.c 
70  3  test1
Error  2  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  3  pointer targets in passing argument 2 of 'bufferInit' differ 
in signedness  C:\Users\it-lab08\documents\avrstudio\test1\test1\uart.c 
72  3  test1
Error  4  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Error  5  'UCSR0B' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  61  2  test1
Error  6  each undeclared identifier is reported only once for each 
function it appears in 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  61  2  test1
Error  7  'UCSR1B' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  80  2  test1
Warning  8  pointer targets in passing argument 2 of 'bufferInit' differ 
in signedness  C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 
96  3  test1
Error  9  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  10  pointer targets in passing argument 2 of 'bufferInit' 
differ in signedness 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  97  3  test1
Error  11  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  12  pointer targets in passing argument 2 of 'bufferInit' 
differ in signedness 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  109  3  test1
Error  13  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  14  pointer targets in passing argument 2 of 'bufferInit' 
differ in signedness 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  110  3  test1
Error  15  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Error  16  'UBRR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  134  3  test1
Error  17  'UBRR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  141  3  test1
Error  18  'UCSR1A' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  167  11 
test1
Error  19  'UDR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  168  3  test1
Error  20  'UCSR0A' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  172  11 
test1
Error  21  'UDR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  173  3  test1
Error  22  'UDR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  307  5  test1
Error  23  'UDR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  309  5  test1
Error  24  'UDR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  333  7  test1
Error  25  'UDR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  335  7  test1

von captnhanky (Gast)


Lesenswert?

NEUIGKEIT:

Hab jetzt noch mal nachgeschaut und bei "all configurations" das 
Häckchen rausgenommen:

Siehe da:

Error  1  'UCSR0B' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  61  2  test1
Error  2  each undeclared identifier is reported only once for each 
function it appears in 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  61  2  test1
Error  3  'UCSR1B' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  80  2  test1
Warning  4  pointer targets in passing argument 2 of 'bufferInit' differ 
in signedness  C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 
96  3  test1
Error  5  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  6  pointer targets in passing argument 2 of 'bufferInit' differ 
in signedness  C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 
97  3  test1
Error  7  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  8  pointer targets in passing argument 2 of 'bufferInit' differ 
in signedness  C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c 
109  3  test1
Error  9  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Warning  10  pointer targets in passing argument 2 of 'bufferInit' 
differ in signedness 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  110  3  test1
Error  11  expected 'unsigned char *' but argument is of type 'char *' 
C:\Users\it-lab08\documents\avrstudio\test1\test1\buffer.h  52  8  test1
Error  12  'UBRR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  134  3  test1
Error  13  'UBRR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  141  3  test1
Error  14  'UCSR1A' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  167  11 
test1
Error  15  'UDR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  168  3  test1
Error  16  'UCSR0A' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  172  11 
test1
Error  17  'UDR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  173  3  test1
Error  18  'UDR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  307  5  test1
Error  19  'UDR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  309  5  test1
Error  20  'UDR1' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  333  7  test1
Error  21  'UDR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\uart2.c  335  7  test1

von Krapao (Gast)


Lesenswert?

Dein Projekt ist anscheinend auf einen AVR mit nur einer UART 
eingestellt, während die Library in uart2.c für einen AVR mit zwei UARTs 
übersetzen will.

Es ist unvermeidlich: Du musst in der Library-Doku nachsehen, wie man 
der Library bekannt macht, für welchen AVR man die Library übersetzen 
will.

von captnhanky (Gast)


Lesenswert?

Ok, hab mal den Prozessor gewechselt auf ATmega1634 von ATmega128:


Error  1  'TCCR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\timer.c  127  2  test1
Error  2  each undeclared identifier is reported only once for each 
function it appears in 
C:\Users\it-lab08\documents\avrstudio\test1\test1\timer.c  127  2  test1
Error  3  'TCCR0' undeclared (first use in this function) 
C:\Users\it-lab08\documents\avrstudio\test1\test1\timer.c  147  10 
test1



Wahrscheinlich sind die restlichen Fehler nur Proz- Spez.
Gehören tut ein ATmega163 rein lt. makefile, aber den gibts nicht im AVR 
Studio 5.


Auf alle Fälle Danke für den Tip.


Wie kann ich einen Pfad auf die AVRLib setzen?

ev. mit einer Path- Variablen? oder so irgendwie?

von Carsten W. (eagle38106)


Lesenswert?

Eine Lib gehört in das gleiche Verzeichnis wie die Object-Files rein, 
dann braucht man im Linker nur den Namen angeben, sonst den ganzen Pfad

von Krapao (Gast)


Lesenswert?

Bei Binärlibraries wie man sie aus dem PC Bereich kennt, kann man das 
so machen. Bei µCs gibt es auch Sourcelibraries wie z.B. die Procyon 
AVRlib.

Ich habe bei AVR Studio 5 im Einsatz und kann nicht beschreiben, wie man 
Includepaths in der Konfiguration (Settings, Configuration) setzt. Ich 
erwarte, dass das in der Hilfe oder Doku des AVR Studio 5 beschrieben 
ist.

Dass man an der Windows PATH Variablen drehen müssen sollen muss, halte 
ich aber für extrem unwahrscheinlich.

von Krapao (Gast)


Lesenswert?

s/bei/kein/

von captnhanky (Gast)


Lesenswert?

Ich hab das Problem mit der Procyon
AVRlib so in den Griff bekommen:

delete Procyon AVRlib

von Krapao (Gast)


Lesenswert?

Ich auch:
PLONK

von Christoph S. (noname)


Lesenswert?

Hallo, bin ein Neuling hier, verzeit deshalb etwaige Fehler.

ich experimentiere seit etwa einem halben Jahr, und bin nun auf die 
QTouch Library gestoßen(ich arbeite das erstemal mit Libraries). Nach 
einigen kleineren Problemen bin ich nun an einem für mich großes Problem 
gestoßen. Ich hab mir dazu auch scho einige Foren durchgelesen, aber auf 
keinen grünen Zeig gekommen.
Ich arbeite mit Win7 Prof 64bit und AVRStudio5

wie ich bis jetzt herausgefunden habe muss man die benötige Library in 
sein Projektverzeichnis kopieren und in dem Properties in AVRStudio 
unter den Linker Einstellungen eintragen. Danach hab ich auf Build 
Solution geklickt und den Fehler:
cannot find -lv3g1-8qt-k-2rs

die Library die ich kopiert hab ist folgende "libv3g1-8qt-k-2rs.r90"
ich hab auch unter "Library search path" meinen Projektpfad eingetragen 
ohne erfolg. wenn ich allerdings das ganze als include in die main.c 
schreibe kommen Fehler (ca. 37000) mit folgendem Muster:
"stray '\xx' in program"
xx ist eine Zahl
"Error  7  expected '=', ',', ';', 'asm' or '__attribute__' before 
'burst_0_1_00_0_0'"
oder,
"Warning  9  null character(s) ignored"

ich weiß derzeit nichts was ich noch ausprobieren könnte und bin dankbar 
über jeden Tipp.

Schon mal danke im voraus

mfg Christoph

von Krapao (Gast)


Lesenswert?

Eine Library, für die Linker Einstellungen wie -lv3g1-8qt-k-2rs gesetzt 
werden müssen, ist eine Library im Binärformat. D.h. sie ist eine 
bereits kompilierte Datei.

Solche Dateien kann man nicht mit Include in seinen unkompilierten 
Quelltext einbinden, bzw. die dann entstehenden Fehlermeld7ungen sind 
provoziert!

Leider fehlt in deiner Frage die Angabe zum benutzten µC

Ist die Library "libv3g1-8qt-k-2rs.r90" laut Library Selection Guide die 
richtige?

Aus der Angabe AVR Studio 5 schliesse ich mal, dass du die GCC Toolchain 
benutzt und nicht die IAR Toolchain (Compiler).

Die Libraries für GCC haben typischerweise Namen die mit libavr.... 
beginnen und mit .a enden.

Die Libraries für GCC haben typischerweise Namen die mit libv.... 
beginnen und mit .r90 enden.

Ich vermute du hast ein IAR Projekt oder eine Anleitung dafür und willst 
das mit der AVR-GCC Toolchain bearbeiten. Das geht nicht.

von Krapao (Gast)


Lesenswert?


von Christoph S. (noname)


Lesenswert?

Danke für die schnelle Antwort!

ich bezutze den ATmega168-20PU und das AVRISPmkII Programmiergerät.
die genannte library hab ich im Selection Guide nachgeschaut allerdings 
nicht beachtet das dies mit der Endung .r90 ist und für GCC Toolchain 
nicht passt.
Mit Toolchain kenn ich mich leider noch nicht so aus, aber ich hab 
gerade nachgesehen in den Einstellungen steht bei mir unter AVR 
Toolchain gcc version 4.5.1 (AVR_8_bit_GNU_Toolchain_3.2.3_315), wenn 
das weiter hilft.

Ich werdes gleich nochmal probieren mit einer .a Datei

vielen Dank für den Tipp

von Christoph S. (noname)


Lesenswert?

OK ich hab jetzt die Library libavr5g1-4qt-k-1rs.a benutzt und den Pfad 
dorthin angegeben und das Example Projekt avr5g1_qt_example einfach in 
meine main.c kopiert.
Nun bleiben nur noch folgende zwei Meldungen:
Error  1  undefined reference to `burst_1_2_00_0_0'
Error  2  undefined reference to `burst_1_2_00_0_0'

diese beziehen sich beide auf folgende Zeile:
/* initialise touch sensing */
qt_init_sensing();

kann es sein dass irgendeine extern function nicht gelinkt werden kann? 
Oder ist das ein anderes Thema?

mfg Christoph

von Krapao (Gast)


Lesenswert?

Zum Glück findet man zwei Treffer, wenn man mit der exakten 
Fehlermeldung sucht (deshalb ist die Angabe der exakten Fehlermeldung 
bei der Problembeschreibung so wichtig)

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=91531&start=0
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=94726&start=0

Am Ende des ersten Links anfangen :)

von Christoph S. (noname)


Lesenswert?

Ich hab wie im ersten Link beschrieben die "qt_asm_tiny_mega.S"-Datei 
mittels Add zum Projekt hinzugefügt (mit der Annahme dass es dann 
Compiliert und gelinkt wird). Dies brachte aber rein garnichts, die 
Fehlermeldung bestand weiterhin.

Im zweiten Link stand, dass man bestimmte #define einfügen muss. Ich hab 
in dem Beispielcode von mir gekuckt und sie waren nicht vorhanden. 
Nachdem ich sie eingefügt hatte waren auch diese Fehlermeldungen 
verschwunden. nach genauerem durchforsten der touch_api.h und 
touch_qt_config.h hab ich folgendes gefunden, was damit wahrscheinlich 
zusammenhängt:
[..]
1
//! Build pointer to correct burst function.
2
#define BURST_FUNC_NAME    BURST_JOIN( QT_DELAY_CYCLES, QT_SNSK1_PORT , QT_SNS1_PORT, QT_NUM_CHANNELS, \
3
                QT_MAX_NUM_ROTORS_SLIDERS)
4
[..]
5
//! Build pointer to correct burst function.
6
#define BURST_FUNC_NAME    BURST_JOIN( QT_DELAY_CYCLES, QT_SNSK1_PORT , QT_SNS1_PORT, QT_SNSK2_PORT , QT_SNS2_PORT, QT_NUM_CHANNELS, \
7
                QT_MAX_NUM_ROTORS_SLIDERS)
8
[..]
leider gab es jetzt drei weitere Fehlermeldungen:
Error  1  undefined reference to `_0111010111_'
Error  2  undefined reference to `_01001010111_'
Error  3  undefined reference to `_0101110111_'

die Fehler gehen alle auf die Datei "burst_0_1_00_0_0.c" zurück, laut 
Fehlermeldung auf den 'Debug'-Ordner in meinem Projekt. Allerdings hab 
ich keine solche Datei in meinem Projekt und mit einem Doppelklick 
darauf passiert auch nichts.

Ich fand nun aber keine weitere JOIN-Anweisung mit der ich mir eine 
mögliche #define herleiten könnte. (zumindest soweit mir dies möglich 
war, bin ja noch Anfänger) ;-)

Das einzige das ich finden konnte, das einen solchen Funktionsnamen 
erzeugen könnte war das hier:
1
//! Macros for string concatenation.
2
#define BURST_JOIN(A,B) JOIN(A,B)
3
#if (NUM_X_PORTS ==1)
4
#define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1)
5
extern void BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask);
6
#elif (NUM_X_PORTS ==2)
7
#define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1)
8
extern void BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask);
9
#define BURST_FUNC_2 BURST_JOIN(burst_qm_,PORT_NUM_2)
10
extern void BURST_FUNC_2 (uint8_t channel, TOUCH_DATA_T x_mask);
11
#elif (NUM_X_PORTS ==3)
12
#define BURST_FUNC_1 BURST_JOIN(burst_qm_,PORT_NUM_1)
13
extern void BURST_FUNC_1 (uint8_t channel, TOUCH_DATA_T x_mask);
14
#define BURST_FUNC_2 BURST_JOIN(burst_qm_,PORT_NUM_2)
15
extern void BURST_FUNC_2 (uint8_t channel, TOUCH_DATA_T x_mask);
16
#define BURST_FUNC_3 BURST_JOIN(burst_qm_,PORT_NUM_3)
17
extern void BURST_FUNC_3 (uint8_t channel, TOUCH_DATA_T x_mask);
18
#endif
allerdings wird dies vom Preprocessor rausgenommen:
1
#ifdef _QMATRIX_
das steht davor.

eine suche in Google brachte mich nur auf die von Krapao eingefügten 
Links, oder auf für mich nicht brauchbare.

das einfügen der im Link enthalteten main und auskommentieren der 
Funktionen die bei mir nicht vorhanden sind brachte nur noch mehr 
Fehler.

Ich weis im Moment nicht wo ich nach einer Lösung suchen kann, 
vielleicht kann mir ja nochmal wer einen Tipp geben :-)

Danke schon mal im voraus

mfg Christoph

von Krapao (Gast)


Lesenswert?

> Ich hab wie im ersten Link beschrieben die "qt_asm_tiny_mega.S"-Datei
> mittels Add zum Projekt hinzugefügt (mit der Annahme dass es dann
> Compiliert und gelinkt wird).

Wenn du das noch nicht gehabt hast, heisst das dein Qtouch Projekt war 
falsch aufgesetzt.

In http://www.atmel.com/dyn/resources/prod_documents/doc8375.pdf ist ein 
Demoprojekt beschrieben, bei dem man sieht welche Defines gesetzt 
werden. Achtung: Das Demoprojekt ist für den Atmel AT90USB646.

Qtouch User Guide
http://www.atmel.com/dyn/resources/prod_documents/doc8207.pdf

Dann ist es auch wahrscheinlich, dass andere Projekteinstellungen nicht 
stimmen ("Building the application in IAR and GCC requires certain 
options to be set."). Z.B. die notwendigen Defines für die Toolchain und 
Anwendung (User Guide S. 51ff)

> touch_qt_config.h
> allerdings wird dies vom Preprocessor rausgenommen:
> #ifdef _QMATRIX_
Ist normal (User Guide S. 49)

> (zumindest soweit mir dies möglich war, bin ja noch Anfänger) ;-)

IMHO ist Qtouch zu komplex für Anfänger.

von Christoph S. (noname)


Lesenswert?

> IMHO ist Qtouch zu komplex für Anfänger.

QTouch an sich hab ich schon verstanden, ich hab auch schon selbst einen 
Slider gebastelt und ohne Lib ausgewertet. Es ging zwar nicht schlecht 
aber es hat mir noch nicht gefallen. Deswegen wollte ich es mit der 
Library probieren und das machte mir Probleme, denn ich hatte davor noch 
nicht mit solchen Librarys gearbeitet.

vielen Dank für den Link zum Demo Projekt, das hat mich ernorm 
weitergebracht.

Und vielen DANK Krapao für deine Hilfe, jetzt funktionierts einwandfrei 
:))

von Axel L. (lemmi4711)


Lesenswert?

Ich weiß, der Beitrag ist schon etwas älter, aber vielleicht hilft es 
noch jemanden....


Auch ich habe lange gekämpft, bis ich rausgefunden habe, wie ich mittels 
include schnell an meine selbst geschiebenen c-/h-Dateien komme.

Ich habe einfach ein neues Verzeichnis (libs) in der Toolchain angelegt 
und meine Dateien dort hineinkopiert.

Das Verzeichnis lautet (bei mir!!!):
D:\Program Files (x86)\Atmel\Atmel Studio 
6.0\extensions\Atmel\AVRGCC\3.4.1.81\AVRToolchain\avr\include\libs

Dann AVR-Studio starten...

Nun kann ich in der AVR-GCC Toolchain einfach #include <libs/ eingeben 
nun dann meine Datei auswählen, die ich includieren will.

Wenn Ihr eine andere Toolchain-Version habt, kann es sein, daß die 
Nummer im Verzeichnispfad anders ist....

LG, Axel.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.