www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Welche Basic-Software ?


Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wiedermal das leidige Thema Programmiersprache des AVR. Ich habe mal 
FASTavr getestet und komme da eigentlich gut mit zurrecht. Erzeugt 
wirklich sehr kleinen Quell-Code. Kostet allerdungs ca. 120 € als 
Vollversion und hat nur englische Anleitung und Beispiele. BASCOM 
erzeugt, im Vergleich, grossen Quellcode, preislich liegt es ähnlich.
Wer hat Erfahrung, evtl. günstige Bezugsquellen, vielleicht ganz andere 
Basic-Compilier, ich als alter C-Controller kann mich nicht an C oder 
gar Assembler gewöhnen.

Gruss
Alexander

Autor: tobiasweis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du mittlerweile fastavr

Autor: thomas b (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich würde Dir zu Bascom raten.
Die Vollversion interressiert doch nur für größere Programme.
Bei größeren Programmen büßt FastAVR seinen Vorteil wieder ein, und 
produziert bei größeren Projekten längeren Code als Bascom.
Ich habe unter Bascom eine Klimasteuerung programmiert, als der Speicher 
fast aufgebraucht war FastAVR genommen und total enttäuscht gewesen. 
Anfänglich war der FastAVR-Code um 20% kleiner, ab 3kB etwa gleich, dann 
schlechter.
Aus 7.5kB(Bascom) wurden 8.5kb(FastAVR).
Es wurden u.a. Tasten, LCD, A/D, I2C, DS1621, Basic+ASM Routinen 
verwendet.
Aufgefallen ist das Bascom mit Zeichenketten sehr effektiv umgeht.

Doch hat FastAVR einen Vorteil den ich gern nutze. Es produziert top 
lesbaren und KOMMENTIERTEN ASM-Quelltext, der sich in seiner Struktur an 
das Basiclisting anlehnt.
Es ist als ASM-Lehrer für BASIC-Kundige unschlagbar.

cu tb

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ja, ich habe jetzt FASTavr und bin auch von den Mühen des Programmierers 
entzückt, es gibt eine sehr umfangreiche Newsgroup und Mailinglist, auch 
hier wird fleissig weitergearbeit. Ich habe mich auch lange mit dem 
vertreibenden Ingenieurbüro darüber unterhalten und habe mich (zwar 
zähneknirschend) zum Kauf entschlossen.

Gruss
A. Arndt

www.AR-Online.de, hier entsteht ein AVR-Basic-Forum, reinschauen...

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, was für projekte erstellst du mit fastavr.
wie kann man in fastavr rc5-code senden, ich sehe nur eine routine zum
empfangen. ich habe einen robby mit: kompas cmps03, tsop1736, lcd,
srf04, srf08, sharpsensor, motorantrieb rs232 funk usw.
dieses möchte ich alles mit fastavr ansteuern können wenn ich es mir
beschaffe. kannst du ein bisschen berichten.
mfg pebisoft

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nutze jetzt auch BASCOM....

Gruss

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt fastavr ausreichend getestet.
ein toller compiler. er erzeugt hex-code und auf wunsch auch asm-code
für avrstudio4 (avrstudio erzeugt den gleichen code weil es die
gleichen compiler sind: asm32avr)und zum selberfiltern , wenn man noch
eingreifen möchte. und das testen mit dem avrstudio ist spitze.
so etwas habe ich schon lange gesucht. den code von bascom kann man
nicht astrein filtrieren und hier und da noch nach optimierungen
suchen.
bascom hat zwar einpaar mehr routinen, aber diese sind nicht das gelbe
vom ei. z.b. sind die lib-dateien von bascom veraltet und die neuen
muss man bezahlen. der bascom simulator ist nur ein darsteller der aber
nicht die genauen werte ausgibt wie avrstudio, er zieht nur eine
sichtbare show ab. Bascom habe ich wieder verkauft und habe mir jetzt
fastavr bestellt. da ich auch in win-avr-c geproggt habe fällt es mir
leicht, die routinen in fastavr umzusetzen. in fastavr kennt die
programmierfreiheit keine grenzen. habe jetzt schon fast alle
robotersensoren angesprochen. da ich z.z noch die demo habe, kann ich
jedes modul nur einzeln proggen, aber es funktioniert.
ich wollte immer ganz nah am asm-sourcode sein, war aber zu kopliziert
diesen zu schreiben. jetzt lernt man auch sehr viel vom asm-code.
mfg pebisoft

Autor: moin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Gibt es für FastAVR oder Bascom auch deutsche Anleitungen/Bücher?

Könnt ihr kurz zusammenfassen, für welchen Anwender Bascom sinnvoller
ist (oder umgekehrt)?

Danke
moin

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von Klaus Kühnel gibt es ein deutschsprachiges Buch zu Bascom-AVR:

http://www.amazon.de/exec/obidos/ASIN/3907857046/q...

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bascom ist für leute die drauf los proggen wollen und schnell mal das
ergebnis zusehen. stellt keinen asm-sourcecode her. hat mehr wörter als
fastavr, ist langsam in der ausführung , schleppt zuviel ballast mit
rum.
fatsavr ist für leute , die sich mit dem kleinen avr auseinandersetzen
wollen. kleine feinheiten herauspicken, präzise timing, den avr
sozusagen damit beherrschen. stellt asm-sourcre-code her zum
nachvollziehen. ist von der tiefe her fast wie winavr-c, auch so
schnell aber in den wörtern nicht so schwierig.
weil es die tiefe hat wie winavr-c habe ich jetz nach dem verkauf von
bascom fastavr gekauft.
ich bin 57 jahre alt und habe viel zeit , bin pensionär.
von fastavr habe ich sehr spät gehört, schade. aber jetzt habe ich es.
wenn du länger proggen willst, wirst du merken, das du mit bascom bald
am ende bist, da fängt dann fastavr erst an interessant zu werden. wenn
du nur einmal schnuppern willst und eben mal schnell was proggen willst,
ohne das du wissen möchtest wie man hier und noch einmal in code was
tunen kann, dann ist bascom für dich
die richtige wahl.
mfg pebisoft

Autor: moin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich auch manchmal in ASM programmiere, ist dann wohl FastAVR besser
für mich. Gibt es auch gute Turorials oder Bücher für dieses Programm?

Viele Grüsse
moin

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bücher brauchst du nicht. die hilfedatei mit den beispielbefehlen ist
sehr gut.
was du brauchen tust ist ein buch über den avr mit den resterinhalten
und timereinstellungen, pwm, kompare usw.
ich habe vorher auch immer nach bücher ausschau gehalten, die mir die
progsprache erklärten. dann habe ich festgestellt, das basic kann ich
doch ist doch ein alter hut, wo ich dann immer nachschaue , auch jetzt
immer noch kräftig, wie muss ich welche register einstellen und
interrups starten, zähler aufrufen usw. das avr-buch (deutsch) liegt
immer neben mir auf dem tisch.
schau im roboternetzforum unter bücher, dort werden einige beschrieben.
die bücher für den avr speziell sind nicht billig.
mfg pebisoft

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die ASM-Ausgabe von FASTAVR ist meines Erachtens nicht zum Erlernen von
ASM geeignet, da nicht wirklich effektiver Code erzeugt wird, wie
anhand eines einfachen Beispiel unschwer zu sehen ist:
Multiplikation von 2 Byte Variablen und Addition einer Konstanten Zahl
auf einem AVR mit HW-Mul:
B1 = B1 + B2 + 5

Dim B1 as Byte, B2 as Byte

B1 = B1 + B2 + 5

FASTAVR erzeugt hier:

;-Line--0014----b1 = b1 * b2 + 5--
  lds zl,b1
  push zl
  lds zl,b2
  pop r24
  mul zl,r24
  movw zl,r0
  push zl
  ldi zl,Low(5)
  pop r24
  add zl,r24
  sts b1,zl

Es wird eine Variable (b1) zuerst in das zl-Register geladen und dann
mit push und pop über den Stack in das register r24 verschoben, anstatt
diese gleich in das register r24 zu laden. Um dann zum Ergebnis der
Multiplikation (in r0) die Zahl 5 zu addieren wird dieses mit einem
Word-Verschiebe Befehl in das zl-Register verschoben, dort kann es aber
nicht bleiben, da die Konstante 5 auch in dieses Register geladen wird.
Daher das gleiche Spiel wie zu Beginn mit dem Verschieben in das
r24-Register mit den Umweg über den Stack bevor die Addition
vorgenommen wird. Das Ergebnis hätte aber ohnehin in r0 verbleiben
können, anstatt es höchst ineffektiv zweimal weiter zu verschieben.
Auch die Verwendung von Pointer-Register (hier Z) zur
Zwischenspeicherung von Variablen lässt meines Erachtens nicht auf ein
durchdachtes durchgängiges Konzept schließen.

Ein effektiver Code könnte z.B. so aussehen:

   lds r24, b1
   lds r24, b2
   mul r24, r25
   ldi r24, 5
   add r24, r0
   sts b1, r24


FASTAVR hat einen um 75% größeren Code mit sogar doppelter
Ausführungszeit.

Die ASM-Ausgabe von FASTAVR ist zwar ein nettes Feature, führt aber
einem ASM-Anfänger sicher nicht zu einem effektiven Programmierstil in
ASM.

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke, man muss das immer im ganzen sehen: Da spuken schliesslich
noch mehr Routinen umher und das Umgelade aus dem Zl register ist
sicher mit dem Softwarestack begründet. Denn was passiert, wenn Du B1
und B2 als Integer deklarierst und mit 50000 addieren willst?
Das hier:
;-Line--0011----B1 = B1 * B2 + 50000--
    lds    zl,b1
    lds    zh,b1+1
    push  zh
    push  zl
    lds    zl,b2
    lds    zh,b2+1
    pop    r24
    pop    r25
    call  M1616
    push  zh
    push  zl
    ldi    zl,Low(50000)
    ldi    zh,high(50000)
    pop    r24
    pop    r25
    add    zl,r24
    Adc    zh,r25
    sts    b1,zl
    sts    b1+1,zh

;-Line--0015----Do            ' place your code in next line--
L0000:

;-Line--0017----Loop--
    rjmp  L0000
L0001:

;****** End OF USER BASIC CODE ****************


;////// 16x16 hardware multiplay /////////
M1616:  mul    zl,r24
    movw  r22,r0
    mul    zl,r25
    add    r23,r0
    mul    zh,r24
    add    r23,r0
    movw  zl,r22
    ret

;System Global Variables: 0  bytes
;User   Global Variables: 4  bytes


Da ist nunmal so eine Struktur bei FastAVR drinne. Zum Lernen ist das
nichts, da gebe ich Dir Recht!!

Geht bei BASCOM eigentlich B1*B2+5 in einem Zug?

Es gibt noch viel schlimmere Sachen als unnötig lange Ausführungszeiten
bei mathematischen Operationen.

Angenommen ich will wissen, ob es einen Watchdog reset gab.

If MCUCR.WDRF then
Reset MCUCR.WDRF
mach_dies()
Else
mach_jenes()
End if

erzeugt diesen Code:

;-Line--0012----If mcucr.wdrf Then--
    in    r24,MCUCR
    sbrs  r24,WDRF
    rjmp  L0001
L0002:

;-Line--0013----mach_dieses()--
    call  mach_dieses

;-Line--0014----Else--
    rjmp  L0000
L0001:

;-Line--0015----mach_jenes()--
    call  mach_jenes

;-Line--0016----End If--
L0000:



Was passiert aber nun, wen ich es genau andersrum machen will, so in
der Art:
If NOT MCUCR.WDRF then
mach_jenes()
Else
RESET mcucr.wdrf
mach_dieses()
End if

Gibt erstmal 'ne Fehlermeldung - sieht man sich den ASM Text an, weiss
man auch warum:
;-Line--0012----If Not mcucr.wdrf Then--
    in    r24,MCUCR
    sbrc  r24,0x0WDRF
    rjmp  L0001
L0002:

;-Line--0013----mach_jenes()--
    call  mach_jenes

;-Line--0014----Else--
    rjmp  L0000
L0001:

;-Line--0015----Reset mcucr.wdrf--
    in    zl,MCUCR
    cbr    zl,0x08
    out    mcucr,zl

;-Line--0016----mach_dieses()--
    call  mach_dieses

;-Line--0017----End If--
L0000:


SBRS und SBRC werden unterschiedlich behandelt. "0x" hat da nicht
wirklich zum Erfolg geführt.... 1.Beispiel funktioniert - 2.Beispiel
nicht/ wie auch 0xWDRF kennt der Assembler nicht, was auch prompt mit
einer Fehlermeldung quittiert wird.
"1.  C:\..\watchdog.asm(24) : error : Garbage at end of line

Peek und Poke?
peek(&h60+x) z.B. soll gehen, geht aber nicht!
temp=&h60+x
peek(temp) geht allerdings.

usw.usf.

Allerdings kann man sehr schnell mit LCD und Tastermatritzen Eindruck
schinden. Das stimmt wohl!!

Gruß
AxelR.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.