Weiß jemand wo hier der Prpgrammierfehler liegt?
ich habe heute mit "c" angefangen und habe etwas Probleme mit einigen errormeldungen:
Wo liegt hier der Fehler?:
Code:
#include "asuro.h"
int main (void){
unsigned char taste;
Init();
taste=PollSwitch();
if (taste=0);
{MotorDir(FWD,FWD);
MotorSpeed(140,120);
StatusLED(GREEN);
}
else
{MotorSpeed(0,0);
Sleep(200);
MotorDir(RWD,RWD);
MotorSpeed(140,120);
Sleep(1000);
MotorDir(RWD,FWD);
MotorSpeed(120,140);}
while(1);
return;}
Die Errormeldung:
> "C:\Users\Christoph\Documents\ASURO_src\FirstTry\T est-all.bat"
Code:
C:\Users\Christoph\Documents\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) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 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 2558 0
.data 256 8388704
.bss 1 8388960
.stab 888 0
.stabstr 95 0
.debug_aranges 64 0
.debug_pubnames 263 0
.debug_info 988 0
.debug_abbrev 388 0
.debug_line 1060 0
.debug_frame 288 0
.debug_str 410 0
.debug_loc 457 0
Total 7716
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
In file included from asuro.h:34,
from test.c:1:
c:/winavr-20071221/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
test.c: In function 'main':
test.c:8: warning: suggest parentheses around assignment used as truth value
test.c:15: error: expected expression before 'else'
test.c:29: error: expected declaration or statement at end of input
make: *** [test.o] Error 1
> Process Exit Code: 2
> Time Taken: 00:00
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo ostoff,
ich hatte bei meinen ersten Versuchen auch erstmal ein paar Rückschläge zu verkraften, wie ich jetzt weiß oft aufgrund von falschen Vorstellungen was die Sensoren zurückgeben würde. Naiv wie ich war glaubte ich, ich könnte in etwa mit den Werten aus dem Handbuch rechnen.(Blasphemie, zumindes bei odo und line Sensoren ^^)
Nachdem ich mir ein paar Programme gebastelt hatte um die einzelnen Sensorwerte auszulesen und über das Hyperterminal auszugeben, lief es dann besser.
Hier das Programm um die Taster auszulesen, im Anhang das hex-File.
Eigentlich einfach, nur müssen die Zahlen die die Sensoren liefern in einen string, sozusagen die Ziffern aufgedröselt werden.
Code:
#include "asuro.h" //die asuro-funktionen
#include <stdlib.h> // hier kommt itao() her
int main(void) {
unsigned char taste; //der taster-wert
unsigned char ctaste[3]; //taster-wert als string
Init();
while(1) { //endlosschleife
PollSwitch(); //tasterwerte auslesen
PollSwitch(); //tasterwerte auslesen
PollSwitch(); //tasterwerte auslesen
taste = PollSwitch(); //tasterwerte auslesen und speichern
if (taste != 0) { //wenn was gedrückt wurde
itoa((int)taste,ctaste,10); //zahl in string(ziffern) umwandeln
SerWrite(ctaste,3); //string uber IR senden
SerWrite("\n\r",2); //neue zeile, return zum zeilen-anfang
}
}
return 0;
}
Ach ja die Taster-Werte sollten sein, von rechts nach links (wieder von hinten): 1, 2, 4, 8, 16, 32
Ich habe das große Glück, dass bei mir alle Taster-Werte passen.
Ich habe dein proggi mal in meinen Asuro geflasht, was mir auffällt:
1. Deine Verzögerungen mit sleep sind zu kurz, die Zeit die gewartet wird ergibt sich aus "übergebene Zahl" / 72000 in Sekunden. (bei Verwendung der lib aus dem RN 36000)
2. Wenn man einen der drei rechten Taster (von hinten gesehen) erwischt, wechselt die StatusLED mal mehr mal weniger oft zu rot, obwohl der Taster schon längst wieder losgelassen wurde. Vielleicht kommt das vom prellen der Taster, obwohl ich dachte die wären mechanisch entprellt.