Fastavr bietet aber weniger Funktionen und der generierte Code ist oft auch größer. Und die Entwicklungsumgebung ist auch recht mager
hallo, habe mal das fast-basic geladen.
100 zeilen kann man compilieren.
generiert 100% asm der selber noch geändert werden kann.
er wird dann mit dem AVR32asm von avr-studio in hex umgesetzt.
der AVR32asm ist mit dabei.
der asm-code kann auch direkt mit avr-studio geladen werden und gestartet werden.
also, ein gutes basic für den avr.
der code ist kleiner als der der von bascom.
und über den preis kann man auch nicht meckern ca 120 euro.
fastavr-basic wird mein nächtes basic werden.
mit ponyprog habe ich den code übertragen. ponyprog wird direkt von fastavr gestartet.
im anhang sind 2 demo, einmal in bas und einmal von fastavr in asm umgewandelt.
mfg pebisoft
Code:'////////////////////////////////////////////////////////// '/// FastAVR Basic Compiler for AVR by MICRODESIGN /// '/// Mooving LED for STK-200, 500 /// '////////////////////////////////////////////////////////// $Device= m16 ' used device $Stack = 32 ' stack depth $Clock = 8. ' used crystal $Source= On ' basic source in Asm Dim n As Byte DDRB=&hff ' PortB is output n=&hfe ' init n Do ' never ending loop PORTB=n ' n out to port Rotate(Left, 1, n) ' rotate n left one bit WaitMs 100 ' 100ms delay Loop ' back to start of loop ;FastAVR Basic Compiler, ver.4.1.3, by MicroDesign ;Created 23:45:08, 29-08-2005 ; .include "D:\FASTAVR\inc\m16def.inc" ; .DSEG n: .byte 1 .CSEG .ORG 0 _Reset: ldi yl,low(RAMEND) out SPL,yl ldi yh,high(RAMEND) out SPL+1,yh sbiw yl,32 ;****** USERS BASIC CODE ********************** ;-Line--0012----DDRB=&hff ' PortB is output-- ldi zl,low(255) out ddrb,zl ;-Line--0013----n=&hfe ' init n-- ldi zl,low(254) sts n,zl ;-Line--0015----Do ' never ending loop-- L0000: ;-Line--0016----PORTB=n ' n out to port-- lds zl,n out portb,zl ;-Line--0017----Rotate(Left, 1, n) ' rotate n left one bit-- lds zl,n ldi r24,1 call _RotBL sts n,zl ;-Line--0018----WaitMs 100 ' 100ms delay-- ldi zl,low(100) call _Wms ;-Line--0019----Loop ' back to start of loop-- rjmp L0000 L0001: ;****** END OF USER BASIC CODE **************** ;////// RotateLeftByte //////////////////// _RotBL: lsl zl brcc _RtBL1 sbr zl,1 _RtBL1: dec r24 brne _RotBL ret ;////// _Waitms /////////////////////////// _Wms: ldi r20,0x14 _Wms1: ldi r21,0x85 _Wms2: dec r21 brne _Wms2 dec r20 brne _Wms1 dec zl brne _Wms ret ;System Global Variables: 0 bytes ;User Global Variables: 1 bytes '///////////////////////////////////////////////////////// '/// FastAVR Basic Compiler for AVR by MICRODESIGN /// '/// World famous program /// '/// HelloWorld.bas www.FastAVR.com /// '///////////////////////////////////////////////////////// $Device= m16 ' used device $Stack = 28 ' stack depth $Clock = 8.0 ' adjust for used crystal $Baud = 9600 $Source= On ' basic source in Asm ' use FastAVR or any other Terminal emulator Print "Hello World!" End ;FastAVR Basic Compiler, ver.4.1.3, by MicroDesign ;Created 23:46:11, 29-08-2005 ; .include "D:\FASTAVR\inc\m16def.inc" ; .DSEG .CSEG .ORG 0 _Reset: ldi yl,low(RAMEND) out SPL,yl ldi yh,high(RAMEND) out SPL+1,yh sbiw yl,28 ldi zl,0x18 out UCSRB,zl ldi zh,high(51) ldi zl,low(51) out UBRRL,zl out UBRRH,zh ;****** USERS BASIC CODE ********************** ;-Line--0013----Print "Hello World!"-- ldi zl,low(S000*2) ldi zh,high(S000*2) call _PSc call _PCL ;-Line--0015----End-- L0000: jmp L0000 ;****** END OF USER BASIC CODE **************** ; String constants: S000: .db "Hello World!", 0 ;////// Print string constants //////////// _PSc: lpm tst r0 breq _PSc1 mov r24,r0 rcall _Pch adiw zl,1 rjmp _PSc _Psc1: ret ;////// Print Cr, Lf & any char//////////// _PCL: ldi r24,0x0d rcall _Pch ldi r24,0x0a _Pch: sbis UCSRA,5 rjmp _Pch out UDR,r24 ret ;System Global Variables: 0 bytes ;User Global Variables: 0 bytes
Fastavr bietet aber weniger Funktionen und der generierte Code ist oft auch größer. Und die Entwicklungsumgebung ist auch recht mager
Dass so ein kurzer (für die Praxis nicht relevanter) Beispielscode in FAST-AVR kürzer ist als ein entsprechendes BASCOM-Code hat 3 Gründe.
FASTAVR startet mit dem Code, sofern kein Interrupt programmiert ist, mit der Adresse 0, also dort, wo sich normalerweise die Interrupt Sprungtabelle befindet. Bascom hat dort RETI Befehle. Wird aus irgendwelchen Gründen ein Interrupt ausgelöst, landet das Programm bei FASTAVR irgendwo mitten in einer Programmsequenz, während bei BASCOM-AVR der unbeabsichtigte Interrupt mit dem RETI-Befehl (Return from Interrupt) gezielt auf dem kürzesten Weg verlassen wird.
BASCOM-AVR löscht gezielt den SRAM-Bereich beim Start, d.h. alle Variablen werden mit 0 bzw. blank initialisiert. FAST-AVR macht das nicht.
Variablen, deren Anfangswerte nicht belanglos sind, müssen bei FAST-AVR im Programm selbst initialisiert werden.
BASCOM-AVR deaktiviert gezielt den Watch-Dog, sofern er nicht benötigt wird.
Eine Fehlinitialiserung führt hier bei FAST-AVR zu sicher nicht gewünschten Effekten.
Es sind also grundsätzliche Hintergrundfunktionalitäten, welche bei BASCOM-AVR bei kleinen Programmen einen größeren Code im Vergleich zu FAST-AVR ergeben aber das Programm sicherer machen.
Sofern jemand für weniger Programmfunktionalität bei FAST-AVR mehr bezahlen will, ist das jedem selbst überlassen. Vielleicht hat auch pebisoft diesen Thread mit der herausfordernden Wortwahl mit der Absicht eingebracht, eine lebhaftere Diskussion über die Unterschiede in Gang zu bringen.
Eine wirklich fundierte Aussage über zwei Programmpakete kann man sicher erst dann treffen, wenn man eine größere Applikation in beiden Compilern entwickelt, und die Code-Sicherheit in der Praxis getestet hat.
Nach einem grundsätzlichen Überblick über beide Compiler und den sehr eingeschränkten Simulationsmöglichkeiten in FAST-AVR (bzw. ATMEL Studio, FAST-AVR hat ja keinen Simulator) für BASIC-Variablen habe ich mich für BASCOM-AVR entschieden und es bisher nicht bereut. Wie kann man z.B. im ATMEL-Simulator die
Ausgabe mit Print-Befehl
Ausgabe auf LCD
Wert von Variablen
testen?
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
den simulator von Bascom kannste vergessen.
der beste ist avr-studio.
der fastaver-compiler erzeugt fertigen code der mit asm32avr (auch mit bei avr-studio) im avr-studio simuliert werden kann..... avr-studio ist das "simulationsprogramm", wichtig: merken. wenn ich sehe das bei fastavr "waitus 10" zum beispiel im avr-studio auch exakt zeitlich abläuft, kann ich nur sagen spitze. hingeben bei Bascom musste ich immer zeitliche experiemente machen damit z.b. meine ir-sendediode angesprochen werden konnte.
in winavr habe ich es geschafft ohne timer dieses zu machen und siehe da, in fastavr kann ich das ohne timer proggen aber nicht in bascom.
das gleiche gilt für den srf04 , den ich von hand proggen kann ohne fertige routinen und timer, in Bascom nicht und siehe da, in fastavr geht es wieder. ein test von mir ergab, das fastavr genauso schnell ist wie winavr-c (klasse). da ich gerne den code hier und da noch einmal gerne anschauen möchte und ich auch gerne asm lernen möchte kommt der fastavr wie gerufen. ich kann in asm noch keine grossen programme schreiben und siehe da fastavr gibt mir ein program in asm, wo ich jetzt auch erst einige interessante dinge in asm kennengelernt habe.
wenn ich das asmprogramm mit fastavr erstellt habe kann ich es aus fastavr gleich laden in den AVR mit ponyprog oder avrdude.
-Ausgabe mit Print-Befehl
-Ausgabe auf LCD
-Wert von Variablen
kannste alles an den simulierten ausgängen im avr-studio verfolgen.
mfg pebisoft
Ich möchte mich hier nicht auf eine weitere Diskussion einlassen, da mir dazu die Zeit zum Thema FASTAVR eigentlich zu schade ist.
Um aber doch auf das Beispiel WaitUS 10 zurückzukommen für eine CPU mit 8MHz.
$Clock 8
WaitUS 10
ergibt in FASTAVR laut AVR-Studio
788 CPU-Cyclen = 98,5 µSec
In Bascom ergeben die gleichen Parameter 81 Cyclen zu 10,125 µSec.
Ich glaube das spricht für sich.
FASTAVR ist sicher eine feine Sache wenn man sich mit der Assembler-Sprache auseinandersetzen will.
Die einzigen positiven Hinweise auf FASTAVR, welche ich bisher gelesen habe betreffen auch die ASM-Ausgabe.
Eine nennenswerte größere mit diesem Compiler realisierte Applikation ist mir aber noch nicht untergekommen.
Ich wünsche Dir aber weiterhin viel Spass mit FASTAVR.
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
Da stimme ich zu, das würde auch die erstellung von Libs in Bascom vereinfachen.FASTAVR ist sicher eine feine Sache wenn man sich mit der Assembler-Sprache auseinandersetzen will.
Die einzigen positiven Hinweise auf FASTAVR, welche ich bisher gelesen habe betreffen auch die ASM-Ausgabe.
Da stimme ich nur zu. Und wie auch schon erwähnt, die Simulation(was es eigentlich hier gar nicht gibt) und das Handling sind nicht unbediengt der Knüller.Eine nennenswerte größere mit diesem Compiler realisierte Applikation ist mir aber noch nicht untergekommen.
Nee danke, bleib lieber bei Bascom. Jedoch finde ich es Intresannt zu sehen, was es noch so alles auf dem Markt gibt.
Stimme Euch zu - schon deshalb weil ich weiss das Bascom trotz seiner umfangreichen Fähigkeiten immer noch vom Entwickler verbessert wird. Dabei ist MCS auch immer sehr bescheiden und erhöht die Versionsnummer oft nur in der Nachkommastelle.
Das Fastavr Assemblerquelltext generiert ist manchmal ganz nützlich. Ich glaube jedoch das der Entwickler dies nur gemacht hat, weil er sich so die Arbeit sparen kann Binärcode zu generieren. Die Arbeit überläßt er dann wohl dem AVR Studio. Also sind immer zwei Compilervorgänge nötig wenn ich es richtig in Erinnerung habe.
Noch ein kurzer Nachsatz zum Punkt Entwicklung:
Laut Angabe auf der Homepage von FASTAVR gab es in den letzten 1,5 Jahren (Feb. 04 bis Aug. 05) folgenden Entwicklungsschritt:
- a lot of improvements and some bugs fixed
- new command MemFill(adr, len, byte)
Bug fixes, Improvements (welche?) und eine Funktion, welche in 5 Minuten geschrieben ist, scheint mir doch etwas bescheiden für eine Release, auf welche man 1 1/2 Jahre warten musste.
Auch war beim vorhergehenden Release-Sprung von 3.xxx auf 4.xxx nicht nachvollziehbar, womit sich der Sprung der Hauptnummer begründet.
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
@oe9vfj: (klingt so kurzwellenmäßig)
Dann tät ich sagen
-- some improvements and a lot of bugs![]()
Nun ja, ich habe die Amateurfunktlizenz, allerdings nur die für UKW und bin auch jetzt nicht mehr aktiv (ausser dass ich die Lizenzgebühren bezahle).
Aber das gehört nicht zu diesem Thema. Wir können uns aber gerne ausserhalb dieses Forums zu diesem Thema unterhalten.
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
Lesezeichen