guten abeend AVR gemeinde, ich habe mich bisher noch nicht mit AVR´s beschäftigt wollte aber für meinen röhrenverstärker eine Anzeige für verschiedene betriebsdaten wie anodenströme, lautstärkeeinstellung mittels vcd display anzeigen. zur ansteuerung dieser sollten sich diese dinger ja eigentlich perfekt eignen, wobei ich mir nach den ersten erfahrungen nicht mehr sicher bin ob ich mir das antun soll. nun aber genung da komme ich auch schon zu meinem problem. ich habe mir bei der firma myavr ein lpt board mit atmega 8l gekauft und zusammangabaut. zu beginn hatt ich kommunikationsprobleme welche durch biosumstellung der lpt schnittstelle gelöst werden konnten. danach habe ich win avr installiert bekomme aber keine kommunikation mit dem board zustande beim win avr habe ich folgende einstellungen vorgenommen - im make file den prozessor angepasst (atmega 8) - im make file die lpt1 eingestellt (funktioniert mit myavr auch) - das make file ist im selben verzeichniss wie das "neue" projekt kopiert - den projektcode im winavr ins "programmers notepad" kopiert und mit make all versucht es in den avr zu bekommen - eigentlich alle verschiedene einstellungen für das "board" ausprobiert (stk200, stk500.........................................) die fehlermedlung im output fenster ist immer > "make.exe" all -------- begin -------- avr-gcc (GCC) 4.2.2 (WinAVR 20071221rc1) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. make.exe: *** No rule to make target `main.elf', needed by `elf'. Stop. > Process Exit Code: 2 > Time Taken: 00:02 vielleicht hat jemand von euch eine idee lgg
Willkommen > make all Übersetzt nur den Quelltext und bereitet daraus die zu übertragende HEX-Datei vor. > make.exe: *** No rule to make target `main.elf', needed by `elf'. Stop. Wie heisst deine Quelldatei. Sie muss wahrscheinlich unter main.c abgespeichert werden. Genaueres könnte man sagen, wenn man sich die Datei Makefile ansieht (das nächste Mal bitte anhängen). Das eigentliche Programmieren kann man aus PN heraus mit make program machen. Allerdings muss das makefile davor an den verwendeten Programmer (z.B. sp12 auf dem myavr-lpt-1,52 Board) angepasst worden sein. Wie diese Anpassung vorzunehmen ist, kann man bei myavr.de erfahren. Grundsätzlich unterstützt myavr die Programmiersoftware AVRDUDE die im WinAVR Paket enthalten ist. Nur die genaue Kommandozeile ist halt anzupassen. Ich schätze dieses PDF Seite 8 hilft weiter: http://www.myavr.de/download/techb_myavr_board_lpt.pdf Darin ist diese Beispielkommandozeile angegeben: avrdude.exe -p Attiny12 -e -c sp12 -U:flash:w:"test.hex":i -P lpt1 Was welches Argument bedeutet, sieht man in der AVRDUDE Doku,
danke für die rasche hilfe - komme aber trotdem nicht weiter ich möchte die myavr software nicht benutzen weil ich nur die demo version habe und nach einer halben stunde dauernd meldungen kommen daher dachte ich winavr wäre die beste alternative. weil ich im i net gelesen habe das aktuelle winavr versionen tw nicht funktionieren habe ich version winavr 2006 01 25 installiert bekomme dabei aber auch folgende fehler > "make.exe" all -------- begin -------- avr-gcc (GCC) 3.4.5 Copyright (C) 2004 Free Software Foundation, Inc. Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es gibt KEINE Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE. g++ -c -o main.o main.cc process_begin: CreateProcess((null), g++ -c -o main.o main.cc, ...) failed. make (e=2): Das System kann die angegebene Datei nicht finden. make.exe: *** [main.o] Error 2 > Process Exit Code: 2 > Time Taken: 00:01 ich habe folgendes patch file geschrieben ""avrdude.exe -p ATmega8 -e -c sp12 -C avrdude.conf -e -i -P lpt1"" um das zeug nicht immer eingeben zu müssen die Datei avrdude.conf habe ich wie folgt angepasst. programmer # id = "sp12"; # <idN> are quoted strings # desc = "Steve Bolt's Programmer"; # quoted string # type = par; # programmer type # baudrate = <num> ; # baudrate for avr910-programmer # vcc = 4,5,6,7,8; # pin number(s) # reset = 3; # pin number # sck = 2; # pin number # mosi = 9; # pin number # miso = 11; # pin number # errled = <num> ; # pin number # rdyled = <num> ; # pin number # pgmled = <num> ; # pin number # vfyled = <num> ; # pin number # ; # die projektdatei und das aktuelle make file habe ich im selben verzeichnis der name des projektes ist main.cc ist sicher ein bedienerfehler, aber vielleicht hat jemand weitere ideen lgg
ich glaube nun der verweis auf die programmdatei gefunden zu haben, und habe im make file die dateieindung auf cc angepasst. ""# List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).cc"" nun kommt nicht mehr die meldung "kann angegeben datei nicht finden" sondern > "make.exe" all -------- begin -------- avr-gcc (GCC) 3.4.5 Copyright (C) 2004 Free Software Foundation, Inc. Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es gibt KEINE Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE ZWECKE. Linking: main.elf avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.cc -std=gnu99 -MD -MP -MF .dep/main.elf.d main.cc --output main.elf -Wl,-Map=main.map,--cref -lm cc1plus.exe: Warnung: Kommandozeilenoption "-Wstrict-prototypes" ist gültig für C/ObjC, aber nicht für C++ cc1plus.exe: Warnung: Kommandozeilenoption "-std=gnu99" ist gültig für C/ObjC, aber nicht für C++ main.cc:1: Fehler: expected unqualified-id vor »+«-Zeichen main.cc:2: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:2: Fehler: verirrtes »\252« im Programm main.cc:3: Fehler: expected unqualified-id vor »+«-Zeichen main.cc:4: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:4: Fehler: verirrtes »\246« im Programm main.cc:5: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:6: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:7: Fehler: expected unqualified-id vor »+«-Zeichen main.cc:8: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:9: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:10: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:11: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:11:13: zu viele Dezimalpunkte in Zahl main.cc:12: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:13: Fehler: expected unqualified-id vor »|«-Zeichen main.cc:13: Fehler: verirrtes »\228« im Programm main.cc:14: Fehler: expected unqualified-id vor »+«-Zeichen main.cc:16: Fehler: expected unqualified-id vor »--«-Zeichen main.cc:17: Fehler: expected constructor, destructor, or type conversion vor »&&«-Zeichen main.cc:17: Fehler: expected constructor, destructor, or type conversion vor ».«-Zeichen main.cc:18: Fehler: expected unqualified-id vor numerischer Konstante main.cc:19: Fehler: expected unqualified-id vor numerischer Konstante main.cc:20: Fehler: expected unqualified-id vor numerischer Konstante main.cc:21: Fehler: expected unqualified-id vor numerischer Konstante main.cc:22: Fehler: expected unqualified-id vor numerischer Konstante main.cc:23: Fehler: expected unqualified-id vor numerischer Konstante main.cc:24: Fehler: expected unqualified-id vor numerischer Konstante main.cc:25: Fehler: expected unqualified-id vor numerischer Konstante main.cc:26: Fehler: expected unqualified-id vor numerischer Konstante main.cc:27: Fehler: expected unqualified-id vor numerischer Konstante main.cc:28: Fehler: expected unqualified-id vor numerischer Konstante main.cc:29: Fehler: expected unqualified-id vor numerischer Konstante main.cc:30: Fehler: expected unqualified-id vor numerischer Konstante main.cc:31: Fehler: expected unqualified-id vor numerischer Konstante main.cc:32: Fehler: expected unqualified-id vor numerischer Konstante main.cc:33: Fehler: expected unqualified-id vor numerischer Konstante main.cc:34: Fehler: expected unqualified-id vor numerischer Konstante main.cc:35: Fehler: expected unqualified-id vor numerischer Konstante main.cc:35: Fehler: verirrtes »\178« im Programm main.cc:36: Fehler: expected unqualified-id vor numerischer Konstante main.cc:37: Fehler: expected unqualified-id vor »--«-Zeichen main.cc:38: Fehler: expected constructor, destructor, or type conversion vor »,«-Zeichen main.cc:38: Fehler: expected constructor, destructor, or type conversion vor "ON" main.cc:42: Fehler: »Init« bezeichnet keinen Typ main.cc:43: Fehler: »PORTD« bezeichnet keinen Typ main.cc:45: Fehler: »alle« bezeichnet keinen Typ main.cc:48: Fehler: expected unqualified-id vor numerischer Konstante main.cc:49: Fehler: expected unqualified-id vor »--«-Zeichen main.cc:51: Fehler: »wait« bezeichnet keinen Typ main.cc:53: Fehler: »wait« bezeichnet keinen Typ main.cc:55: Fehler: »Lauflicht« bezeichnet keinen Typ main.cc:57: Fehler: expected unqualified-id vor »--«-Zeichen main.cc:58: Fehler: expected constructor, destructor, or type conversion vor »-«-Zeichen main.cc:59: Fehler: »Ausgabe« bezeichnet keinen Typ main.cc:60: Fehler: verirrtes »\252« im Programm main.cc:60: Fehler: »R« bezeichnet keinen Typ main.cc:61: Fehler: expected unqualified-id vor »--«-Zeichen make.exe: *** [main.elf] Error 1 > Process Exit Code: 2 > Time Taken: 00:03 das program ist im anahng lgg
> ich glaube nun der verweis auf die programmdatei gefunden zu haben, und > habe im make file die dateieindung auf cc angepasst. Also vom Regen in die Traufe... mach das wieder rückgängig. .cc sind Quelldateien für die Sprache C++ und den Kompiler G++. Das willst du nicht haben, siehe die vielen Fehler bei den beiden neuen Kompilierversuchen. Das Makefile sieht OK aus. Die Quelldatei wird dort in diesen beiden Zeilen definiert: TARGET = main SRC = $(TARGET).c Somit ist main.c der korrekte Quelldateiname. Mein Kompilierversuch mit deinen Dateien endet in einer langen Fehlerliste. Der Grund ist klar: Es handelt sich überhaupt nicht um einen C-Quelltext. Dein main.c ist ein Assembler-Quelltext! Teste mal diese main.c für dein Blinklicht:
1 | #include <avr/io.h> |
2 | |
3 | #define NOSIM 1
|
4 | |
5 | int main(void) |
6 | {
|
7 | unsigned char r16; |
8 | unsigned char r17; |
9 | unsigned char r18; |
10 | |
11 | // ldi r16,0b11111111 ;PORTD auf Ausgang
|
12 | // out DDRD,r16
|
13 | r16 = 0xFF; |
14 | DDRD = r16; |
15 | |
16 | // ldi r16,0b00000000 ;alle Bits auf Low
|
17 | // out PORTD,r16
|
18 | r16 = 0; |
19 | PORTD = r16; |
20 | |
21 | // ldi r17,0b00000000
|
22 | // ldi r18,0b00000001 ;1 Lauflicht-Bit
|
23 | r17 = 0; |
24 | r18 = 1; |
25 | |
26 | // mainloop:
|
27 | // wdr
|
28 | do
|
29 | {
|
30 | // inc r16 ;wait
|
31 | r16++; |
32 | |
33 | // brne skip
|
34 | #if NOSIM
|
35 | if (!r16) |
36 | #else
|
37 | if (!(r16 % 2)) |
38 | #endif
|
39 | {
|
40 | // inc r17 ;wait
|
41 | r17++; |
42 | |
43 | // brne skip
|
44 | #if NOSIM
|
45 | if (!r17) |
46 | #else
|
47 | if (!(r17 % 2)) |
48 | #endif
|
49 | {
|
50 | // rcall run ;Lauflicht
|
51 | PORTD = r18; |
52 | r18 = (r18 << 1) | ((r18 & 0x80) ? 1 : 0); |
53 | }
|
54 | }
|
55 | // skip:
|
56 | // rjmp mainloop
|
57 | } while (1); |
58 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.