PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom und Asuro



Mucki
18.01.2006, 22:22
Hi Leuts,

ich habe gerade angefangen Bascom zu entdecken und möchte gerne den Asuro in Basic programmieren. Leider stoße ich auf einige Anfangsschwierigkeiten. Schon die Umsetzung des "serwrite" aus der asuro.c ist im Moment noch nicht drin. :-( Kann mir jemand helfen ?

Merci bien,

Mucki

x-ryder
18.01.2006, 22:39
serwrite heißt in bascom einfach "print" ^^

ich hab mal die bascom version der befehle von RCO eingefügt, ich find mein programm grad nich

Martin

Mucki
18.01.2006, 22:53
Hi x-ryder,

die kleine Bascom API hatte ich auch schon gefunden, deine kleine Testroutine hilft mir aber auf meine ersten bescheidenen Sprünge. ;-)

Noch 'ne Frage zum Pollswitch, wenn ich folgendes Hauptprogramm habe:

Do
Poll = Pollswitch()
If Poll <> 0 Then
Call Statusled(red)
Print Poll
End If
Loop
End

dann bekomme ich ja eine Menge Werte, nur nicht die aus asuro.c gewohnten 1,2,4,6,8,16,32 sondern sehr verschiedene. Sind das dann einfach Werte vom A/d Wandler die ich noch den Tastern zuordnen muss ?

Thx 4 help,

Mucki

x-ryder
18.01.2006, 23:21
was bekommste denn für werte? ich hab den asuro nämlich grad nich zur hand und kann da gucekn, ich glaube da sollten direkt die tasterpositionen rauskommen, bin mir aber nicht sicher, schreib mal was du da rausbekommst

Martin

Mucki
19.01.2006, 08:08
Hi Martin,

habe ihn gerade auchnicht bei der hand aber die Werte lagen deutlich über den 2^x Werten wie ich sie durch die asuro.c Api gewohnt bin. Habe den Asuro auch gerade nicht zur Hand aber ich werde mir mal die Formel anschauen und dann melde ich mich noch mal...

Noch eine "blöde" Frage: mit PRINT gebe ich also eine Ausgabe auf den IR Port. Woher weiß denn das Basic, daß dies mein STDOUT ist ? Ich hätte jetzt gedacht, daß ich den entsprechenden Port erstmal initialisieren muss ?! Ich vermute ich denke etwas u die Ecke ... ;-)

Danke,

Mucki

x-ryder
19.01.2006, 13:57
das machst du schon mit dem befehl:

$baud = 2400

der rest ist bereits von bascom initialisiert worden

Martin

Mucki
19.01.2006, 14:05
Hi Martin,

OK, war mir so nicht klar. Ich bin ja mal gespannt, was noch so auf mich zu kommt. Bin zwar kein C Freak aber irgendwie ist der Umstieg auf Basic schon ... sagen wir lustig. ;-)

Danke für deine Hilfe,

Maurice

Mucki
27.01.2006, 09:38
Hi x-ryder,

neben meinen RN-Controll Probs bin ich natürlich auch noch mit dem Asuro dran. :-) Ichhabe die Formel innerhalb der Bascom Asuro-Api mal gecheckt und sie stimmt mit der in der C-Api überein. Dennoch bekomme ich im Basic Werte die eher im Bereich >500 liegen. Dafür habe ich bei der Odemetrie bei einem Tempo von 160 Werte um die 5 - 7 ! :-) Das Ganz eunter C funzt wie es soll.

Kann das jemand nachvollziehen ?

Thx,

Mucki

super_castle
28.01.2006, 09:23
das ist halt bascom und kein winavr-c.
wenn es unter bascom genauso laufen soll, musst du die routinen in bascom mit asm ersetzen in subroutinen mit $asm und $endasm.

darum kann man die routinen im allgemein vom asuro nicht umsetzen.
es sind dort sehr viele zeitkritische überwachungsroutinen drin, die bascom nur unter vorbehalt der asm-rouitnen schaffen tut.

es ist auch gut so, an diesem beispiel sieht man auch, wie schnell bascom in die knie geht wenn es um zeitintensive entscheidungen hinsichtlich der sensorik geht. und diese geballte sensorik im asuro ist für ein roboter der normale untere level, es kann sich mit der sensorik nur noch steigern und dann....

ich habe als bascom-user und winavr-c-user gemerkt, es lohnt sich nicht dieses in die bascomsprache umzusetzen wenn die reaktion so schnell bleiben soll.

für ruhende dinge (lcd, glcd usw) auf einem steckbrett usw kann man sehr schnell mit bascom die resultate erzielen, das ist ein vorteil.


castle

Mucki
30.01.2006, 11:00
Hi Castle,

mir ist nur nicht ganz klar, warum die Werte dann so unterschiedlich sind. Das Bascom nicht so schgnellen Code produziert kann ich ja einsehen aber einen Sensor abfragen und den richtigen Wert liefern sollte doch auch damit klappen,oder ?!

Mucki

x-ryder
30.01.2006, 11:05
kannst du beide codeteile nochmal posten, dann such ich mal

Mucki
30.01.2006, 11:32
Hi x-ryder,

mache ich heute abend nach der Arbeit.

Thx,
Mucki

super_castle
31.01.2006, 17:58
den richtigen Wert liefern sollte doch auch damit klappen,oder ?!


...wenn du meinst, dann wird es so sein, viel spass.

Castle

Mucki
31.01.2006, 19:12
Hi x-ryder,

bzgl. der Kollisionstaster steht der Code ja noch oben in diesem Thread. Hier isr mein Code zur Odemetrie:


Speed = 100

Call Motordir(fwd , Fwd)
While Speed < 200
Call Odometrie()
Print Speed ; " Left: " ; Odoleft ; " Right: " ; Odoright
Speed = Speed + 2
Call Motorspeed(speed , Speed)
Waitms 40
Wend
Call Motordir(brake , Brake)
End


Dabei werden haltnur sehr kleine Werte ausgegeben. Wenn Bascom das nicht leisten kann (vorrausgesetzt mein Code ist richtig), dann ist eswirklich unbrauchbar. Was meinst du ?

Danke,

Mucki

RCO
01.02.2006, 20:48
Hallo Leute,

also, ich kann euch nicht garantieren, dass mein Programm sicher läuft. Ich habe es vor längerer Zeit geschrieben, als ich selber noch nicht ganz fit in bascom war. Es kann also gut sein, dass einige Bugs drin sind.

Tut mir leid, ich würde mich dem gerne wieder annehmen, aber ich bin zur Zeit leider komplett ausgelastet.

Sorry...

Mucki
02.02.2006, 10:50
Hallo Moritz,

kein Problem. Ich habe jetzt erstmal Urlaub und dann schau ich mir die Sache mal in Ruhe an. Auf den ersten Blick konnte ich keinen Fehler entdecken aber die Tücken stecken ja oft im Detail.

Have fun,

Mucki