Hallo erstmal, in leichter bis mittelschwerer Verzweiflung wende ich mich auch mal ans Forum. Im Anflug blinder Bastelwut habe ich im Urlaub mir wohl ein Projekt ausgesucht was ich nicht gedeichselt krieg. Im Forum "Microcontroller und Elektronik - cd-wechsler Protokoll" rumgestöbert, cdcemu gefunden, Hardware gebastelt für mein altes VW -Gamma, Hardware läuft. Alles Top. Ich krieg aber dieses C-File nicht kompiliert. Leider versteh ich die Einstellungen nich so wirklich von AVR Studio. Kann mir bitte jemand helfen? eingestellt ist ATmega8 wie man sieht, aber attiny12 währe auch nicht schlecht. Wahrscheinlich ist das einfach zu schaffen, aber ich Dinosaurier kriegs nicht "in my Brain". hier das makefile ######################################################################## ####### # Makefile for the project cdcemu ######################################################################## ####### ## General Flags PROJECT = cdcemu MCU = atmega8 TARGET = cdcemu.elf CC = avr-gcc CPP = avr-g++ ## Options common to compile, link and assembly rules COMMON = -mmcu=$(MCU) ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d ## Assembly specific flags ASMFLAGS = $(COMMON) ASMFLAGS += $(CFLAGS) ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2 ## Linker flags LDFLAGS = $(COMMON) LDFLAGS += -Wl,-Map=cdcemu.map ## Intel Hex file production flags HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature HEX_EEPROM_FLAGS = -j .eeprom HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings ## Objects that must be built in order to link OBJECTS = main.o ## Objects explicitly added by the user LINKONLYOBJECTS = ## Build all: $(TARGET) cdcemu.hex cdcemu.eep cdcemu.lss size ## Compile main.o: ../main.c $(CC) $(INCLUDES) $(CFLAGS) -c $< ##Link $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET) %.hex: $(TARGET) avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ %.eep: $(TARGET) -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0 %.lss: $(TARGET) avr-objdump -h -S $< > $@ size: ${TARGET} @echo @avr-size -C --mcu=${MCU} ${TARGET} ## Clean target .PHONY: clean clean: -rm -rf $(OBJECTS) cdcemu.elf dep/* cdcemu.hex cdcemu.eep cdcemu.lss cdcemu.map ## Other dependencies -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*) und die c.datei Vielen Dank erstmal
Marco Hedemann schrieb: > Ich krieg aber dieses C-File nicht kompiliert. Und wie soll man da helfen? Du mußt schon die Fehlermeldung zeigen! Und laß das Makefile in Ruhe, das macht das AVRStudio schon richtig. Ich vermute mal, das ist Mumpitz:
1 | #define pSS B2 (0x04)
|
2 | #define pDATA B3 (0x08)
|
3 | #define pCLK B5 (0x20)
|
Streich das B2, B3, B5 weg. Peter
Im AVR Studio hast du normalerweise keinen direkten Kontakt mit einem Makefile. Du setzt ein Projekt auf und wählst aus dem Menü Build. Das Projekt setze ich bei einfachen Projekten wie folgt auf: AVR Studio starten, AVR GCC Compiler auswählen, Verzeichnis auswählen, Projektnamen auswählen (es wird ein entsprechender Ordner im angegebenen Verzeichnis angelegt). Ziel-µC auswählen. Programmierhardware auswählen (AVR Simulator). Bestehenden Quellcode per Copy&Paste in das leere Editorfenster kopieren. Speichern. In AVR Studio im Menü unter der Projekt Konfiguration noch die Taktrate eintragen und die Optimierung anschalten. Jetzt sollte ein Build funktionieren. Das Ergebnis kann man im Simulator prüfen oder mit entsprechendem Programmieradapter zur µC-Schaltung übertragen. Das war es im Groben. Wenn du Probleme hast, kannst du den Projektordner zippen und an deine nächste Frage anhängen.
Danke erstmal für die schnellen Antworten. Ich probiers mal aus. Makefile habe ich auch in Ruhe gelassen, ist von avr-Studio. @peda OK. Kann sein das das Mumpitz ist. kommt aber so aus dem Forum. Probier ich aus.
Marco Hedemann schrieb: > OK. Kann sein das das Mumpitz ist. kommt aber so aus dem Forum. Probier > ich aus. Tipp: Setze nächstens einen Link zum Original. Das kann die Fehlersuche enorm erleichtern oder beschleunigen.
@Stefan, hmmm, stimmt. hier der link. Beitrag "CD Wechsler Protokoll" beitrag vom 23.03.2008 20.44 Uhr Andreas Watterott Wenn du lust hast kannst du dir das ja mal anschauen. Nachdem ich pedas Ratschlag umgesetzt habe und B2 B3 und B5 , dazu noch aus der main.c die //init ports gestrichen habe funktionierte auch ein Build. War aber nach dem Übertragen auf die Hardware nicht funktionsfähig. Ich werde mich in die AVR Programmierung nochmal versuchen einzulesen. Gerade dieses einfache Programm sollte ich (irgendwann) wohl durchschauen. Nochmals Danke. ich lad später mal die gepackten Dateien von AVR-Studio hoch.
Damit ist schon dieser Teil klar
1 | #define B2 (0x04)
|
2 | #define B3 (0x08)
|
3 | #define B5 (0x20)
|
4 | |
5 | #define pSS B2
|
6 | #define pDATA B3
|
7 | #define pCLK B5
|
Bzw. mit moderner Schreibweise
1 | #define pSS (1<<PB2)
|
2 | #define pDATA (1<<PB3)
|
3 | #define pCLK (1<<PB5)
|
> dazu noch aus der main.c die > //init ports gestrichen habe funktionierte auch ein Build. Die beiden Anweisungen unterhalb //init ports sind aber wesentlich für die Funktion des Programms. pDATA und pCLK müssen auf Ausgang geschaltet werden. Und der interne Pullup-Widerstand am Eingang pSS muss angeschaltet werden. Ohne diese Zeilen kann es niemals funktionieren. Wenn die Zeilen Übersetzungsfehler produzieren, dann diese Fehler mit Copy&Paste zeigen damit sie verbessert werden können.
Vielen Dank für die Hilfe. werde ein wenig probieren.
Wieder da, erstmal nen Spaziergang gemacht. An der frischen Luft kommen einem ja bekanntlich die besten Ideen. Bei anderen... Naja hab angehängtes File durchlaufen lassen mit avr studio. Diese Meldungen sind erschienen: Build started 30.11.2010 at 17:54:09 avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c In file included from ../main.c:4: e:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." In file included from ../main.c:6: e:/winavr-20100110/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>." ../main.c:14: error: expected ')' before 'c' ../main.c: In function 'main': ../main.c:46: warning: implicit declaration of function 'send' make: *** [main.o] Error 1 Build failed with 1 errors and 3 warnings... Nur noch ein Fehler Stefans Tipp bzw Hinweis hat was gebracht
Marco Hedemann schrieb: > ../main.c:14: error: expected ')' before 'c' Die typedef
1 | typedef int8_t INT8; //char |
2 | typedef uint8_t UINT8; //unsigned char |
3 | |
4 | typedef int16_t INT16; //int |
5 | typedef uint16_t UINT16; //unsigned int |
6 | |
7 | typedef int32_t INT32; //long |
8 | typedef uint32_t UINT32; //unsigned long |
9 | |
10 | typedef int64_t INT64; //long long |
11 | typedef uint64_t UINT64; //unsigned long long |
hättest du drinnen lassen sollen. Jetzt weiss dein Compiler nicht, was ein UINT8 ist und kann daher mit
1 | void send( UINT8 c ) |
2 | {
|
3 | ...
|
4 | }
|
nichts anfangen
> Nur noch ein Fehler Stefans Tipp bzw Hinweis hat was gebracht
Schön langsam hasse ich mich dafür.
Aber am meisten würde es was bringen, nicht blauäugig in ein µCProjekt
zu gehen und zu glauben "Ich krieg das schon hin" wenn man keine einzige
Zeile selber programmieren kann, sondern erst mal eine
Programmiersprache lernen.
@ Moderator Das ist das Ergebnis auf das ich auch gekommen bin. Ich dachte ich nehm mir das File aus dem Forum, kompiliere das und gut. Aber es geht halt nicht ohne Verständnis. Naja ist halt lernen angesagt. Vielen Dank gruß marco
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.