-         

Seite 1 von 8 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 78

Thema: fastavr-basic

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941

    fastavr-basic

    Anzeige

    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

  2. #2
    Gast
    Fastavr bietet aber weniger Funktionen und der generierte Code ist oft auch größer. Und die Entwicklungsumgebung ist auch recht mager

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    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

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    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

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    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 zu, das würde auch die erstellung von Libs in Bascom vereinfachen.

    Eine nennenswerte größere mit diesem Compiler realisierte Applikation ist mir aber noch nicht untergekommen.
    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.
    Nee danke, bleib lieber bei Bascom. Jedoch finde ich es Intresannt zu sehen, was es noch so alles auf dem Markt gibt.

  7. #7
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1
    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.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    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

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    @oe9vfj: (klingt so kurzwellenmäßig)
    Dann tät ich sagen
    -- some improvements and a lot of bugs

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    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

Seite 1 von 8 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •