PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ASURO programmier Probleme/ Abgehakt, Nun etwas basicwissen



PatrickH
05.04.2006, 14:15
Hallo,
nach einigem suchen, hab ich leider keine Antwort auf mein programmier Problem gefunden.
Sobald ich irgendein anderes Programm als selftest.hex in meinen ASURO lade funktioniert, bis auf die rote Status LED, nichts weiter.
Das heisst die Status LED fängt an rot zu leuchten und mehr passiert nicht.
Selbst wenn ich nur folgendes compiliert und geflasht habe :

#include "asuro.h"
int main(void){
Init();
StatusLED (GREEN);

while(1);
return 0;
}


Wenn ich die selftest.hex wieder rein flashe klappt wenigstens der Selbsttest wieder (naja, bis auf die Schalter, aber das wurde ja schon lang und breit beschrieben)

Und JA, ich habe gespeichert vor dem "make"

Langsam weiss ich nicht mehr weiter (jaul)

Arexx-Henk
05.04.2006, 15:13
Fremd...

Vielleicht hilft es vor dem compilieren zuerst Tools->clean aus zu fuhren. damit auch die Datei 'test.hex' veschwindet.

Bist Du sicher das mit dem Flashen die Datei 'test.hex' aus dem richtigen Verzeichnis geladen wird?

Gruss

Henk

PatrickH
05.04.2006, 15:47
Ja, grade nocheinmal versucht.
zuerst ge"clean"t
obengennanntes Prog abgespeichert (test.c)
"Programmers Notepad" geschlossen und wieder neugeladen
test.c geöffnet und geschaut das es die richtige Version ist
ge"make"d
"flash.exe" geladen
test.hex ausgewählt
"Programm" geklickt
ASURO eingeschaltet
24 Zeilen (seltsam, immer 24) flashen lassen
ASURO ausgeschaltet
ASURO eingeschaltet
StatusLED leuchtet kurz gelb, dann rot und der Zustand wird beibehalten

gruß,
Euer verzwifelter
Patrick

Arexx-Henk
05.04.2006, 15:55
Post mahl deine hex, werde ich's meine Asuro futtern.

Gruss

Henk

PatrickH
05.04.2006, 16:13
Ich hab die test.hex auch ersteinmal in test.txt umbenannt, um nicht gleich am ersten Tag rausgeworfen zu werden

PatrickH
05.04.2006, 16:29
Also mit diesm Konstrukt bekomme ich wenigstens schon einmal eine grüne Status LED

#include "asuro.h"
int main(void){
Init();
StatusLED (GREEN);
Sleep(255);
StatusLED (YELLOW);
Sleep(255);
StatusLED (RED);
Sleep(255);
while(1);
return 0;
}

ist aber auch nicht wirklich befriedingend denn wieder zurück und nur


#include "asuro.h"
int main(void){
Init();
StatusLED (GREEN);
Sleep(255);
while(1);
return 0;
}

geflasht bringt mir wieder nur die Status LED in rot

Lunarman
05.04.2006, 16:39
Also, zusammenfassend:
Rot funzt immer, außer in Verbindung mit anderen Farben in Schleife
Grün funzt in 3er Schleife
gelb funzt gar net
Also das hört sich ja ganz interessant an. Also ich denke nicht dass es an der elektronik auf dem Bot liegt.
FRAGE: Sind es auch beim Testprog flashen 24 zeilen? Wenn ja, wirds noch lustiger...

PatrickH
05.04.2006, 16:48
Nee,
beim Testprogramm sind's um die 80, nachdem ich diese Dreierschleife ein paar mal hintereinander aufgerufen habe bin ich auch auf 25 gekommen.
Doch nun hab ich mal eine Versuchsreihe gestartet, und alle Ausgänge Einzeln angesteuert (FrontLED, BackLEDs, Motoren und SerWrite) das hat alles geklappt. Nur zusätzlich geht auch die StatusLED auf rot.

Mal nebenbei, ich habe die Motoren beide vorwärts laufen lassen mit 120 als Geschwindigkeit. Der Linke läuft dann nur mit etwas Nachhilfe und der Rechte ganz passabel.
Hat das jemand schonmal über die Wiederstände etwas synchronisiert?

immernoch verwirrt
Patrick

Arexx-Henk
05.04.2006, 19:22
@PatrickH

Dein Test.tst(hex) leucht bei mir die grune Led.

Dein code

#include "asuro.h"
int main(void){
Init();
StatusLED (GREEN);
Sleep(255);
while(1);
return 0;
}


leuchtet auch die grune Led.

Ich vermute: Die Led ist falsh herum montiert...!???

Gruss

Henk

PatrickH
05.04.2006, 20:48
Das war's.....
DANKE für den Hinweis, manchmal sieht man den Wald vor lauter Bäumen nicht.
Nun kann ich mich an das nächste Problem begeben, die Schalter.
Der Schalter K1 gibt mir 33 zurück.
Ich werde da mal ein wenig in der asuro.c spielen.

schon etwas erleichtert
Patrick

Arexx-Henk
05.04.2006, 21:31
@PatrickH

ich freue mich dass es geklahrt ist.

Da hab ich mich ein bischen in die Tastatur vertieft.

Kannst du mich mahl deine Tasten Digital werte zuschicken?

Du brauchst nur von die Attachment Datei 'TastenWerte.hex.txt' die '.txt. zu entfernen und in die Asuro laden. (Kein Virus dadrin.. :D )
Dann Hyperterminal aufstarten.

Drucke mahl auf jeden Taste von K1 bis zum K6 und warte eine Sekunde bis eine Zahl in Hyperterminal erscheint.

Wenn du willst, postet mal hier dass Ergebniss.

Gruss

Henk

PatrickH
06.04.2006, 10:30
Hi Henk,
ich hab mit Deinem Progamm mal die Tastenwerte ausgelesen. Folgendes ist dabei rausgekommen:

K1 0x029F
K2 0x032F
K3 0x038E
K4 0x03C6
K5 0x03E2
K6 0x03F1

Ich probierte mal ein Programm welches Zahlenwerte ausgab wie 1, 2, 4, 8, 16 und 33
Kannst Du mir erläutern welche Werte Dein Programm generiert und wieso Dein Programm nur auf 16 pages kommt die es zu flashen gilt.
Selbst mein kleinstes Grundprogramm ohne Funktion mit nur einer Endlosschleife kommt auf 24.
Liegt das an der asuro.h datei?
Sooo viele Fragen von einem n00b *schäm*

gruß
Patrick

Arexx-Henk
06.04.2006, 14:39
@ParickH

Probier mal in asuro.c die PollSwitch Functions Formel:

return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));

die 63.0 zu andern in 61.5

Ich vermute da sollte es gehen.

Gruss
Henk

PatrickH
06.04.2006, 17:02
Jup, werd ich machen.
Ich hatte die schon mal auf 62 ohne nennenswerten Erfolg.
Aber bitte kannst Du mir mal grob erklären wie Du darauf kommst?

gruß
Patrick

Arexx-Henk
06.04.2006, 20:26
Zuerst schatze/berechne ich an hand der Werte welche Widerstanden abweichen und wieveil. Die vermutlichen aktuellen Widerstandswerte speicher ich dann in einem Windows program der lasst ein ubersicht sehen von richtige und eingegebene Tast-widerstanswerte und dan kann ich mit ein paar Tasten die 63 Wert oder die 0.5 Wert andern und die Formel wieder fur alle Tastenkombinationen ausrechnen und tonen lassen. Mit ein bischen experimentieren seht mann da ganz schnell welche Werte genugen.

Im Attachment sind deine Asuro Werte eingegeben. Da kann mann direkt sehen wo die 6 einzelne Tasten ("--") liegen. Die meist linkse (K1) sollte im 0x20 Gebiet liegen, liegt aber im 0x21 Gebiet dass heist wenn Taste K1 gedruckt wird, wirds erkannt wie Taste K6 und K1 zusammen.

Gruss

Henk