PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler beim C-Testprogramm des RN-Control ?



Moebius
08.02.2009, 23:44
Hi,
ich habe ein seltsames Problem. Ich habe Code-Blocks installiert und wollte damit Programme für mein RN-Cotrol schreiben.

Ein einfaches wie dieses hier kann ich auch kompilieren:


#include <avr/io.h>

int main(void)
{

// Insert code

DDRA |= 0x00; //00000000 -> alle Analogports als Eingänge
DDRB |= 0x03; //00000011 -> PORTB.0 und PORTB.1 sind Kanäle des rechten Motors
DDRC |= 0xFF; //11111111 -> PORTC.6 und PORTC.7 sind Kanäle des linken Motors, Rest sind LEDs für Lauflicht
DDRD |= 0xB0; //10110000 -> PORTD.4 ist PWM-Kanal des linken Motors, PORTD.5 des rechtenccff

return 0;
}

Danach wollte ich mal das Demoprogramm (https://www.roboternetz.de/wissen/index.php/RN-Control_Demprogramm_in_C) mit dem dazugehörigen Header kompilieren. Dabei gibt er mir aber einige Fehler aus? oO

Die Fehler sind praktisch alle gleich und lauten:


rncontrol.h|199|error: 'for' loop initial declaration used outside C99 mode|

Was mache ich falsch?

Mfg Moebius

sternst
09.02.2009, 06:18
Was mache ich falsch?
Du hast dem Compiler keinen (oder den falschen) C-Standard vorgegeben, denn sowas wie "for (int i = 0;" ist erst seit dem letzten C-Standard erlaubt.
Ergänze die Compileroptionen um "-std=c99".

askazo
09.02.2009, 06:18
Dein Problem ist, dass Du dem Compiler sagen musst, dass er den C99-Standard verwenden soll. Sonst arbeitet er im C90 oder C95-Modus und da sind so Sachen wie Deklarationen innerhalb von for-Anweisungen nicht erlaubt.

Um den C99-Modus einzuschalten, musst Du folgende Compileroption in Dein makefile einfügen:

-std=gnu99

Gruß,
askazo

oberallgeier
09.02.2009, 08:32
Wenn Du AVRStudio benutzt und dabei wie ich ohne jedes makefile arbeitest, dann gehst Du auf die oberste Toolleiste [Projekt], im Flyout klickst Du ganz unten? auf [Cofiguration Options] (oder in der AVRGCCPLUGIN-Toolleiste auf dieses seltsame Zahnrad) dort wieder ganz unten auf [Custom Options]. Du bekommst zwei Fenster zu Custom Compilation Options. Das rechte kannst Du editieren: Drücke auf [add] und füge unten dieses
-std=gnu99
ein.

Danach sollte der Compiler richtig arbeiten.

sternst
09.02.2009, 09:19
Ich habe Code-Blocks installiert und wollte damit Programme für mein RN-Cotrol schreiben.

Wenn Du AVRStudio benutzt ...
;-)

Moebius
09.02.2009, 10:29
Da hab ich abe viele Antworten bekommen 8-[

Der Befehl
-std=gnu99 hat mein Problem jetzt aber auch gelöst.

Dazu musste ich den Reiter Project/Build Options anklicken.
Dort dann auf den Projectname klicken und den Reiter Compiler settings/Other options anklicken. Danach kann man dort einfach den gegebenen Befehl reinschreiben. Das wars. :)

Da habe ich aber gleich die nächste Frage:

Nachdem der das Programm kompiliert hat, sind jetzt folgende Dateien entstanden:

name.elf
name.elf.eep.hex
name.elf.hex
name.elf.map

Ehrlich gesag hatte ich gehofft der gibt mir nur eine Datei mit der Endung .hex aus? Was sind denn diese ganzen Dateien?

Mfg Moebius

oberallgeier
09.02.2009, 10:29
Ok, sternst - ich schiebe es auf meine Brille *gggg*. Sorry.