ATMega48 mit V-USB (AtmelStudio 6)

OP #2735802
Hallo zusammen,
ich möchte mit einem ATMega48 Controller über V-USB kommunizieren. Dafür 
bin ich genau wie in diesem Tutorial 
(http://codeandlife.com/2012/01/29/avr-attiny-usb-tutorial-part-3/) 
beschrieben vor gegangen. Leider kommen immer wieder neue Fehler vom 
Compiler die ich teilweiße überhaupt nciht verstehe. Als erstes kahm 
dieser Fehler:
1
Error  1  variable 'usbDescriptorDevice' must be const in order to be put into read-only section by means of '__attribute__((progmem))'  C:\Programmieren\USB-Input\USB-Input\USB-Input\V-USB\usbdrv.h  455  6  USB-Input
Dort habe ich dann einfach ein "const" davor gehägt, so wie es der 
Compiler wollte:
1
const char usbDescriptorDevice[];
Damit war er auch erst ein mal zufrieden doch das war noch nicht alles, 
jetzt meint er das "usbInit" nicht definiert ist.
1
Error  1  undefined reference to `usbInit'  C:\Programmieren\USB-Input\USB-Input\USB-Input\Debug/.././USB-Input.c  38  1  USB-Input
Und hier weiß ich erst mal nicht weiter, ich habe die Header-Datei 
"usbdrv.h" eingebunden
1
#include <usbdrv.h>
daran kann es also nicht liegen und in "usbdrv.h" ist die Funktion auch 
angegeben:
1
USB_PUBLIC void usbInit(void);
Was mich etwas verwirrt ist das sonst nicht in dieser Funktion steht und 
"usbInit" auch sonst wo nicht noch ein mal auftaucht.

Hat vielleicht jemand schon mal mit V-USB gearbeitet und kann mir weiter 
helfen? Vielen Dank schon mal im Vorraus.
Persönliche Seite
Samuel M. schrieb:
> Error  1  variable 'usbDescriptorDevice' must be const in order to be put into 
read-only section by means of '__attribute__((progmem))' 
C:\Programmieren\USB-Input\USB-Input\USB-Input\V-USB\usbdrv.h  455  6  USB-Input
Interessant, welche Compilerversion hast du da?

> jetzt meint er das "usbInit" nicht definiert ist.Error  1  undefined reference 
to `usbInit' 
C:\Programmieren\USB-Input\USB-Input\USB-Input\Debug/.././USB-Input.c  38  1 
USB-Input
> Und hier weiß ich erst mal nicht weiter, ich habe die Header-Datei
> "usbdrv.h" eingebunden#include <usbdrv.h>daran kann es also nicht liegen und in 
"usbdrv.h" ist die Funktion auch
> angegeben:USB_PUBLIC void usbInit(void);Was mich etwas verwirrt ist das sonst 
nicht in dieser Funktion steht und
> "usbInit" auch sonst wo nicht noch ein mal auftaucht.

Muss man die Funktion usbInit nicht selber schreiben? Als eine Art 
Callback Funktion.
EDIT: Nein, das war eine andere. Kann das sein, dass usbInit in 
Assembler dabei ist?
OP
Zum Programmieren verwende ich die AtmelStudio6 Entwicklungsumgebung, 
vermutlich wird das dann der AVRGCC (3.4.0.65) Compiler sein der dort 
intigriert ist.

Kann sein das "usbInit" in Assembler vor liegt, aber das müsste dann ja 
eigenltich auch mit dem Namen "usbInit" versehen sein. Aber wenn es da 
ist, warum bekomme ich dann einen Fehler? Im Anhang habe ich jetzt mal 
die Dateien eingefügt.
Angehängte Dateien:
Gast
Probiers mal damit. Ich habe alle notwendigen Module eingebettet und die 
Quarz-Frequenz fest auf 20 MHz eingestellt (mit der Berechnung via F_CPU 
wollte er nicht ...).

Lässt sich so problemlos compilieren ...

Übrigens, wenn Du Module (.C oder .H) im Projektverzeichnis hast und per 
ADD einfügst, dann sollte Dein Include-Statement so

#include "usbdrv.h"

und nicht so

#include <usbdrv.h>

aussehen.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.