Programmierung des Bots in Bascom-Basic

c't-Bot Programmierung in Basic

Moderator: Moderatoren Team

noxon
Moderator
Moderator
Beiträge: 192
Registriert: 18 Jan 2006, 11:19
Wohnort: Hamm, NRW
Kontaktdaten:

Programmierung des Bots in Bascom-Basic

Beitrag von noxon » 15 Feb 2006, 07:51

Was haltet ihr von der Idee den Bot in Basic zu schreiben? Welche Vor- und Nachteile würde das eurer Meinung nach haben?

Ich fände es nämlich schon ganz reizvoll, da ich die C-Syntax absolut nicht ausstehen kann. ;)

Außerdem wäre die Programmierung in Basic um einiges einfacher und übersichtlicher, wie man an folgendem Hello World Beispiel sehr gut erkennen kann.

[syntax="vb"]
$Crystal=8000000
$Baud=9600

Print "Hello, world !"

End
[/syntax]

[syntax="c"]
#include <avr/io.h>

#define F_CPU 8000000
#define USART_BAUD_RATE 9600
#define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1)

//-----------------------------------------------------
void _writeString (const char *string)
{
while (*string)
{
while (!(UCSRA & (1<<UDRE)))
{}

UDR = *string++;
}
}

//-----------------------------------------------------
void main()
{
UCSRB = (1<<TXEN);
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
UBRRL = (unsigned char) USART_BAUD_SELECT;

_writeString ("Hallo, Welt!\n");

// Endlossschleife nach Verlassen von main
}
[/syntax]

Weitere Beispiele gibt es hier.

Mir ist natürlich klar, dass man auf diese Weise nicht unbedingt die Funktionsweise des Controllers versteht, aber das tut man auch nicht, wenn man in C nur die Bot-logic editiert.

Ich finde Basic ist da ein netter Mittelweg. Man muss sich nicht um die kleinsten Kleinigkeiten kümmern, aber man muss schon selbst die Ports bedienen und sich Funktionen für die Sensoren und Aktoren schreiben.
Ein IO-Port kann drei verschiedene Zustände einnehmen. Input, Output und Kaputt. Müsste es dann nicht IOK-Port heißen?

KarstenHoffmann
Friends of Marvin
Friends of Marvin
Beiträge: 17
Registriert: 06 Feb 2006, 21:18

Beitrag von KarstenHoffmann » 15 Feb 2006, 08:02

Ich habe eigentlich vor beides zu machen. D.h. das c't-Projekt mit C zu verfolgen und auch auszuprobieren und nebenbei ein eigenes Programm in Bascom zu entwickeln. Dabei kann man natürlich gute Ideen aus dem C-Quelltext verwenden. Bascom ist meiner Meinung nach ein guter Mittelweg um eigene Ideen umzusetzen und auch ziemlich tief unten anzufangen, ohne sich z.B. über das Auslesen eines Fernbedienungsempfängers Gedanken machen zu müssen, das sind in Bascom nämlich genau drei Zeilen Code.

noxon
Moderator
Moderator
Beiträge: 192
Registriert: 18 Jan 2006, 11:19
Wohnort: Hamm, NRW
Kontaktdaten:

Beitrag von noxon » 15 Feb 2006, 08:18

So ähnlich hatte ich das auch vor. Ich verfolge das C-Projekt, schaue mir da die Sachen an, wie sie funktionieren, teste meinen Bot mit dem c't Sim und übertrage dann den Code nach Basic. Dort sind wirklich sehr viele Sachen simpler gelöst.

Die LCD Anzeige zum Beispiel:

[syntax="vb"]
$regfile = "m8def.dat"
$crystal = 4000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
Config Lcdbus = 4

Cls
Locate 1 , 1
Lcd "Hallo Welt"
[/syntax]

Einfacher geht's ja eigentlich nicht mehr. Bascom-Code soll auch sehr kompakt sein, wie ich gelesen habe. Außerdem sind die Bibliotheken in ASM geschrieben, was Bascom-Funktionen sehr leistungsfähig macht. Ich könnte mir vorstellen, dass selbstgeschriebene C-Routinen da im Nachteil sein könnten.

Einen Simulator, Debugger und einen Programmer besitzt die Bascom IDE auch. Es hat also schon seine gewissen Vorteile.

Ich glaube ich werde das tatsächlich mal ausprobieren. Letztendlich habe ich dann ein komplett selbstentwickeltes Programm in Basic geschrieben, wobei ich das offizielle Progjekt als Hilfe verwendet habe. Mir missfällt es nämlich etwas, dass bei dem Originalprojekt schon so viele Funktionen fertig sind. Da lernt man auch nichts bei.
Ein IO-Port kann drei verschiedene Zustände einnehmen. Input, Output und Kaputt. Müsste es dann nicht IOK-Port heißen?

lomdar67
Site Admin
Site Admin
Beiträge: 235
Registriert: 08 Jan 2006, 19:11
Wohnort: Edling
Kontaktdaten:

Beitrag von lomdar67 » 15 Feb 2006, 08:26

[Bisschen OffTopic]
Stellt sich für mich die Frage, ob das nicht ein heilloses Durcheinandr hier im Forum gibt. Vielleicht sollten wir doch für die ein oder andere Sprache ein eigenes Forum auf machen...
[/Bisschen OffTopic]
melwood
Bite my shiny metal ass
- Bending Unit 22

noxon
Moderator
Moderator
Beiträge: 192
Registriert: 18 Jan 2006, 11:19
Wohnort: Hamm, NRW
Kontaktdaten:

Beitrag von noxon » 15 Feb 2006, 08:32

Ich wollte erst einmal ausloten, ob überhaupt Interesse besteht. Im Moment sieht es so aus, als ob wir die beiden Einzigen wären, die darüber nachdenken. Mal sehn, ob sich daran mit der Zeit noch was ändert.

Natürlich wäre auch ein Forum für alternative Sprachen möglich, aber das lohnt ja nicht, wenn sich dort nur zwei Leute unterhalten, oder?

Stattdessen könnten die Basic-Leute vor ihren Topics immer ein [Basic] Tag oder sowas machen. Dann wissen die C'ler, dass sie da nicht reinschauen brauchen, wenn es sie nicht interessiert.
Ein IO-Port kann drei verschiedene Zustände einnehmen. Input, Output und Kaputt. Müsste es dann nicht IOK-Port heißen?

KarstenHoffmann
Friends of Marvin
Friends of Marvin
Beiträge: 17
Registriert: 06 Feb 2006, 21:18

Beitrag von KarstenHoffmann » 15 Feb 2006, 11:11

Ich denke es gibt schon noch einiges zu tun. Die LCD-Ansteuerung geht leider nicht so einfach, wie oben von Dir angedacht, da hängt nämlich das Schieberegister dazwischen. Deswegen habe ich u.a. auch die beiden LED-Testprogramme geschrieben, weil ich probieren wollte, wie man die Schieberegister ansteuert. Als nächstes kommt dann das Display dran.

manolli
Friends of Gort
Friends of Gort
Beiträge: 53
Registriert: 15 Feb 2006, 11:21

Beitrag von manolli » 15 Feb 2006, 11:26

nein, ihr seid nicht die Einzigen die auf Abwegen wandeln. Ich benutze zum Testen AVRco von e-lab. Der Aufwand in Eclipse ist mir im Moment einfach zu groß. Mich würde mal dein Programm zum Schieberegister interessieren. Ich komme da im Moment nicht weiter.

KarstenHoffmann
Friends of Marvin
Friends of Marvin
Beiträge: 17
Registriert: 06 Feb 2006, 21:18

Beitrag von KarstenHoffmann » 15 Feb 2006, 11:41

Bin momentan in der Firma, deshalb kann ich den BASIC Quellcode nicht hochladen, mache ich heute abend. Bei BASCOM ist das ganz einfach, es gibt einen Befehl, dem Du nur mitteilen mußt, auf welchem Pin die Daten liegen, auf welchem die Clock und wieviel Bit Du übertragen willst. Nach der Übertragung noch einmal einen Strobe zum Speichern, das wars.

manolli
Friends of Gort
Friends of Gort
Beiträge: 53
Registriert: 15 Feb 2006, 11:21

Beitrag von manolli » 15 Feb 2006, 11:50

Ich habe mir das Datenblatt vom HC595 angesehen und takte die 8 bit nacheinander mit scrlk rein. Danach takte ich rsclk. Aber irgendwie passiert nix.

KarstenHoffmann
Friends of Marvin
Friends of Marvin
Beiträge: 17
Registriert: 06 Feb 2006, 21:18

Beitrag von KarstenHoffmann » 15 Feb 2006, 11:56

Bei dem BASIC-Befehl kann man angeben, ob die Clock von Low auf High wechselt oder umgekehrt. Das hatte ich beim ersten Versuch auch falsch herum.

juun
Friends of Gort
Friends of Gort
Beiträge: 98
Registriert: 13 Feb 2006, 10:10
Wohnort: Schweiz, Kanton Bern

Beitrag von juun » 15 Feb 2006, 11:58

Ich hätte da auch grosses Interesse!

Dann braucht man zum Programmieren nur ein Programm, oder?

Ist das so einfach wie ich mir das Vorstelle? Also Bascom instalieren, Code schreiben, direkt Compilieren und übertrage und kanns lodgehen?

Das erinnertmich an die guten alten "LEGO Cybermaster Zeiten" da brauchte man nur ein Programm. F5 Compilieren, F6 übertragen, fertig! 8)

[offtopic]
Die Sprache für die LEGO Bot's heisst übrigens NQC. Und hier das Tool zum Progen, falls das jemand interesiert: Klick
[/offtopic]

chrimo
Friends of Sonny
Friends of Sonny
Beiträge: 192
Registriert: 24 Jan 2006, 20:50
Wohnort: Sauensiek (Stade)
Kontaktdaten:

Beitrag von chrimo » 15 Feb 2006, 13:06

Moin aus Sauensiek,

die Lowlevel-Routinen müssen ja erst noch erstellt werden, klar das macht schon etwas arbeit...
Auch klar, die Funktionen müssen auf die Hardware angepasst werden.

Wir sollten dann aber schnell eine Bibliothek mit Grundfunktionen zur Verfügung stellen, dann haben es auch die "Anfänger" nachher leichter.


LCD_print()
LED_print()
Sensor_XXX_read()
Motor_control()
...

Könnten wir nicht eine Rubrik mit sinnvollen Bibliotheksfunktionen oder
Codefragmenten anlegen ?


Nur eine weitere Idee beim Kaffee
Bye
Chrimo :D
~+++~ath
No carrier
#§%$"=?`!

lomdar67
Site Admin
Site Admin
Beiträge: 235
Registriert: 08 Jan 2006, 19:11
Wohnort: Edling
Kontaktdaten:

Beitrag von lomdar67 » 15 Feb 2006, 13:40

[OffTopic]
Ich werde mal am Wochenende ausloten wieviel Aufwand es ist, Unterforen (eine Ebene) einzubauen, dann wird's im Forum schon mal etwas übersichtlicher. Oder vielleicht hat d0nUt dazu Zeit, bin nämlich am Samstag nicht da...
IKönnten wir nicht eine Rubrik mit sinnvollen Bibliotheksfunktionen oder
Codefragmenten anlegen ?
Ich denke das wäre eher etwas für den Downloadbereich, oder? Wenn Ihr dort eine neue Kategorie/Unterkategorie braucht, dann sagt Bescheid.

Oder macht Vorschläge, wie das "verwaltet" werden soll (evtl eigener Thread)...

melwood
Zuletzt geändert von lomdar67 am 15 Feb 2006, 13:43, insgesamt 1-mal geändert.
Bite my shiny metal ass
- Bending Unit 22

cgiesen
Friends of Sonny
Friends of Sonny
Beiträge: 155
Registriert: 13 Feb 2006, 09:21
Wohnort: Bochum
Kontaktdaten:

Beitrag von cgiesen » 15 Feb 2006, 13:42

hallo Zusammen,

nachdem was Ihr so schreibt, scheint es das zu sein, was ich eigentlich will.
Eine Hardware Programmieren, sie verstehen, ohne eine neue Sprache und schon gar nicht neue Compiler installieren zu lernen (gut jetzt läuft er, schlechtes Argument)

Um den Überblick zu halten, währe doch eine zusätzliche Rubrick im Forum ausreichend, viellicht aus eine bei den Downloads.

Wo bekomme ich dieses Basic?
Oder ist das auch so eine Aktion à la c't ;)

LG

Carstren

juun
Friends of Gort
Friends of Gort
Beiträge: 98
Registriert: 13 Feb 2006, 10:10
Wohnort: Schweiz, Kanton Bern

Beitrag von juun » 15 Feb 2006, 13:49

Meine Frage wurde bis jetzt nicht Beantwortet. Ich denke ich liege aber mit meiner vermutung richtig. Habe mir Bascom auch schnell mal gezogen und schau mir das kurtz mal an.

@melwood: Ich bin selbst Foren Admin, mein Forum hat bis jetzt ca. 850 Beiträge. Ich wollte eigentlich nur sagen das es ein Mod giebt in dem man solche unter Bereiche übers ACP erstellen kann. Wie der heisst weis ich jetzt nicht.
Zuletzt geändert von juun am 06 Mär 2006, 21:54, insgesamt 1-mal geändert.

Antworten