hallo, ich habe die ganzen sensoren,funk usw und die verbindung zum palm m100 mit fastaver-basic programmiert. es klappt einfach alles. fastavr-basic erzeugt asm-source-code für avrasm32 von avrstudio und compiliert ihn zu hexcode. bei bedarf kann ich auch den sourcecode als asm-source erstellen und kann dann noch feinheiten reinbringen in assembler. jeder basicbefehl hat eine eigenen asm-sourcen-abschnitt. das schöne ist, er ist 100% für das avrstudio zum testen und probieren. ich hatte vorher in winavr-c geproggt , der code wurde immer complizierter in der augenoptik, manchmal hatte ich nur einen senkrechten strich vergessen und das programm lief nicht, weil ja der compiler keinen fehler gemeldet hatte, konnte er ja auch nicht, war ja mein prog-fehler.
dann bin ich auf fastavr-basic umgestiegen, weil es so schnell ist wie winavr-c. basic-code kannte ich sehr gut von Bascom her, bloss Bascom ist nichts für leute die ins eingemachte gehen. Bascom machte sachen, die ich nicht verfolgen konnte. dann kam fastavr-basic. wenn ich hier was nicht verstehe , schaue ich mir den asm-source-code an und schon weiss ich, wie es in asm funktioniert. kann jetzt auch schon das programm verfeinern, weil ja fastavr-basic auch nicht alles richtig macht. macht aber riesen spass, dadurch habe ich in asm sehr viel dazu gelernt.
die servo habe ich mit den vorgegebenen zeitintervallen geproggt. dadurch kann ich sie starten wo ich will, bzw wo er langsam gehen soll um scanndaten zu messen und auch bis wohin er gehen soll, zb. nur um einen ausschnitt aufzunehmen.
mfg pebisoft
Code:
hier läuft der servo von 0grad bis ca 180grad und zurück :
1 waitus wird bei fastavr-basic mit 10 multipliziert, also sind es tatsächlich 10us. ist auch verständlich, ich habe noch keine schleife gefunden die tatsächlich nur 1us dauert mit einem rücksprungbefehl , auch nicht in asm.
die kann man nach den test dann in eine sub oder funktion packen.
die 2000 sind dann 20ms , die 150 in der for schleife sind dann 1500 (weil immer 1 waitus tatsächlich 10us sind), das entspricht dann ca 180 grad.
manche servo haben den anschlag auch bei 21ms oder bei mir bei 2100.
$Device= m16
$Stack = 32
$Clock = 8
$Baud = 19200
$Source= On
Dim wert As Word
Dim wert1 As Word
Dim wert2 As Word
DDRB.7=1
PORTB.7=0
For wert = 1 To 150
wert1=wert+50
wert2=2000-wert1
PORTB.7=1
WaitUs (wert1)
PORTB.7=0
WaitUs (wert2)
WaitMs 10
Next wert
For wert = 150 To 1 Step -1
wert1=wert+50
wert2=2000-wert1
PORTB.7=1
WaitUs (wert1)
PORTB.7=0
WaitUs (wert2)
WaitMs 10
Next wert
End
Lesezeichen