PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF02 über RS232 Beispielcode ohne Funktion?



TobiasBlome
07.05.2009, 20:08
Hallo,
ich möchte den Ultraschallsensor SRF02 über RS232 ansteuern.
Dazu habe ich den Beispielcode benutzt und daich gerade keinen MEGA 32 da hatte, habe ich einen Mega8 genommen und den Software RS232 code von PA0 & PA1 auf PB0 & PB1 geändert...

leider wird bei mir nur die Sensorversion angezeigt und dann nix mehr...

wozu ist "V = 1" im code?

Tobias



'################################################# ##
'SRF02_rncontrol_rs232_beispiel.bas
'für
'RoboterNetz Board RN-CONTROL (ab Version 1.1)
'und das SRF02 Ultraschallmodul für Entfernungsmessung
'Datenblatt zu SRF02:
'https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=357
'Anschlussbeschreibung:
'https://www.roboternetz.de/wissen/index.php/Sensorarten

'Aufgabe:
' Gibt die Firmware-Version vom SRF02 aus und
' anschließend in einer Endlosschleife die
' Entfernung von Objekten in Zentimetern
' Die Entfernung wird 1 mal pro Sekunde über RS232
' ausgegeben
' Dieses Beispiel nutzt den RS232 Mode vom SRF02
' Um die Ergebnisse auch gleichzeitig an PC
' übermitteln zu können, wird in dem Beispiel eine
' zweite RS232 Schnittstelle per Software eingerichtet.
' Dadurch kann der Sensor (oder auch mehrere) bequem
' an der Steckklemme angeschlossen werden

'Autor: Frank (Roboternetz)
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######



Declare Function Srf02_firmware(byval Slaveid As Byte) As Byte
Declare Function Srf02_entfernung(byval Slaveid As Byte) As Integer


'$regfile = "m32def.dat"
'$framesize = 42
'$swstack = 42
'$hwstack = 42

'$crystal = 16000000 'Quarzfrequenz

$regfile = "m8def.dat" 'AT-Mega8
$crystal = 8000000 'Quarz: 8 MHz

$baud = 9600 'Normale Hardware RS232 (hier hängt PC dran)

Open "COMB.0:9600,8,N,2" For Output As #1 'Port PB0 wird als TX definiert
Open "COMB.1:9600,8,N,2" For Input As #2 'Port PB1 wird als RX definiert


Const Srf02_slaveid = 0 'Standard RS232 Slave ID von SRF02
Dim Entfernung As Integer
'Variable fehlte???:
Dim V As Byte

Wait 3 'Warte 3 Sekunden
Print "SRF02 RS232 Testprogramm von robotikhardware.de"
Print "SRF02 Ultraschall-Firmware Version:" ; Srf02_firmware(srf02_slaveid)
Print "PB0 wird TX und PB1 wird als RX genutzt"


V = 1
Do
Entfernung = Srf02_entfernung(srf02_slaveid)
Print "Entfernung:" ; Entfernung ; "cm"
Wait 1
Loop
End



'------------- Hilfsfunktionen für SRF02 ----------


Function Srf02_firmware(byval Slaveid As Byte) As Byte

Print #1 , Chr(slaveid) ; Chr(93);
Srf02_firmware = Waitkey(#2)
End Function



Function Srf02_entfernung(byval Slaveid As Byte) As Integer
Local Lob As Byte
Local Hib As Byte

Print #1 , Chr(slaveid) ; Chr(84); 'Messvorgang in cm starten
Inputbin #2 , Hib , Lob 'Warte auf Ergebnis
Srf02_entfernung = Makeint(lob , Hib)
End Function

TobiasBlome
07.05.2009, 21:09
tja
ich habe mal:

$framesize = 42
$swstack = 42
$hwstack = 42

eingefügt und es läuft ;-) war ja zu vor auch drinn nur ich hab´s mir dem andere µC rausgenommen...warum ist es denn soo wichtig?

Tobias

TobiasBlome
10.05.2009, 14:21
In dem Programm ist eine Funktion:
Declare Function Srf02_firmware(byval Slaveid As Byte) As Byte

wann wird in die Funktion gesprungen?
Function Srf02_firmware(byval Slaveid As Byte) As Byte
Print #1 , Chr(slaveid) ; Chr(93);
Srf02_firmware = Waitkey(#2)
End Function



und wozu ist die Variable "V" ?und wird dann auf 1 gesetzt? V wird doch nirgends abgefragt oder?

Tobias