Hallo, folgende Situation: Hardware: Arduino Mega2560 (Atmega2560) Software: Atmel Studio 6 Mein Problem: Ich würde gerne in Atmel Studio ein C-Programm zum LED-Blinken schreiben. Das Scheitert jedoch daran, dass jegliche Befehle wie 'DDRA' und 'PORTA' schon von Atmel Studio als Variable erkannt werden und er dazu eine Deklaration erstellen will. Folglich funktioniert der Build Vorgang nicht. Was ich gerne wissen würde: Wieso funktioniert der Build-Vorgang nicht? Wieso erkennt die Atmel IDE 'DDRC' nicht als Befehl und ändert die Schriftfarbe entsprechen dem Syntax highlighting? Was ich bisher tat: Ich habe das Blinken schon in Assembler programmiert und die erzeugte .hex mittels der 'avrdude.exe' (welche samt 'avrdude.conf' in dem Installationsverzeichnis der Arduino IDE liegt) per 'external Tool' in Atmel Studion auf das Arduino Board übertragen. (also über USB und Boot-loader) Das funktioniert auch. Vielen Dank und beste Grüße, Christian Hier noch der C-Code: #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { DDRC = 0xFF; //Makes PORTC as Output while(1) //infinite loop { PORTC = 0xFF; //Turns ON All LEDs _delay_ms(1000); //1 second delay PORTC= 0x00; //Turns OFF All LEDs _delay_ms(1000); //1 second delay } } Hier noch der Output des Build: (der Ordner 'avr8-gnu-toolchain' existiert bei mir tatsächlich nicht) ------ Build started: Project: HalloWelt, Configuration: Debug AVR ------ Build started. Project "HalloWelt.cproj" (default targets): Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!=''). Target "CoreBuild" in file "D:\Programme\Atmel Studio\Vs\Compiler.targets" from project "C:\Users\Christian\Hobbies\Arduino\Arduino und AmtlemStudio\Erste_Versuche\HalloWelt\HalloWelt\HalloWelt.cproj" (target "Build" depends on it): Task "RunCompilerTask" D:\Programme\Atmel Studio\shellUtils\make.exe all Building file: .././HalloWelt.c Invoking: AVR/GNU C Compiler : 0.0.0 "D:\Programme\Atmel Studio\extensions\Atmel\AtmelToolchainProvider\6.1.0.447\avr8-gnu-toolch ain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -mrelax -g2 -Wall -mmcu=atmega2560 -c -std=gnu99 -MD -MP -MF "HalloWelt.d" -MT"HalloWelt.d" -MT"HalloWelt.o" -o "HalloWelt.o" ".././HalloWelt.c" Das System kann den angegebenen Pfad nicht finden. make: *** [HalloWelt.o] Error 1 Done executing task "RunCompilerTask" -- FAILED. Done building target "CoreBuild" in project "HalloWelt.cproj" -- FAILED. Done building project "HalloWelt.cproj" -- FAILED. Build FAILED. ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
.././HalloWelt.c das sieht mir merkwürdig aus. In welcher Ordner liegen die Dateien? DDRC sind keine befehle und welche Farbe sie haben will der Compiler nicht wissen.
Die Dateien liegen in der Standard-Projektordnerstruktur welche Atmel Studio erstellt. Also mich verwundert einerseits, dass das Syntaxhighlighting nicht funktioniert. Daraus würde ich schließen, dass die Bibliothek avr/io.h nicht gefunden wird. Andererseits verwundert mich, dass der Ordner in dem sich die Compiler exe befinden sollte nicht existiert. (siehe Compiler Output)
Christian schrieb: > Also mich verwundert einerseits, dass das Syntaxhighlighting nicht > funktioniert. Daraus würde ich schließen, dass die Bibliothek avr/io.h > nicht gefunden wird. DDRC ist kein Befehl (den Begriff "Befehl" gibt es in C sowieso nicht) und auch kein C-Schlüsselwort (wie bspw. "for", "if", "return" usw.), sondern ein Makro, das wie eine Variable verwendet wird. Deswegen stellt es der Syntax-Highlighter auch in der gleichen Farbe wie eine Variable dar. Der C-Code ist jedenfalls korrekt und kompiliert bei mir ohne Fehler und Warnungen. Das Problem liegt wahrscheinlich in einer nicht vorhandenen, unvollständigen oder fehlerhaften Installation der GCC-Toolchain. Dabei kann dir aber nur jemand helfen, der das Atmel Studio 6 schon einmal benutzt hat.
Ok vielen Dank für die Aufklärung. Ich glaube allerdings in Bildern und Videos gesehen zu haben, dass diese Makros auch vom Syntax-Highlighter in Atmel Studio erkannt werden. Nun ja dann versuche ich es ersteinmal einfach mit einer Neuinstallation. Aber ansonsten wird dann der von mir genutzte Weg weiterhin funktionieren? Also das Übertragen des .hex files mittels 'avrdude.exe' der Arduino-IDE?
Ist jetzt vielleicht nicht die Antwort auf deine Frage. Ich finde Atmel Studio 6 zumindest für mich eindeutig überdimensioniert. Ich nutze 4.19 Build 730. Ist in der Installation und Bedienung m.E. deutlich enfacher und übersichtlicher.
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.