PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro führt programme nicht aus



tortelini66
27.07.2010, 15:32
hey Leute,
ich habe mir jetzt auch einen asuro gekauft,
und zusammengelötet.
Den selbsttest hat er mit bravour bestanden, also es funktioniert alles einwandfrei!
Wenn ich jetzt ein neues programm flashe, und nach dem flashen, aus und wieder einschalte, bootet er (back led´s glimmen und status led ist orange)
und danach wird die status led grün, danch passiert nichts mehr!!!
Das passiert bei jedem programm!!!!!!!

Was kann ich tun?????? :-k

Ezalo
27.07.2010, 15:49
Poste doch bitte mal eine Programm.

tortelini66
27.07.2010, 16:09
z.b.

#include “asuro.h”
int main(void) {
Init();
StatusLED(RED);
while(1);
return 0;
}

tortelini66
27.07.2010, 16:10
zusätzlich kommt bei obigem programm jetzt noch folgender fehler wenn ich den compiler starte:


C:\ASURO_src\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
test.c:1:10: #include expects "FILENAME" or <FILENAME>
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
test.elf :
section size addr
.text 1512 0
.data 0 8388704
.bss 1 8388704
.noinit 0 8388705
.eeprom 0 8454144
.stab 3120 0
.stabstr 1698 0
Total 6331


avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c:1:10: #include expects "FILENAME" or <FILENAME>
test.c: In function `main':
test.c:3: warning: implicit declaration of function `Init'
test.c:4: warning: implicit declaration of function `StatusLED'
test.c:4: error: `RED' undeclared (first use in this function)
test.c:4: error: (Each undeclared identifier is reported only once
test.c:4: error: for each function it appears in.)
make: *** [test.o] Error 1

> Process Exit Code: 2

Ezalo
27.07.2010, 16:20
Hm... dafür hab ich leider keine Lösung. Bin noch nicht solange dabei, musst du wohl leider (wie ich in meinem Thread :-D) warten

tortelini66
27.07.2010, 16:28
was mir aufgefallen ist: das rätselprogramm von stochri, funzt bei mir einwand frei!!
schade das ich den c code davon nicht habe, sonst könnt ich es ja mal vergleichen!

Ezalo
27.07.2010, 16:35
Fehler gefunden :D mach die " mal mit "Umschalt + 2"

tortelini66
27.07.2010, 16:45
ich dussel wie dumm man sein kann :D
aber danke für die schnelle hilfe :D

tortelini66
27.07.2010, 17:03
und wo ist hier der fehler???

#include "asuro.h"
int main(void) {
Init ()
int zaehler; // Variable für’s Zählen deklarieren
for (zaehler=0; zaehler<10; zaehler++) { // zehnmal wiederholen:
SerWrite(“Los geht’s!\n”,12); // “Los geht’s” schicken
}
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
while (1) { // Danach nichts mehr machen!
} }



beim compilieren kommt folgendes:


C:\ASURO_src\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
test.elf :
section size addr
.text 1516 0
.data 0 8388704
.bss 1 8388704
.noinit 0 8388705
.eeprom 0 8454144
.stab 3132 0
.stabstr 1698 0
Total 6347


avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c: In function `main':
test.c:4: error: parse error before "int"
test.c:5: error: `zaehler' undeclared (first use in this function)
test.c:5: error: (Each undeclared identifier is reported only once
test.c:5: error: for each function it appears in.)
test.c:6: error: stray '\223' in program
test.c:6: error: `Los' undeclared (first use in this function)
test.c:6: error: parse error before "geht"
test.c:6: error: stray '\222' in program
test.c:6: error: stray '\' in program
test.c:6: error: stray '\224' in program
test.c:11:4: warning: no newline at end of file
make: *** [test.o] Error 1

> Process Exit Code: 2

Ezalo
27.07.2010, 17:07
#include "asuro.h"
int main(void) {
Init ();
int zaehler; // Variable für’s Zählen deklarieren
for (zaehler=0; zaehler<10; zaehler++) { // zehnmal wiederholen:
SerWrite("Los geht’s!\n",12); // “Los geht’s” schicken
}
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
while (1) { // Danach nichts mehr machen!
}
return(0);
}

und das return(0);
Inti();
und wieder " mit Umschalt + 2...

tortelini66
27.07.2010, 17:16
is deins jetzt so wie es sein soll, weil so ganz check ich den post grade nich!!!

hehe *schäm*

Is ahlt noch neuland für mich

Ezalo
27.07.2010, 17:23
Vergleich den von dir geposteten Code mit meinem, dann wirste den unterschied sehen. Wäre für dich vllt auch hilfreich im internet nach ein paar Tutorials zu suchen. Damit du dir erstmal ein paar Grundlagen von C aneigenen kannst.

tortelini66
27.07.2010, 17:37
ahh danke.
so langsam machts klick

tortelini66
27.07.2010, 18:15
also jetzt hab ichs verstanden!!! *freu*
dieses programm hier:

#include "asuro.h"
int main(void) {
Init ();
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
StatusLED(GREEN); // Status-Leuchtdiode auf grün schalten
while (PollSwitch()==0) { // Solange keine Kollision erfolgte...
SerWrite("Alles OK!\n",10); // ... Euphorie verbreiten
}
MotorSpeed(0,0); // Kollision! Sofort anhalten!
StatusLED(RED); // Statusleuchtdiode rot schalten
while (1) {
SerWrite("Aua!\n",5); // und weinen!
}
}

funktioniert auch gut und ich hab auch verstanden wieso!!!


mein problem manchmal hält der auch ohne kollision an, und manchmal fährt er gar nicht erst los!!

das verstehe ich nun wirklich nicht!

Was kann ich tun????

Ezalo
27.07.2010, 18:41
Durchsuch doch mal das Forum ein wenig ^^ Dann lernst du auch gleich mit der SuFu umzugehen :D

tortelini66
27.07.2010, 18:50
ok hehe :D :D
problem hat sich aber gelöst, mit motorspeed 160,165 klappts jetzt sehr gut

Valen
28.07.2010, 16:25
Vergleich den von dir geposteten Code mit meinem, dann wirste den unterschied sehen. Wäre für dich vllt auch hilfreich im internet nach ein paar Tutorials zu suchen. Damit du dir erstmal ein paar Grundlagen von C aneigenen kannst.;) http://www.rn-wissen.de/index.php/C-Tutorial

http://www.acm.uiuc.edu/webmonkeys/book/c_guide/index.html


mein problem manchmal hält der auch ohne kollision an, und manchmal fährt er gar nicht erst los!!

das verstehe ich nun wirklich nicht!Den motoren machen elektrische störungen auf den analoge spannungmessung leitungen. Dadurch denkt der Asuro das den (2) Taster ganz rechts angestossen werden. Lössung ist mehrfach messen und vergleichen ob es eine stabiele zustand ist. Störung ist das meistens nicht, anstossen meistens schon. Wie gesagt, das ist schon oft beschrieben im forum.

AnhDung
03.08.2010, 14:20
hallo,
ICH habe vor einpaar Tage Auch Ein Asuro Bausatz Gekauft und zusammengelötet . Den " Selbsttest " Hat bei mir auch funktioniert .
ABER ALS Programm geflasht Habe ich ( mein Programm auch Das same Wie von tortelini66 ), LED Leuchtet der Status Nur grün und tut Nichts anderes .
Obwohl ich den ganzen Thema gelesen Habe , ES Habe ich Immer Noch Nicht verstanden Wie ich es Machen Söll .
Ich bin ein absoluter Anfänger , ich könnt IHR MIR Hoffe DABEI einbisschen ausführlicher erklären !
Danke im Voraus!

Martinius11
03.08.2010, 14:35
aber beim selftest hat sich die farbe noch geändert?

Ezalo
03.08.2010, 15:38
hast du sein Programm 1 zu 1 übernommen oder selber etwas daran verändert? Poste doch ambesten mal deinen Quellcode

AnhDung
03.08.2010, 16:33
[Quote = " Martinius11 "] ABER beim Selbsttest Hat Sich NOCH Die Farbe geändert ? [/ Quote]
[I] Ja! ABER ALS ich der Programm geflasht Habe, ER Nicht Leuchtet rot ? [/ I]
[Code] # include " asuro.h "

int main ( void)
{
Init () ;
StatusLED (RED)
while (1) ;
return 0;
}
[/ Code]
[I] DABEI Erscheint folgende Meldung : [/ i]
[I] > "C: \ FirstTry \ Test - all.bat "

C: \ FirstTry > make all
set- e; avr- gcc -MM- mmcu = atmega8 -I. -G- Os - funsigned -char- funsigned - Bitfelder - fpack - struct - fshort - Enumerationen -Wall- Wstrict - Prototypen - Wa, - = ahlms asuro.lst asuro.c \
| sed ' s, \ (.* \) \. o [ : ] * \ 1.o \ 1.d : , g '> asuro.d ; \
[ S - asuro.d ] | | rm- f asuro.d
set- e; avr- gcc -MM- mmcu = atmega8 -I. -G- Os - funsigned -char- funsigned - Bitfelder - fpack - struct - fshort - Enumerationen -Wall- Wstrict - Prototypen - Wa, - = ahlms TEST.LST test.c \
| sed ' s, \ (.* \) \. o [ : ] * \ 1.o \ 1.d : , g '> test.d ; \
[ S - test.d ] | | rm- f test.d
-------- -------- Beginnen
avr- gcc - version
avr- gcc ( WinAVR 20100110 ) 4.3.3
Copyright ( C) 2008 Free Software Foundation , Inc.
Dies ist freie Software, siehe sterben Quelle für Das KOPIEREN von Bedingungen . Es GIBT KEINE
Garantie, für Nicht Einmal MARKTREIFE Oder der eignung FÜR EINEN BESTIMMTEN zweck .

avr- gcc -c- mmcu = atmega8 -I. -G- Os - funsigned -char- funsigned - Bitfelder - fpack - struct - fshort - Enumerationen -Wall- Wstrict - Prototypen - Wa, - = ahlms TEST.LST test.c -o test.o
In der mitgelieferten Datei asuro.h : 34,
von test.c : 1:
c: / winavr-20100110/lib/gcc/../../avr/include/avr/signal.h : 36:2 : Warnung : # warning " This Header -Datei ist veraltet . Verwenden < avr / interrupt.h > . "
avr- gcc -c- mmcu = atmega8 -I. -G- Os - funsigned -char- funsigned - Bitfelder - fpack - struct - fshort - Enumerationen -Wall- Wstrict - Prototypen - Wa, - = ahlms asuro.lst asuro.c -o asuro.o
In der mitgelieferten Datei asuro.h : 34,
von asuro.c : 29:
c: / winavr-20100110/lib/gcc/../../avr/include/avr/signal.h : 36:2 : Warnung : # warning " This Header -Datei ist veraltet . Verwenden < avr / interrupt.h > . "
avr- gcc- mmcu = atmega8 -I. -G- Os - funsigned -char- funsigned - Bitfelder - fpack - struct - fshort - Enumerationen -Wall- Wstrict - Prototypen - Wa, - = ahlms test.o test.o asuro.o - output test.elf -Wl , - Karte = test.map , - cref -lm
AVR- objcopy -O ihex -R. eeprom test.elf test.hex
AVR- objcopy -j . EEPROM - set- ABSCHNITT - flags = =. eeprom " Alloc , load " \
- Change -section- LMA . eeprom = 0 -O ihex test.elf TEST.EEP
c: \ WinAVR - 20100110 \ bin \ avr- objcopy.exe : - change- section- LMA . eeprom = 0x00000000 nie benutzt
AVR -objdump- h -S test.elf > test.lss
Größe nach:
test.elf :
ABSCHNITT Größe addr
. Text 1692 0
. bss 1 8388704
. debug_aranges 64 0
. debug_pubnames 263 0
. debug_info 1060 0
. debug_abbrev 401 0
. debug_line 1120 0
. debug_frame 288 0
. debug_str 350 0
. debug_loc 388 0
Total 5627


Fehler: none
-------- -------- Ende

> Process Exit Code: 0
> Time Taken : 00:04
[ / i]

Martinius11
03.08.2010, 16:43
du hst das ; bei StatusLED vergessen

Ezalo
03.08.2010, 16:46
es wundert mich das der Compiler keinen Fehler ausspuckt :-/

dein code:


int main ( void)
{
Init () ;
StatusLED (RED)
while (1) ;
return 0;
}

so würde ichs schreiben:


int main ( void)
{
Init () ;
StatusLED (RED);
while (1) ;
return 0;
}

klein aber fein der Fehler ^^ fehlt ein ; aber das der compiler net meckert versteh ich net :-/

AnhDung
03.08.2010, 17:48
danke für sterbe Schnelle antwort !
ICH HABE ES geändert und geflasht,
ABER Es leuchtet Immer Noch Nicht rot

Ezalo
03.08.2010, 17:56
Hab dein Problem jetzt glaube gefunden, hast du "# include " asuro.h " oder "#include "asuro.h" in dem Quellcode stehen? Wenn ersteres, versuch bitte mit weniger Leerzeichen zu arbeiten... Aber dann versteh ich wieder nicht warum dein Compiler da keinen Fehler bringt...

AnhDung
03.08.2010, 17:58
kann mir jemand erklären wie diese HTMl funktioniert?
ich schreibe etwas und er zeigt was ganz anderes
(wie z.B oben)

Ezalo
03.08.2010, 18:12
HTMI?

Du klickst z.B. auf Code, dann schreibst du eben den Quellcode, bei dem Button "Code" ist jetzt ein * dahinter. Wenn du den kompletten Quellcode geschrieben hast, klickst du auf "Code*". Dann müsste es gehen.

oder versuchs mal mit kleinschreiben statts groß wie z.B. bei [Code]

AnhDung
03.08.2010, 18:17
danke
ich habe nochmal ohne Leerzeichen versucht
trotzdem funktioniert es nicht

Ezalo
03.08.2010, 18:20
kopier dir das mal:


#include "asuro.h"

int main(void){
Init();
StatusLED(RED);
while(1);
return 0;
}

AnhDung
03.08.2010, 18:23
Ich habe der programm geändert:

#include"asuro.h"

int main(void)
{
Init();
StatusLED(RED);
while(1);
return 0;
}
dabei erscheint folgende Fehlermeldung:
C:\ASURO_src\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
C:\Users\AnhDung\AppData\Local\Temp\make564602.sh: /c/WinAVR/bin/avr-gcc: Invalid argument
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
C:\Users\AnhDung\AppData\Local\Temp\make564603.sh: /c/WinAVR/bin/avr-gcc: Invalid argument
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
avr-objcopy -O ihex -R .eeprom test.elf test.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex test.elf test.eep
avr-objdump -h -S test.elf > test.lss
Size after:
C:\Users\AnhDung\AppData\Local\Temp\make564608.sh: /c/WinAVR/bin/avr-size: Invalid argument
make: *** [sizeafter] Error 126

> Process Exit Code: 2

AnhDung
03.08.2010, 18:29
ich habe dein code kopiert, aber es funktioniert immer noch nicht.

AnhDung
03.08.2010, 20:52
Inzwischen habe ich ein neue Programm geschrieben.
könnt ihr mal schauen, ob da irgend ein Fehler ist
Danke!

#include "asuro.h"
int main(void) {

Init();
StatusLED(RED);
MotorDir(FWD,FWD);
MotorSpeed(255,255);
BackLED(ON,ON);
Sleep(216);
SerWrite("System OK!",10);
while(1); // Endlosschleife
return 0;
}

Valen
03.08.2010, 21:05
Dein Programm sieht an sich gut aus.


dabei erscheint folgende Fehlermeldung:
C:\ASURO_src\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
C:\Users\AnhDung\AppData\Local\Temp\make564602.sh: /c/WinAVR/bin/avr-gcc: Invalid argument Versuch mal eine neuere version von den WinAVR compiler zu installieren. Die version auf die Asuro CD funktioniert nicht immer korrekt mit Windows Vista und 7.

http://winavr.sourceforge.net/

radbruch
03.08.2010, 21:07
SerWrite("System OK!\n\r",12);

Die Steuerzeichen \n und \r bewirken, dass die Ausgabe im Terminal sofort dargestellt wird.

Gruß

mic

AnhDung
03.08.2010, 21:49
danke für die schnelle Antwort
Ich werde es noch mal versuchen

AnhDung
04.08.2010, 08:58
Danke Leute, mein Programm hat endlich funktioniert, es leuchtet endlich rot. :D :D
Ihr wart für mich ein große Hilfe!
Und nochmals vielen Dank!

Valen
04.08.2010, 10:11
Was genau war den Lösung?

AnhDung
04.08.2010, 13:42
Naja,ich habe die alte Winavr und die Datei von asuro aus mein Computer gelöscht.Dann habe ich die neue Version von heruntergeladen und den neue Flash153 aus dem Internet heruntergeladen und alles von vorne angefangen wie in der Anleitung. Ich weiß selbe nicht wie, aber irgend wie hat es funktioniert :-k :-k
vielleich war es wegen der Winavr oder vielleicht, weil ich die Datei "Asuro_src" in den Winavr Ordne kopiert habe
C:\WinAVR-20100110\ASURO_src
Keine Ahnung :?: :?:
Wie gesagt, ich habe erst gerade mit programmieren angefangen .
Und nochmals vielen Dank, dass ihr mich geholfen hat.

Valen
04.08.2010, 13:53
C:\WinAVR-20100110\ASURO_srcDas ist im Prinzip kein Problem. Nur wen du eine weitere neue version von WinAVR installieren willst, und vergist das deine Asuro Programmen noch dort drin sind... und dan verschwunden sind.

Die Programmen in einer mappe wie C:\ASURO_src setzten macht weniger Mühl auf deine festplatte. Aber dan muss in jeder makefile die Pfad zum WinAVR compiler angepasst werden.

-guenny-
19.09.2010, 15:16
Ich habe das selbe Problem wie du...
hab mir jetzt auch die aktuellste Version von WINAVR geladen und das Flash 1.5.3 tool. allerdings werden wenn ich compiliere, sprich auf make klicke, die selbstgeschriebene Zeile wieder entfernt.

--vor make----

#include"asuro.h"

int main(void)
{
Init();
StatusLED(RED);
while(1);
return 0;
}

---nach make---
#include"asuro.h"

int main(void)
{
Init();

while(1);
return 0;
}


Was ist da los?

radbruch
19.09.2010, 15:37
Speichern vergessen vor dem Kompilieren?

-guenny-
19.09.2010, 16:04
überragend!
danke