nicht int() sondern Init();
bitte benutze den code button um code zu posten. dann gibts diese hübsche kleine box...
Hallo ich habe den Asuro soweit jetzt zusammen gebaut und getestet es läuft alles so wie es sein soll, aber ich bin gerade dabei mir die Programmierung in c näher zu bringen. Und bin gerade bei dem Punkt "Schleifen". Mein problem bzw. meine Frage ist ich habe jetzt mal versucht das Programm was in der Anleitung steht zu übertragen und auf den Asuro zu Flashen aber er fährt nicht los so wie es glaube ich sein sollte oder? Hier ist der Auszug aus dem Programm:
#include "asuro.h"
int main(void){
int()
MotorDir(FWD,FWD);
MotorSpeed(120;120);
StatusLED(GREEN);
while (PollSwitch()==0){
SerWrite("Alles OK!\n",10);
}
MotorSpeed(0,0);
StatusLED(RED);
while (1){
SerWrite("Aua!\n",5);
}
}
Ich weiß nicht ob ich was falsch gemacht habe, oder geht das gar nicht mit dem " Programmers Notepad" doch oder?
Selbst wenn ich einfach Prgrammiere das die Status Led Geld leuchten soll keine Reaktion.
Vielleicht könnt Ihr mir helfen!
Vielen Dank im Vorraus
nicht int() sondern Init();
bitte benutze den code button um code zu posten. dann gibts diese hübsche kleine box...
Hallo,
das Programm hat Syntax-Fehler in Zeilen 3 und 5, das dürftest Du so nicht übersetzt gekriegt haben:Zitat von Felix1988
In Zeile 3 sollte es Init(); heißen, anstelle von int(), und in Zeile 5 müssen die Argumente von MotorSpeed() mit Komma getrennt sein.Code:C:\ASURO_src\AsuroLib\work\Simple1>make set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -I../../lib/inc -funsigned-char -fu nsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahl ms=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.exe (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 1956 0 .data 22 8388704 .bss 21 8388726 .noinit 0 8388747 .eeprom 0 8454144 .stab 8040 0 .stabstr 3174 0 Total 13213 avr-gcc -c -mmcu=atmega8 -I. -g -Os -I../../lib/inc -funsigned-char -funsigned-b itfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.l st test.c -o test.o test.c: In function `main': test.c:3: error: parse error before ')' token test.c:5: error: parse error before ';' token make: *** [test.o] Error 1
In Zeilen 8 und 13 solltest Du besser \r\n anstelle von \n nehmen, da Du sicher nicht nur eine Zeile nach unten, sondern zum nächsten Zeilenanfang im (Hyper)Terminal möchtest.
Hier der korrigierte Quelltext, Du solltest Quelltext mit [ code ][ / code ] einrahmen:
Code:#include "asuro.h" int main(void){ Init(); MotorDir(FWD,FWD); MotorSpeed(120,120); StatusLED(GREEN); while (PollSwitch()==0){ SerWrite("Alles OK!\r\n",11); } MotorSpeed(0,0); StatusLED(RED); while (1){ SerWrite("Aua!\r\n",6); } }
Hallo danke dafür, die Fehler hätte ich eigentlich auch finden können aber es scheint immer noch ein fehler zu sein ich habe dein korrigiertes Programm eingefügt und geflasht aber es ist das gleiche wie vorher er bewegt sich kein Stück oder muss man da erst noch irgendwo drauf drücken das er los fährt?
Felix
füg mal hinter init()
Msleep(1000);
ein. der asuro müsste dann nach ca einer sekunde losfahren. so wird verhindert, dass die pollswitch-abfrage schon zu beginn danebengreift.
halt mal den transceiver drüber. was "sagt" der asuro?
Du meinst sagen im Hyper Terminal? das sagt er gar nichts
Hi,
... da sollte er aber was sagen, zuerst immer "Alles OK!", und danach immer "Aua!" ...Zitat von Felix1988
Hier der Output bei mir, fährt bis Tasteranschlag, dann stoppt er und gib endlos "Aua!" aus:
Anbei mein Hexfile zum Vergleich und/oder Flashen.Code:Alles OK! Alles OK! Alles OK! Aua! Aua! Aua! Aua! Aua! Aua! Aua! Aua! Aua! Aua! Aua!
bist du sicher dass du das richtige file editiert, gespeichert, kompiliert undgeflasht hast? er muss mit dir reden, das ist sicher...
@HermannSW
Hallo also ich habe dein Programm geflasht und es hat funktioniert, wie kann ich mir den dein Programm anschauen? Was habe ich falsch gemacht? Im Programmers Notepad habe ich die "test.c" datei geladen und habe ich immer mit dem Tool "clean" alles "gecleant" und dann wenn ich mit dem Programm fertig war habe ich das Tool "make" benutzt und dann habe ich die entstandene Hex datei im Flash programm ausgewählt und geflasht. Oder habe ich einen fehler da gemacht?
Vielen dank im Vorraus!
Felix
du musst zuerst abspeichern, sonst wird eine leere hex-datei erstellt. das passiert mir bis heute gelegentlich mal...
Lesezeichen