PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nur vorwärts bzw Reagiert nicht auf die Taster!



pyr0t0n
03.02.2007, 20:06
aloa,

Ich habe heute meinen Asuro zuende gebaut und will ihn nun mit ner Kollisions abfrage austatten. Wenn halt einer der Taster vorne gedrückt wird soll er sich rückwärts drehen und dann wieder gradeaus weiterfahren.

Doch irgendwie reagiert das Programm nicht auf die Taster. Hier der Code



#include "asuro.h"

int main()
{
Init();
MotorDir(FWD,FWD);
MotorSpeed(240,240);
if(PollSwitch()>0)
{
MotorDir(RWD,BREAK);
MotorSpeed(240,0);
Msleep(250);
}
return 0;
}


Danke schonmal

damaltor
03.02.2007, 20:24
das problem ist, dass alle anweisungen in dem programm nur ein einziges mal ausgeführt werden. es wird einmal gesagt, dass er vorwärts fahren soll, und dann wird einmal geprüft ob die taster gedrückt wurden.
du musst das alles in eine endlosschleife packen:

#include "asuro.h"

int main()
{
Init();
while(1){ //hier beginnt die endlosschleife
MotorDir(FWD,FWD);
MotorSpeed(240,240);
if(PollSwitch()>0)
{
MotorDir(RWD,BREAK);
MotorSpeed(240,0);
Msleep(250);
}
} //hier ist sie zuende
return 0;
}

so wird das alles immer wieder ausgeführt. bei jedem schleifesurchlauf wird geprüft, ob die taster gedrückt wurden.

pyr0t0n
03.02.2007, 20:33
achso ok... dachte der wiederholt das auch so weil die motoren ja beide noch liefen... hab mich nur jetzt grade noch in ein andere problem verstrickt. wollte die neue lib benutzen hier aussem board und bekomme folgenden fehler

C:\WinAVR\Projekte>make all
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O2 -I./inc -MD -MP -MT globals.o -MF
dep/globals.o.d -c globals.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O2 -I./inc -MD -MP -MT adc.o -MF dep
/adc.o.d -c adc.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
In file included from adc.c:14:
C:/WinAVR/avr/include/asuro.h:290: error: parse error before "leftpwm"
C:/WinAVR/avr/include/asuro.h:299: error: parse error before "freq"
make: *** [adc.o] Error 1

damaltor
03.02.2007, 20:41
die motoren laufen so lange, bis sie wieder ausgeschaltet werden oder eine andere richtung zugewiesen bekommen.

mit der allerneuesten lib kenne ich mich leider nicht weiter aus, aber wenn du willst kann ich dir mal die version direkt davor schicken, sende mir einfach eine pm mit deiner email adresse.

pyr0t0n
03.02.2007, 20:45
hm... hab mal das neue WinAVR geladen vom 22.01.07 und installiert hab dann meinen code in PN eingetragen und make gedrückt welches dort vordefiniert war. dabei kommt folgende ausgabe raus

> "make.exe" all
make.exe: *** No rule to make target `all'. Stop.

> Process Exit Code: 2

EDIT: grrr kein plan wieso hätt ich mal net upgedatet -.- jetzt kann ich meinen asuro net mehr programmieren -.-

damaltor
03.02.2007, 21:02
*lach*

klar, das kriegen wir schon hin... probiers erstmal mit der lib von der cd - die hast du ja noch.
oder lass dir die version 2.61 schicken, ich kann sie dir mailen. dann hast du schon fast alle neuen funktionen, allerdings sind die dateien etwas größer, was bei den meisten programmen allerdinge (noch) keine rolle spielt, der speicher von 7kb reicht meistens echt aus.

pyr0t0n
03.02.2007, 21:10
hab die 2.61 auf platte installliere nun nochmal die version von cd ^^

EDIT:
geht nix mehr hab die version von CD installiert aber nun kann ich noch netmal mehr PN starten.

damaltor
03.02.2007, 21:14
achso? na dann sollte das eigentlich alles funktionieren...0o
ist das der gleiche programmcode den du kompilieren wolltest?

pyr0t0n
03.02.2007, 21:17
naja immoment geht nix mehr kriege halt PN auch net mehr auf nur noch dieses schöne Microschrott fenster mit Schliessen und Debug

Vllt kann mir mal einer LiveSupport via ICQ geben: 148-973-705

damaltor
03.02.2007, 21:25
na dann benutze ein anderes programm. jeder texteditor funktioniert, der vorteil an PN ist nur, dass er die syntax hervorhebt. öffne deine c-datei mit dem windows-editor, dann kannst du wieder bissl was machen. allerdings halt recht unkomfortabel.

pyr0t0n
03.02.2007, 21:26
und wie kompilier ich das dann? bzw kriege die hex?

damaltor
03.02.2007, 21:29
indem du eine dos-kommandozeile aufmachst.

start->ausführen->"cmd"->enter

dann gehst du mit cd (verzeichnis) in das verzeichnis, in dem der c-code liegt.
zuletzt gibst du "make all" ein und dann sollte dein programm kompiliert werden.


allerdings sollte ein neustart das problem mit dem programmersnotepad beheben, im notfall muss halt ne neuinstallation her.

ich weiss schon, warum ich kein windows nutze =)

pyr0t0n
03.02.2007, 21:31
hehe ja ok das mit dem kompilieren hab ich grade rausgefunden allerdings bin ich dann wieder bei einem problem was ich oben auch so ähnlich hatte ^^

C:\Dokumente und Einstellungen\pyr0\Desktop\AsuroProjekte\kollision>make all
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=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 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.

make: *** No rule to make target `test.o', needed by `test.elf'. Stop.

C:\Dokumente und Einstellungen\pyr0\Desktop\AsuroProjekte\kollision>


EDIT:
Fehler gefunden uns zwar hies meine .c datei nicht test.c -.- sagt ja ziemlich dummer fehler ^^

Danke trotzdem!

pyr0t0n
03.02.2007, 21:36
aber ein problem hab ich jetzt bei dem oben stehendem programm... das eine rad dreht sich kontinuirlich durch und das andere stockt immer obwohl die beide leicht gängig sind... wenn ich das ohne while schleife laufen lasse drehen sich beide vollkommen normal ^^

damaltor
03.02.2007, 21:44
du musst die datei "makefile" mit in das entdprechende verzeichnis kopieren. ausserdem muss die datei mit deinem programmcode test.c heissen.

eigentlich sind alle dateien im verzeichnis wichtig, vor allem makefile, asuro.c und asuro.h

damaltor
03.02.2007, 21:46
aber ein problem hab ich jetzt bei dem oben stehendem programm... das eine rad dreht sich kontinuirlich durch und das andere stockt immer obwohl die beide leicht gängig sind... wenn ich das ohne while schleife laufen lasse drehen sich beide vollkommen normal ^^

das liegt daran, dass pollswitch nicht immer 0 gibt, wenn kein taster gedrückt wurde. die abfrage ist sehr ungenau. also kommt immer mal wieder das signal, dass er bremsen und umkehren soll. da jedoch die wartezeit extrem kurz ist (hast du Msleep durch Sleep ersetzt?) ruckelt das rad nur.

pyr0t0n
03.02.2007, 21:48
ne benutze immer noch Msleep. welche abfrage könnte ich denn nehmen das wenn er auf ein hindernis trifft sich rückwärts dreht und dann wieder vorwärts fährt?

damaltor
03.02.2007, 21:51
das ist schon richtig so. erhöhe mal die zahl bei msleep, dann siehst du den effekt.

such mal im forum nach PollSwitch, oder nach "taster ungenau" oder so sachen, die ist nämlich eines der haupt probleme des asuro. es hilft, wenn du mehrfach abfagst (3-10 mal) und dann nur die letzte abfrage auswertest. oder den mittelwert bisldest, das kann allerdings dann auch in die hose gehen. oder du entfernst den kondensator, der parallel zu den tasterl liegt (ich glaube c6 war das).