Anfänger: C-Programmierung in Atmel Studio 6

Gast #3482476
Lesenswert?

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 
==========
Gast #3482497
Lesenswert?

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)
Moderator #3482527
Lesenswert?

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.
Gast #3482554
Lesenswert?

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?
Gast #3482571
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren