Forum: Mikrocontroller und Digitale Elektronik Anfänger: C-Programmierung in Atmel Studio 6


von Christian (Gast)


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 
==========

von Peter II (Gast)


Lesenswert?

.././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.

von Christian (Gast)


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)

von Yalu X. (yalu) (Moderator)


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.

von Christian (Gast)


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?

von Visitor (Gast)


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.

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
Noch kein Account? Hier anmelden.