Forum: Mikrocontroller und Digitale Elektronik Basic für größere prozessoren


von Rolfi (Gast)


Lesenswert?

Hallo,

bei einigen anwendungen kommt man ja nicht um prozessoren drumrum, die
mehr als nur 8 bit haben. Aber wenn man sich einmal an bascom gewöhnt
hat ist es sehr schwer mit c anzufangen, wenn man es noch nie benutzt
hat. Kennt jemand was bascom ähnliches für arm oder v850? Oder sogar
386er (ohne das man ein dos starten muss)

von Peter Dannegger (Gast)


Lesenswert?

"bei einigen anwendungen kommt man ja nicht um prozessoren drumrum,
die
mehr als nur 8 bit haben."


Welche wären das ?

Ich vermute mal, Du bist mit der Geschwindigkeit von Bascom nicht
zufrieden. Da ist kein Umstieg auf 16 Bit nötig, ein Umstieg auf C
bringt schon ne ganze Menge.


Oft hilft aber auch schon eine bessere Strukturierung des Programms.

Man sollte Programme vor allem auf versteckte CPU-Leistungsvernichter
überprüfen.
Das sind grundsätzlich alle Delays und Warten auf irgendwelche
Bedingungen.
Diese schreibt man dann so um, daß das Main trotzdem weiterläuft, d.h.
alle anderen Sachen.


Peter

von harry (Gast)


Lesenswert?

hi,
mittlerweile gibt's doch für (fast) jeden uC einen basic-COMPILER.
der umstieg von basic auf c bringt in sachen avr weissgott nicht mehr
tempo, dieses ammenmärchen gehört in die zeiten, als basic nur als
interpreter lief. ein compiler erzeugt aus einer hochsprache (welche
auch immer) einen maschinencode, der meist nicht hirn- und gnadenlos
generiert wird, sogar in sachen wie bascom steckt einiges an
hirnschmalz. probier mal spasseshalber 'ne zeitzmessung für die
anweisungen "incr x" in c und bascom. guckst du - ausführungstempo
gleich. was schliessen wir daraus? sowohl c als auch bascom als
hochsprache werden perfekt in den korrekten, minimal notwendigen,
maschinencode compiliert. wie der code denn letztendlich zustandekommt
ist egal, wichtig ist nur, dass die compilation optimal läuft.
guckst du mal fast-avr, kompakteren maschinencode kriegst du auch (für
timing-unkritische anwendungen) mit assembler nicht hin.
wenn das timing zum problem werden könnte, z.b. bei video-anwendungen,
kannst du getrost auf basic und c verzichten, das ist halt nur nach
festen zyklen machbar und das geht am besten in assembler.
grüssens, harry

von Rolfi (Gast)


Lesenswert?

MMHH habe jetzt das problem, dass ich ein pwm signal lesen muss, was
eigentlich mit v850 prozessoren kein problem ist, mit dem avr bist de
da schon an der grenze. übertaktet läufts prima, aber das will ich
nicht dauerhaft. Das bascom nicht langsamer ist als C wurde ja schon
mehrfach getestet, und als nichtig abgetan. Klar hat vielleicht der
eine oder andere compiler bestimmt verbesserungsmöglichkeiten, aber es
will mir doch keine erzählen das er perfekt asm proggen kann

von Peter Dannegger (Gast)


Lesenswert?

@Harry

"der umstieg von basic auf c bringt in sachen avr weissgott nicht
mehr
tempo"


Rein Compilermäßig mag das ja stimmen.

Aber in der Regel sind C Programme strukturierter (mehr
Unterfunktionen, direkte Parameterübergabe, mehr lokale Variablen) und
dadurch sind sie deutlich schneller.


Peter

von Peter Dannegger (Gast)


Lesenswert?

@Rolfi,

"dass ich ein pwm signal lesen muss, was eigentlich mit v850
prozessoren kein problem ist, mit dem avr bist de da schon an der
grenze."


erzähl doch mal näher, warum der AVR das nicht können soll.


Einen Nachteil haben die AVRs natürlich, daß es keine
Interruptprioritäten gibt. Es darf also keine langsamen Interrupts
geben. Absolut alle Interrupts müssen so schnell sein, daß sie den
eiligsten nicht ausbremsen.

Aber das ist keine Frage ob 8 oder 16 Bit, die meisten 8051-er haben ja
auch 4 Interruptprioritäten.


Peter

von Rolfi (Gast)


Lesenswert?

Hatte schon viele Anwendungen, wo man einen I2C bus mitsniffert und da
war der AVR einfach an der grenze. der hatte nix anderes zu tun, als
auf high/low zu warten und zu bewerten. am ende auf rs232 ausgeben. bei
16mhz lief es gerade so. was wenn man mal was schnelleres mitschneiden
will, oder mehr flash benötigt? Gibt es nun basic ähnliche interpreter
für arm und v850??

von Andreas Schwarz (Gast)


Lesenswert?

"probier mal spasseshalber 'ne zeitzmessung für die anweisungen "incr
x" in c und bascom. guckst du - ausführungstempo gleich. was schliessen
wir daraus? sowohl c als auch bascom als hochsprache werden perfekt in
den korrekten, minimal notwendigen, maschinencode compiliert."

Nein, daraus kannst du höchstens schließen dass beide für "incr x"
den minimal notwendigen Code erzeugen - was leider überhaupt nichts
aussagt. Interessanter wäre ein Vergleich bei echten Algorithmen, z.B.
Samplen eines Pins, ein Filter mit Ringpuffer, Entprellung eines
Drehgebers, usw.

von Rolfi (Gast)


Lesenswert?

Ist das thema des threads?

von Andreas Schwarz (Gast)


Lesenswert?

Rolfi: Basic wird überwiegend im Hobbybereich verwendet, und da sind
"größere" Prozessoren noch eher selten anzutreffen. Deshalb glaube
ich nicht dass du einen brauchbaren Compiler findest.

von Jürgen (Gast)


Lesenswert?

Hallo,

bin vor wenigen Wochen auf PureBasic gestossen.... schaut es Euch mal
an. Mache damit Programme, welche unter XP tadelos laufen !!!

Alles Gute von Jürgen....

von Tobi (Gast)


Lesenswert?

Wobei ich jetzt einfach mal behaupt, dass XP nicht auf den Prozessoren
läuft, um die es hier geht

von Tobias Schneider (Gast)


Lesenswert?

Hi,
Hatte schon viele Anwendungen, wo man einen I2C bus mitsniffert und da
war der AVR einfach an der grenze. der hatte nix anderes zu tun, als
auf high/low zu warten und zu bewerten. am ende auf rs232 ausgeben.
bei
16mhz lief es gerade so.

Wenn du so programmierst sollte das kein Wunder sein. Da nützt auch ein
größerer Prozessor nichts, wenn man 99,9 % seiner Rechenzeit damit
zubringt auf eine Flanke zu warten.

Dazu benuzt man externe flankengetriggerte Interrupts, mit denen man
soetwas effizient machen kann ohne irgendwelche Schleifen zu verwenden
,die nur dazudienen, die Hauptschleife auszubremsen.

Unterstuezt Bascom überhaupt Interrupts?

Gruß Tobias

von Peter D. (peda)


Lesenswert?

@Rolfi

"Hatte schon viele Anwendungen, wo man einen I2C bus mitsniffert und
da war der AVR einfach an der grenze."


Na dann wirst Du aber mit dem ARM Dein blaues Wunder erleben, der
könnte sogar noch langsamer sein. Schon ein simpler Interrupteintritt
ist mit riesen Getöse verbunden.


Lies Dir mal hier die ARM-Threads durch.

Beim Bitschubsen ist er warlich keine Leuchte.

Nur wenn Du zich MByte RAM ansprechen willst oder haufenweise
32Bit-Berechnungen hast, dann kann er punkten.


Meine Frage, wobei Du Dir bei nem 32-Bitter Vorteile versprichst, habe
ich schließlich nicht aus Jux gestellt.



Für nen I2C-Sniffer nimm einfach den ATTiny2313.

Der hat ein halbes Hardware-I2C ohne Adreßerkennung, damit kannst Du
ganz einfach jedes I2C-Paket mitlesen. Und der kommt auch bei 400kHz
nicht ins Schwitzen.


Peter

von harry (Gast)


Lesenswert?

@ tobias

aber sicher unterstützt bascom interrupts, warum denn auch nicht?
int's sind ja eine reine hardwarenummer, ein prog muss doch nur auf
ein sich ändernders flag reagieren.

der basiccode lässt sich ja auch wunderschön mischen, willst du's
bequem weil du ein fauler mensch (wie ich) bist, nimmst du den
basic-kruscht, brauchst du das 'richtige leben' läuft der kram eben
direkt über register oder asm ab, is' doch herrlich.

zu pure-basic: mir ist selten ein effizienterer compiler untergekommen,
maxi-leistung bei mini-exe's bei mini-code, klasse.
grüssens, harry

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.